diff options
author | Vincent Sanders <vince@kyllikki.org> | 2015-09-28 07:59:50 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2015-09-28 07:59:50 +0100 |
commit | c80955dcc6b663c250a1f2552b626770fbd46a94 (patch) | |
tree | 4b6b98eb03095cbc722b7f5bc2e0bbfa9568e8b3 /src/duk-libdom-common.c | |
parent | 767e69459ca7b4c13fe93875177040ab3eec8b56 (diff) | |
download | nsgenbind-c80955dcc6b663c250a1f2552b626770fbd46a94.tar.gz nsgenbind-c80955dcc6b663c250a1f2552b626770fbd46a94.tar.bz2 |
annotates binding AST with source linenumber and file
Uses annotated AST to put line directives in the generated source so
any code errors in the binding can be easily located.
Diffstat (limited to 'src/duk-libdom-common.c')
-rw-r--r-- | src/duk-libdom-common.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/duk-libdom-common.c b/src/duk-libdom-common.c index fc62863..fb97fe3 100644 --- a/src/duk-libdom-common.c +++ b/src/duk-libdom-common.c @@ -58,6 +58,29 @@ int output_cdata(FILE* outf, } /* exported interface documented in duk-libdom.h */ +int output_ccode(FILE* outf, struct genbind_node *node) +{ + int *line; + char *filename; + + line = genbind_node_getint( + genbind_node_find_type( + genbind_node_getnode(node), + NULL, GENBIND_NODE_TYPE_LINE)); + + filename = genbind_node_gettext( + genbind_node_find_type( + genbind_node_getnode(node), + NULL, GENBIND_NODE_TYPE_FILE)); + + if ((line != NULL) && (filename != NULL)) { + fprintf(outf, "#line %d \"%s\"\n", *line, filename); + } + + return output_cdata(outf, node, GENBIND_NODE_TYPE_CDATA); +} + +/* exported interface documented in duk-libdom.h */ int output_tool_prologue(FILE* outf) { char *fpath; |