diff options
author | Vincent Sanders <vince@kyllikki.org> | 2015-07-21 23:48:45 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2015-07-21 23:48:45 +0100 |
commit | 1288d8c535edd2ce29eebdc4acca6b2beab89841 (patch) | |
tree | 162bd2d090e03a7ffb9523797c1dd2aebbce236f /src/nsgenbind-ast.h | |
parent | 94137186a3e2270e9b96f243a82a77a590c17f01 (diff) | |
download | nsgenbind-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.h | 113 |
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 |