summaryrefslogtreecommitdiff
path: root/src/webidl-ast.h
diff options
context:
space:
mode:
authorVincent Sanders <vincent.sanders@collabora.co.uk>2012-09-13 17:33:21 +0100
committerVincent Sanders <vincent.sanders@collabora.co.uk>2012-09-13 17:33:21 +0100
commitdeadfe6cfb87ee537ed38e0ce87601f492078aab (patch)
tree9a3178955ae42f3ee7d7223fbb71d505b16fa6f7 /src/webidl-ast.h
parenteeaa03bf10aa41656b798ef8df7f42140c66e766 (diff)
downloadnsgenbind-deadfe6cfb87ee537ed38e0ce87601f492078aab.tar.gz
nsgenbind-deadfe6cfb87ee537ed38e0ce87601f492078aab.tar.bz2
add debug dump to webidl
Diffstat (limited to 'src/webidl-ast.h')
-rw-r--r--src/webidl-ast.h25
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