summaryrefslogtreecommitdiff
path: root/src/genjsbind-ast.h
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2012-09-10 00:22:34 +0100
committerVincent Sanders <vince@kyllikki.org>2012-09-10 00:22:34 +0100
commit74e143bf3a9cd1cf6748cf1462f8e0fb161d126e (patch)
tree8526a61b4f6735c7fa0fad17113ae3baee6d6e59 /src/genjsbind-ast.h
parent640ed1da81d909bb3c2f01a481e7e8d3336f336c (diff)
downloadnsgenbind-74e143bf3a9cd1cf6748cf1462f8e0fb161d126e.tar.gz
nsgenbind-74e143bf3a9cd1cf6748cf1462f8e0fb161d126e.tar.bz2
clean up AST building for both parsers
Diffstat (limited to 'src/genjsbind-ast.h')
-rw-r--r--src/genjsbind-ast.h41
1 files changed, 31 insertions, 10 deletions
diff --git a/src/genjsbind-ast.h b/src/genjsbind-ast.h
index 0f7c2d2..20ee028 100644
--- a/src/genjsbind-ast.h
+++ b/src/genjsbind-ast.h
@@ -9,17 +9,38 @@
#ifndef genjsbind_genjsbind_ast_h
#define genjsbind_genjsbind_ast_h
-int genbind_parsefile(char *infilename);
-int genbind_header_comment(char *);
-int genbind_interface(char *);
-int genbind_preamble(char *ccode);
-
-struct genbind_ast {
- char *hdr_comments;
- char *preamble;
- char *ifname;
+enum genbind_node_type {
+ GENBIND_NODE_TYPE_ROOT = 0,
+ GENBIND_NODE_TYPE_WEBIDLFILE,
+ GENBIND_NODE_TYPE_HDRCOMMENT,
+ GENBIND_NODE_TYPE_STRING,
+ GENBIND_NODE_TYPE_PREAMBLE,
+ GENBIND_NODE_TYPE_BINDING,
+ GENBIND_NODE_TYPE_BINDING_IDENT,
+ GENBIND_NODE_TYPE_TYPE,
+ GENBIND_NODE_TYPE_TYPE_IDENT,
+ GENBIND_NODE_TYPE_TYPE_NODE,
+ GENBIND_NODE_TYPE_TYPE_EXTRA,
+ GENBIND_NODE_TYPE_TYPE_INTERFACE,
};
-extern struct genbind_ast *genbind_ast;
+
+struct genbind_node;
+
+int genbind_parsefile(char *infilename, struct genbind_node **ast);
+
+char *genbind_strapp(char *a, char *b);
+
+struct genbind_node *genbind_new_node(enum genbind_node_type type, struct genbind_node *l, void *r);
+struct genbind_node *genbind_node_link(struct genbind_node *tgt, struct genbind_node *src);
+
+typedef int (genbind_callback_t)(struct genbind_node *node, void *ctx);
+
+int genbind_node_for_each_type(struct genbind_node *node, enum genbind_node_type type, genbind_callback_t *cb, void *ctx);
+
+char *genbind_node_gettext(struct genbind_node *node);
+struct genbind_node *genbind_node_getnode(struct genbind_node *node);
+
+int genbind_ast_dump(struct genbind_node *ast);
#endif