diff options
author | Vincent Sanders <vince@kyllikki.org> | 2012-09-10 00:22:34 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2012-09-10 00:22:34 +0100 |
commit | 74e143bf3a9cd1cf6748cf1462f8e0fb161d126e (patch) | |
tree | 8526a61b4f6735c7fa0fad17113ae3baee6d6e59 /src/genjsbind-ast.h | |
parent | 640ed1da81d909bb3c2f01a481e7e8d3336f336c (diff) | |
download | nsgenbind-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.h | 41 |
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 |