summaryrefslogtreecommitdiff
path: root/src/duk-libdom-common.c
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2015-09-28 07:59:50 +0100
committerVincent Sanders <vince@kyllikki.org>2015-09-28 07:59:50 +0100
commitc80955dcc6b663c250a1f2552b626770fbd46a94 (patch)
tree4b6b98eb03095cbc722b7f5bc2e0bbfa9568e8b3 /src/duk-libdom-common.c
parent767e69459ca7b4c13fe93875177040ab3eec8b56 (diff)
downloadnsgenbind-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.c23
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;