From d75d3600ad235c70d36a0789382046b4904ad5d2 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Fri, 6 Jul 2012 18:57:22 +0100 Subject: update dom hubbub binding to allow for script control --- bindings/hubbub/parser.h | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'bindings/hubbub/parser.h') diff --git a/bindings/hubbub/parser.h b/bindings/hubbub/parser.h index fe6204a..7af0dd0 100644 --- a/bindings/hubbub/parser.h +++ b/bindings/hubbub/parser.h @@ -17,17 +17,22 @@ #include "errors.h" +/** + * Type of script completion function + */ +typedef dom_hubbub_error (*dom_script)(void *ctx, struct dom_node *node); + typedef struct dom_hubbub_parser dom_hubbub_parser; /* The encoding source of the document */ -typedef enum dom_hubbub_encoding_source { - DOM_HUBBUB_ENCODING_SOURCE_HEADER, +typedef enum dom_hubbub_encoding_source { + DOM_HUBBUB_ENCODING_SOURCE_HEADER, DOM_HUBBUB_ENCODING_SOURCE_DETECTED, - DOM_HUBBUB_ENCODING_SOURCE_META + DOM_HUBBUB_ENCODING_SOURCE_META } dom_hubbub_encoding_source; /* The recommended way to use the parser is: - * + * * dom_hubbub_parser_create(...); * dom_hubbub_parser_parse_chunk(...); * call _parse_chunk for all chunks of data @@ -39,18 +44,18 @@ typedef enum dom_hubbub_encoding_source { * dom_hubbub_parser_destroy(...); * * Clients must ensure that the last 3 function calls above are called in - * the order shown. dom_hubbub_parser_get_document() will pass the ownership + * the order shown. dom_hubbub_parser_get_document() will pass the ownership * of the document to the client. After that, the parser should be destroyed. * The client must not call any method of this parser after destruction. * - * The client must call dom_hubbub_parser_completed() before calling + * The client must call dom_hubbub_parser_completed() before calling * dom_hubbub_parser_get_document(). */ /* Create a Hubbub parser instance */ -dom_hubbub_parser *dom_hubbub_parser_create( - const char *enc, bool fix_enc, - dom_msg msg, void *mctx); +dom_hubbub_parser *dom_hubbub_parser_create(const char *enc, bool fix_enc, + bool enable_script, dom_msg msg, + dom_script script, void *mctx); /* Destroy a Hubbub parser instance */ void dom_hubbub_parser_destroy(dom_hubbub_parser *parser); @@ -59,6 +64,9 @@ void dom_hubbub_parser_destroy(dom_hubbub_parser *parser); dom_hubbub_error dom_hubbub_parser_parse_chunk(dom_hubbub_parser *parser, const uint8_t *data, size_t len); +/* insert data into the parse stream but do not parse it */ +dom_hubbub_error dom_hubbub_parser_insert_chunk(dom_hubbub_parser *parser, const uint8_t *data, size_t length); + /* Notify parser that datastream is empty */ dom_hubbub_error dom_hubbub_parser_completed(dom_hubbub_parser *parser); @@ -66,7 +74,7 @@ dom_hubbub_error dom_hubbub_parser_completed(dom_hubbub_parser *parser); dom_document *dom_hubbub_parser_get_document(dom_hubbub_parser *parser); /* Retrieve the document's encoding */ -const char *dom_hubbub_parser_get_encoding(dom_hubbub_parser *parser, +const char *dom_hubbub_parser_get_encoding(dom_hubbub_parser *parser, dom_hubbub_encoding_source *source); #endif -- cgit v1.2.3