diff options
Diffstat (limited to 'src/webidl-ast.h')
-rw-r--r-- | src/webidl-ast.h | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/src/webidl-ast.h b/src/webidl-ast.h index 5dfd2a8..3c93305 100644 --- a/src/webidl-ast.h +++ b/src/webidl-ast.h @@ -9,35 +9,23 @@ #ifndef genjsbind_webidl_ast_h #define genjsbind_webidl_ast_h -enum webidl_node_type { - WEBIDL_NODE_TYPE_ROOT, - WEBIDL_NODE_TYPE_INTERFACE, -}; - -struct webidl_ifmember { - char *name; -}; - -struct webidl_if { - char *name; - struct webidl_ifmember* members; -}; - +#define WEBIDL_NODE_TYPE_ROOT 0 struct webidl_node { - enum webidl_node_type type; + int type; + struct webidl_node *l; union { - struct webidl_node *nodes; - struct webidl_if interface; - } data; + struct webidl_node *node; + char *text; + } r; }; -extern struct webidl_node *webidl_root; - /** parse web idl file */ -int webidl_parsefile(char *filename); +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_new_node(enum webidl_node_type type); +struct webidl_node *webidl_node_link(struct webidl_node *tgt, struct webidl_node *src); #endif |