diff options
Diffstat (limited to 'src/webidl-ast.h')
-rw-r--r-- | src/webidl-ast.h | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/webidl-ast.h b/src/webidl-ast.h index 2798fa6..9a516af 100644 --- a/src/webidl-ast.h +++ b/src/webidl-ast.h @@ -18,7 +18,7 @@ enum webidl_node_type { }; struct webidl_node { - int type; + enum webidl_node_type type; struct webidl_node *l; union { struct webidl_node *node; @@ -26,12 +26,29 @@ struct webidl_node { } r; }; +/** callback for search and iteration routines */ +typedef int (webidl_callback_t)(struct webidl_node *node, void *ctx); -/** parse web idl file */ -int webidl_parsefile(char *filename, struct webidl_node **webidl_ast); -struct webidl_node *webidl_node_new(int type, struct webidl_node *l, void *r); +struct webidl_node *webidl_node_new(enum webidl_node_type, struct webidl_node *l, void *r); struct webidl_node *webidl_node_link(struct webidl_node *tgt, struct webidl_node *src); +/* node contents acessors */ +char *webidl_node_gettext(struct webidl_node *node); +struct webidl_node *webidl_node_getnode(struct webidl_node *node); + + +/* node searches */ +int webidl_node_for_each_type(struct webidl_node *node, + enum webidl_node_type type, + webidl_callback_t *cb, + void *ctx); + +/* debug dump */ +int webidl_ast_dump(struct webidl_node *node); + +/** parse web idl file */ +int webidl_parsefile(char *filename, struct webidl_node **webidl_ast); + #endif |