summaryrefslogtreecommitdiff
path: root/src/webidl-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/webidl-ast.h
parent640ed1da81d909bb3c2f01a481e7e8d3336f336c (diff)
downloadnsgenbind-74e143bf3a9cd1cf6748cf1462f8e0fb161d126e.tar.gz
nsgenbind-74e143bf3a9cd1cf6748cf1462f8e0fb161d126e.tar.bz2
clean up AST building for both parsers
Diffstat (limited to 'src/webidl-ast.h')
-rw-r--r--src/webidl-ast.h32
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