summaryrefslogtreecommitdiff
path: root/src/parse/parse.c
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-12-13 20:16:52 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2013-12-13 20:16:52 +0000
commit1b95fec601a3d006ba6b99e1dea3f61c3c8318fc (patch)
tree1a0c3a78afe1db919ff6b4c56a6c3f2e01d03607 /src/parse/parse.c
parente3372335ec1628e1d6ef1a4fd63b11bb47f2e0e6 (diff)
downloadlibcss-1b95fec601a3d006ba6b99e1dea3f61c3c8318fc.tar.gz
libcss-1b95fec601a3d006ba6b99e1dea3f61c3c8318fc.tar.bz2
Various changes which modify API and ABI:
- Remove client allocation function. - Change node_classes callback not to yield array ownership to libcss. - Node bloom filters now built by, during selection libcss. - Added selection callbacks to get and set data on document nodes. Test suite, example, and documentation updated to match.
Diffstat (limited to 'src/parse/parse.c')
-rw-r--r--src/parse/parse.c55
1 files changed, 19 insertions, 36 deletions
diff --git a/src/parse/parse.c b/src/parse/parse.c
index d8281ae..b52e9f1 100644
--- a/src/parse/parse.c
+++ b/src/parse/parse.c
@@ -105,14 +105,10 @@ struct css_parser
css_parser_event_handler event; /**< Client's event handler */
void *event_pw; /**< Client data for event handler */
-
- css_allocator_fn alloc; /**< Memory (de)allocation function */
- void *pw; /**< Client-specific private data */
};
static css_error css__parser_create_internal(const char *charset,
- css_charset_source cs_source,
- css_allocator_fn alloc, void *pw, parser_state initial,
+ css_charset_source cs_source, parser_state initial,
css_parser **parser);
static css_error transition(css_parser *parser, parser_state to,
@@ -190,21 +186,18 @@ static css_error (*parseFuncs[])(css_parser *parser) = {
*
* \param charset Charset of data, if known, or NULL
* \param cs_source Source of charset information, or CSS_CHARSET_DEFAULT
- * \param alloc Memory (de)allocation function
- * \param pw Pointer to client-specific private data
* \param parser Pointer to location to receive parser instance
* \return CSS_OK on success,
* CSS_BADPARM on bad parameters,
* CSS_NOMEM on memory exhaustion
*/
css_error css__parser_create(const char *charset, css_charset_source cs_source,
- css_allocator_fn alloc, void *pw,
css_parser **parser)
{
parser_state initial = { sStart, 0 };
return css__parser_create_internal(charset, cs_source,
- alloc, pw, initial, parser);
+ initial, parser);
}
/**
@@ -212,21 +205,18 @@ css_error css__parser_create(const char *charset, css_charset_source cs_source,
*
* \param charset Charset of data, if known, or NULL
* \param cs_source Source of charset information, or CSS_CHARSET_DEFAULT
- * \param alloc Memory (de)allocation function
- * \param pw Pointer to client-specific private data
* \param parser Pointer to location to receive parser instance
* \return CSS_OK on success,
* CSS_BADPARM on bad parameters,
* CSS_NOMEM on memory exhaustion
*/
css_error css__parser_create_for_inline_style(const char *charset,
- css_charset_source cs_source,
- css_allocator_fn alloc, void *pw, css_parser **parser)
+ css_charset_source cs_source, css_parser **parser)
{
parser_state initial = { sInlineStyle, 0 };
return css__parser_create_internal(charset, cs_source,
- alloc, pw, initial, parser);
+ initial, parser);
}
/**
@@ -250,7 +240,7 @@ css_error css__parser_destroy(css_parser *parser)
parserutils_inputstream_destroy(parser->stream);
- parser->alloc(parser, 0, parser->pw);
+ free(parser);
return CSS_OK;
}
@@ -390,8 +380,6 @@ bool css__parser_quirks_permitted(css_parser *parser)
*
* \param charset Charset of data, if known, or NULL
* \param cs_source Source of charset information, or CSS_CHARSET_DEFAULT
- * \param alloc Memory (de)allocation function
- * \param pw Pointer to client-specific private data
* \param initial The required initial state of the parser
* \param parser Pointer to location to receive parser instance
* \return CSS_OK on success,
@@ -399,66 +387,63 @@ bool css__parser_quirks_permitted(css_parser *parser)
* CSS_NOMEM on memory exhaustion
*/
css_error css__parser_create_internal(const char *charset,
- css_charset_source cs_source,
- css_allocator_fn alloc, void *pw, parser_state initial,
+ css_charset_source cs_source, parser_state initial,
css_parser **parser)
{
css_parser *p;
parserutils_error perror;
css_error error;
- if (alloc == NULL || parser == NULL)
+ if (parser == NULL)
return CSS_BADPARM;
- p = alloc(NULL, sizeof(css_parser), pw);
+ p = malloc(sizeof(css_parser));
if (p == NULL)
return CSS_NOMEM;
perror = parserutils_inputstream_create(charset, cs_source,
- css__charset_extract, (parserutils_alloc) alloc, pw,
+ css__charset_extract, css_alloc, CSS_ALLOC_PW,
&p->stream);
if (perror != PARSERUTILS_OK) {
- alloc(p, 0, pw);
+ free(p);
return css_error_from_parserutils_error(perror);
}
- error = css__lexer_create(p->stream, alloc, pw, &p->lexer);
+ error = css__lexer_create(p->stream, &p->lexer);
if (error != CSS_OK) {
parserutils_inputstream_destroy(p->stream);
- alloc(p, 0, pw);
+ free(p);
return error;
}
perror = parserutils_stack_create(sizeof(parser_state),
- STACK_CHUNK, (parserutils_alloc) alloc, pw,
+ STACK_CHUNK, css_alloc, CSS_ALLOC_PW,
&p->states);
if (perror != PARSERUTILS_OK) {
css__lexer_destroy(p->lexer);
parserutils_inputstream_destroy(p->stream);
- alloc(p, 0, pw);
+ free(p);
return css_error_from_parserutils_error(perror);
}
perror = parserutils_vector_create(sizeof(css_token),
- STACK_CHUNK, (parserutils_alloc) alloc, pw,
- &p->tokens);
+ STACK_CHUNK, css_alloc, CSS_ALLOC_PW, &p->tokens);
if (perror != PARSERUTILS_OK) {
parserutils_stack_destroy(p->states);
css__lexer_destroy(p->lexer);
parserutils_inputstream_destroy(p->stream);
- alloc(p, 0, pw);
+ free(p);
return css_error_from_parserutils_error(perror);
}
perror = parserutils_stack_create(sizeof(char),
- STACK_CHUNK, (parserutils_alloc) alloc, pw,
- &p->open_items);
+ STACK_CHUNK, css_alloc, CSS_ALLOC_PW, &p->open_items);
if (perror != PARSERUTILS_OK) {
parserutils_vector_destroy(p->tokens);
parserutils_stack_destroy(p->states);
css__lexer_destroy(p->lexer);
parserutils_inputstream_destroy(p->stream);
- alloc(p, 0, pw);
+ free(p);
return css_error_from_parserutils_error(perror);
}
@@ -469,7 +454,7 @@ css_error css__parser_create_internal(const char *charset,
parserutils_stack_destroy(p->states);
css__lexer_destroy(p->lexer);
parserutils_inputstream_destroy(p->stream);
- alloc(p, 0, pw);
+ free(p);
return css_error_from_parserutils_error(perror);
}
@@ -480,8 +465,6 @@ css_error css__parser_create_internal(const char *charset,
p->event = NULL;
p->last_was_ws = false;
p->event_pw = NULL;
- p->alloc = alloc;
- p->pw = pw;
*parser = p;