summaryrefslogtreecommitdiff
path: root/src/duk-libdom-common.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/duk-libdom-common.c')
-rw-r--r--src/duk-libdom-common.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/duk-libdom-common.c b/src/duk-libdom-common.c
index 9a0f660..a1298e9 100644
--- a/src/duk-libdom-common.c
+++ b/src/duk-libdom-common.c
@@ -76,3 +76,42 @@ int output_tool_prologue(FILE* outf)
return 0;
}
+
+
+/* exported interface documented in duk-libdom.h */
+int output_ctype(FILE *outf, struct genbind_node *node, bool identifier)
+{
+ const char *type_cdata = NULL;
+ struct genbind_node *typename_node;
+
+ typename_node = genbind_node_find_type(genbind_node_getnode(node),
+ NULL,
+ GENBIND_NODE_TYPE_NAME);
+ while (typename_node != NULL) {
+ type_cdata = genbind_node_gettext(typename_node);
+
+ fprintf(outf, "%s", type_cdata);
+
+ typename_node = genbind_node_find_type(
+ genbind_node_getnode(node),
+ typename_node,
+ GENBIND_NODE_TYPE_NAME);
+
+ /* separate all but the last entry with spaces */
+ if (typename_node != NULL) {
+ fputc(' ', outf);
+ }
+ }
+
+ if (identifier) {
+ if ((type_cdata != NULL) &&
+ (type_cdata[0] != '*') &&
+ (type_cdata[0] != ' ')) {
+ fputc(' ', outf);
+ }
+
+ output_cdata(outf, node, GENBIND_NODE_TYPE_IDENT);
+ }
+
+ return 0;
+}