diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2008-03-07 12:39:12 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2008-03-07 12:39:12 +0000 |
commit | 625179d93958610fd854f4eba5b70a0aa3e6fecf (patch) | |
tree | 0f8c198e9e2030dc04ef86314f9dc12e764785ae /include | |
parent | a912773ba580048b6164dfc112337a5f89e58b9b (diff) | |
download | libhubbub-625179d93958610fd854f4eba5b70a0aa3e6fecf.tar.gz libhubbub-625179d93958610fd854f4eba5b70a0aa3e6fecf.tar.bz2 |
Beginnings of a tree builder.
Distinct lack of any real functionality beyond creation/destruction & option setting.
svn path=/trunk/hubbub/; revision=3894
Diffstat (limited to 'include')
-rw-r--r-- | include/hubbub/functypes.h | 61 | ||||
-rw-r--r-- | include/hubbub/parser.h | 6 | ||||
-rw-r--r-- | include/hubbub/tree.h | 31 |
3 files changed, 96 insertions, 2 deletions
diff --git a/include/hubbub/functypes.h b/include/hubbub/functypes.h index aa3e649..8d7f199 100644 --- a/include/hubbub/functypes.h +++ b/include/hubbub/functypes.h @@ -2,12 +2,13 @@ * This file is part of Hubbub. * Licensed under the MIT License, * http://www.opensource.org/licenses/mit-license.php - * Copyright 2007 John-Mark Bell <jmb@netsurf-browser.org> + * Copyright 2007-8 John-Mark Bell <jmb@netsurf-browser.org> */ #ifndef hubbub_functypes_h_ #define hubbub_functypes_h_ +#include <stdbool.h> #include <stdlib.h> #include <hubbub/types.h> @@ -32,6 +33,64 @@ typedef void (*hubbub_buffer_handler)(const uint8_t *data, typedef void (*hubbub_error_handler)(uint32_t line, uint32_t col, const char *message, void *pw); +/** + * Type of tree comment node creation function + */ +typedef int (*hubbub_tree_create_comment)(void *ctx, const hubbub_string *data, + void **result); + +/** + * Type of tree doctype node creation function + */ +typedef int (*hubbub_tree_create_doctype)(void *ctx, const hubbub_string *qname, + const hubbub_string *public_id, const hubbub_string *system_id, + void **result); + +/** + * Type of tree element node creation function + */ +typedef int (*hubbub_tree_create_element)(void *ctx, + const hubbub_string *tag_name, void **result); + +/** + * Type of tree text node creation function + */ +typedef int (*hubbub_tree_create_text)(void *ctx, const hubbub_string *data, + void **result); + +/** + * Type of tree node destruction function + */ +typedef int (*hubbub_tree_free_node)(void *ctx, void *node); + +/** + * Type of tree node appending function + */ +typedef int (*hubbub_tree_append_child)(void *ctx, void *parent, void *child, + void **result); + +/** + * Type of tree node insertion function + */ +typedef int (*hubbub_tree_insert_before)(void *ctx, void *parent, void *child, + void *ref_child, void **result); + +/** + * Type of tree node removal function + */ +typedef int (*hubbub_tree_remove_child)(void *ctx, void *parent, void *child, + void **result); + +/** + * Type of tree node cloning function + */ +typedef int (*hubbub_tree_clone_node)(void *ctx, void *node, bool deep, + void **result); + +/** + * Type of tree quirks mode notification function + */ +typedef int (*hubbub_tree_set_quirks_mode)(void *ctx, bool quirky); #endif diff --git a/include/hubbub/parser.h b/include/hubbub/parser.h index cdf8664..134f4b7 100644 --- a/include/hubbub/parser.h +++ b/include/hubbub/parser.h @@ -2,7 +2,7 @@ * This file is part of Hubbub. * Licensed under the MIT License, * http://www.opensource.org/licenses/mit-license.php - * Copyright 2007 John-Mark Bell <jmb@netsurf-browser.org> + * Copyright 2007-8 John-Mark Bell <jmb@netsurf-browser.org> */ #ifndef hubbub_parser_h_ @@ -12,6 +12,7 @@ #include <hubbub/errors.h> #include <hubbub/functypes.h> +#include <hubbub/tree.h> #include <hubbub/types.h> typedef struct hubbub_parser hubbub_parser; @@ -24,6 +25,7 @@ typedef enum hubbub_parser_opttype { HUBBUB_PARSER_BUFFER_HANDLER, HUBBUB_PARSER_ERROR_HANDLER, HUBBUB_PARSER_CONTENT_MODEL, + HUBBUB_PARSER_TREE_HANDLER, } hubbub_parser_opttype; /** @@ -48,6 +50,8 @@ typedef union hubbub_parser_optparams { struct { hubbub_content_model model; } content_model; + + hubbub_tree_handler tree_handler; } hubbub_parser_optparams; /* Create a hubbub parser */ diff --git a/include/hubbub/tree.h b/include/hubbub/tree.h new file mode 100644 index 0000000..a883f1a --- /dev/null +++ b/include/hubbub/tree.h @@ -0,0 +1,31 @@ +/* + * This file is part of Hubbub. + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2008 John-Mark Bell <jmb@netsurf-browser.org> + */ + +#ifndef hubbub_tree_h_ +#define hubbub_tree_h_ + +#include <hubbub/functypes.h> + +/** + * Hubbub tree handler + */ +typedef struct hubbub_tree_handler { + hubbub_tree_create_comment create_comment; + hubbub_tree_create_doctype create_doctype; + hubbub_tree_create_element create_element; + hubbub_tree_create_text create_text; + hubbub_tree_free_node free_node; + hubbub_tree_append_child append_child; + hubbub_tree_insert_before insert_before; + hubbub_tree_remove_child remove_child; + hubbub_tree_clone_node clone_node; + hubbub_tree_set_quirks_mode set_quirks_mode; + void *ctx; +} hubbub_tree_handler; + +#endif + |