summaryrefslogtreecommitdiff
path: root/src/nsgenbind-ast.h
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2015-07-21 23:48:45 +0100
committerVincent Sanders <vince@kyllikki.org>2015-07-21 23:48:45 +0100
commit1288d8c535edd2ce29eebdc4acca6b2beab89841 (patch)
tree162bd2d090e03a7ffb9523797c1dd2aebbce236f /src/nsgenbind-ast.h
parent94137186a3e2270e9b96f243a82a77a590c17f01 (diff)
downloadnsgenbind-1288d8c535edd2ce29eebdc4acca6b2beab89841.tar.gz
nsgenbind-1288d8c535edd2ce29eebdc4acca6b2beab89841.tar.bz2
Change binding grammar to new approach.
Diffstat (limited to 'src/nsgenbind-ast.h')
-rw-r--r--src/nsgenbind-ast.h113
1 files changed, 65 insertions, 48 deletions
diff --git a/src/nsgenbind-ast.h b/src/nsgenbind-ast.h
index 4911f5a..f6800fb 100644
--- a/src/nsgenbind-ast.h
+++ b/src/nsgenbind-ast.h
@@ -10,36 +10,46 @@
#define nsgenbind_nsgenbind_ast_h
enum genbind_node_type {
- GENBIND_NODE_TYPE_ROOT = 0,
- GENBIND_NODE_TYPE_IDENT, /**< generic identifier string */
- GENBIND_NODE_TYPE_TYPE, /**< generic type string */
- GENBIND_NODE_TYPE_MODIFIER, /**< node modifier */
-
- GENBIND_NODE_TYPE_CBLOCK,
- GENBIND_NODE_TYPE_WEBIDLFILE,
- GENBIND_NODE_TYPE_HDRCOMMENT,
- GENBIND_NODE_TYPE_STRING,
- GENBIND_NODE_TYPE_PREAMBLE,
- GENBIND_NODE_TYPE_PROLOGUE,
- GENBIND_NODE_TYPE_EPILOGUE,
- GENBIND_NODE_TYPE_BINDING,
- GENBIND_NODE_TYPE_BINDING_PRIVATE,
- GENBIND_NODE_TYPE_BINDING_INTERNAL,
- GENBIND_NODE_TYPE_BINDING_INTERFACE,
- GENBIND_NODE_TYPE_BINDING_INTERFACE_FLAGS,
- GENBIND_NODE_TYPE_BINDING_PROPERTY,
- GENBIND_NODE_TYPE_API,
- GENBIND_NODE_TYPE_OPERATION,
- GENBIND_NODE_TYPE_GETTER,
- GENBIND_NODE_TYPE_SETTER,
+ GENBIND_NODE_TYPE_ROOT = 0,
+ GENBIND_NODE_TYPE_IDENT, /**< generic identifier string */
+ GENBIND_NODE_TYPE_TYPE, /**< generic type string */
+ GENBIND_NODE_TYPE_MODIFIER, /**< node modifier */
+ GENBIND_NODE_TYPE_CDATA, /**< verbatim block of character data */
+ GENBIND_NODE_TYPE_STRING, /**< text string */
+
+ GENBIND_NODE_TYPE_BINDING,
+ GENBIND_NODE_TYPE_WEBIDL,
+ GENBIND_NODE_TYPE_PREFACE,
+ GENBIND_NODE_TYPE_PROLOGUE,
+ GENBIND_NODE_TYPE_EPILOGUE,
+ GENBIND_NODE_TYPE_POSTFACE,
+
+ GENBIND_NODE_TYPE_CLASS, /**< class definition */
+ GENBIND_NODE_TYPE_PRIVATE,
+ GENBIND_NODE_TYPE_INTERNAL,
+ GENBIND_NODE_TYPE_PROPERTY,
+ GENBIND_NODE_TYPE_FLAGS,
+
+ GENBIND_NODE_TYPE_METHOD, /**< binding method */
+ GENBIND_NODE_TYPE_METHOD_TYPE, /**< binding method type */
+ GENBIND_NODE_TYPE_PARAMETER, /**< method parameter */
};
/* modifier flags */
enum genbind_type_modifier {
- GENBIND_TYPE_NONE = 0,
- GENBIND_TYPE_TYPE = 1, /**< identifies a type handler */
- GENBIND_TYPE_UNSHARED = 2, /**< unshared item */
- GENBIND_TYPE_TYPE_UNSHARED = 3, /**< identifies a unshared type handler */
+ GENBIND_TYPE_NONE = 0,
+ GENBIND_TYPE_TYPE = 1, /**< identifies a type handler */
+ GENBIND_TYPE_UNSHARED = 2, /**< unshared item */
+ GENBIND_TYPE_TYPE_UNSHARED = 3, /**< identifies a unshared type handler */
+};
+
+/* binding method types */
+enum genbind_method_type {
+ GENBIND_METHOD_TYPE_INIT = 0,
+ GENBIND_METHOD_TYPE_FINI = 1, /**< */
+ GENBIND_METHOD_TYPE_METHOD = 2, /**< */
+ GENBIND_METHOD_TYPE_GETTER = 3, /**< */
+ GENBIND_METHOD_TYPE_SETTER = 4, /**< */
};
struct genbind_node;
@@ -47,6 +57,8 @@ struct genbind_node;
/** callback for search and iteration routines */
typedef int (genbind_callback_t)(struct genbind_node *node, void *ctx);
+int genbind_fprintf(FILE *stream, const char *format, ...);
+
int genbind_cmp_node_type(struct genbind_node *node, void *ctx);
FILE *genbindopen(const char *filename);
@@ -58,9 +70,19 @@ 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);
-int genbind_ast_dump(struct genbind_node *ast, int indent);
+/**
+ * Dump the binding AST to file
+ *
+ * If the debug flag has been set this causes the binding AST to be written to
+ * a binding-ast output file
+ *
+ * \param node Node of the tree to start dumping from (usually tree root)
+ * \return 0 on sucess or non zero on faliure and error message printed.
+ */
+int genbind_dump_ast(struct genbind_node *node);
-/** Depth first left hand search using user provided comparison
+/**
+ *Depth first left hand search using user provided comparison
*
* @param node The node to start the search from
* @param prev The node at which to stop the search, either NULL to
@@ -71,9 +93,9 @@ int genbind_ast_dump(struct genbind_node *ast, int indent);
*/
struct genbind_node *
genbind_node_find(struct genbind_node *node,
- struct genbind_node *prev,
- genbind_callback_t *cb,
- void *ctx);
+ struct genbind_node *prev,
+ genbind_callback_t *cb,
+ void *ctx);
/** Depth first left hand search returning nodes of the specified type
*
@@ -86,8 +108,8 @@ genbind_node_find(struct genbind_node *node,
*/
struct genbind_node *
genbind_node_find_type(struct genbind_node *node,
- struct genbind_node *prev,
- enum genbind_node_type nodetype);
+ struct genbind_node *prev,
+ enum genbind_node_type nodetype);
/** count how many nodes of a specified type.
*
@@ -101,7 +123,7 @@ genbind_node_find_type(struct genbind_node *node,
*/
int
genbind_node_enumerate_type(struct genbind_node *node,
- enum genbind_node_type type);
+ enum genbind_node_type type);
/** Depth first left hand search returning nodes of the specified type
* and a ident child node with matching text
@@ -115,9 +137,9 @@ genbind_node_enumerate_type(struct genbind_node *node,
*/
struct genbind_node *
genbind_node_find_type_ident(struct genbind_node *node,
- struct genbind_node *prev,
- enum genbind_node_type nodetype,
- const char *ident);
+ struct genbind_node *prev,
+ enum genbind_node_type nodetype,
+ const char *ident);
/** Returning node of the specified type with a GENBIND_NODE_TYPE_TYPE
* subnode with matching text.
@@ -137,9 +159,9 @@ genbind_node_find_type_ident(struct genbind_node *node,
*/
struct genbind_node *
genbind_node_find_type_type(struct genbind_node *node,
- struct genbind_node *prev,
- enum genbind_node_type nodetype,
- const char *type_text);
+ struct genbind_node *prev,
+ enum genbind_node_type nodetype,
+ const char *type_text);
/** Iterate all nodes of a certian type from a node with a callback.
*
@@ -149,9 +171,9 @@ genbind_node_find_type_type(struct genbind_node *node,
* @param node The node to start the search from.
*/
int genbind_node_foreach_type(struct genbind_node *node,
- enum genbind_node_type type,
- genbind_callback_t *cb,
- void *ctx);
+ enum genbind_node_type type,
+ genbind_callback_t *cb,
+ void *ctx);
/** get a nodes node list content
*
@@ -176,9 +198,4 @@ char *genbind_node_gettext(struct genbind_node *node);
*/
int *genbind_node_getint(struct genbind_node *node);
-#ifdef _WIN32
-#define NEED_STRNDUP 1
-char *strndup(const char *s, size_t n);
-#endif
-
#endif