summaryrefslogtreecommitdiff
path: root/src/duk-libdom-common.c
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2015-09-26 23:20:38 +0100
committerVincent Sanders <vince@kyllikki.org>2015-09-26 23:20:38 +0100
commit017eb2ef4da167466c05ad83eb0714129a2e46ff (patch)
treee64da1b284e709c5904219c28ed3be6f35d77fa8 /src/duk-libdom-common.c
parent53acb5a29b8eb4fe89dd2e8bc3b808d5e7183b81 (diff)
downloadnsgenbind-017eb2ef4da167466c05ad83eb0714129a2e46ff.tar.gz
nsgenbind-017eb2ef4da167466c05ad83eb0714129a2e46ff.tar.bz2
Simplify genbind AST handling of preface, prologue, epilogue and postface
Diffstat (limited to 'src/duk-libdom-common.c')
-rw-r--r--src/duk-libdom-common.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/duk-libdom-common.c b/src/duk-libdom-common.c
index a1298e9..fc62863 100644
--- a/src/duk-libdom-common.c
+++ b/src/duk-libdom-common.c
@@ -115,3 +115,35 @@ int output_ctype(FILE *outf, struct genbind_node *node, bool identifier)
return 0;
}
+
+/* exported interface documented in duk-libdom.h */
+int output_method_cdata(FILE* outf,
+ struct genbind_node *node,
+ enum genbind_method_type sel_method_type)
+{
+ struct genbind_node *method;
+
+ method = genbind_node_find_type(genbind_node_getnode(node),
+ NULL,
+ GENBIND_NODE_TYPE_METHOD);
+
+ while (method != NULL) {
+ enum genbind_method_type *method_type;
+
+ method_type = (enum genbind_method_type *)genbind_node_getint(
+ genbind_node_find_type(
+ genbind_node_getnode(method),
+ NULL,
+ GENBIND_NODE_TYPE_METHOD_TYPE));
+ if ((method_type != NULL) &&
+ (*method_type == sel_method_type)) {
+ output_cdata(outf, method, GENBIND_NODE_TYPE_CDATA);
+ }
+
+ method = genbind_node_find_type(genbind_node_getnode(node),
+ method,
+ GENBIND_NODE_TYPE_METHOD);
+ }
+
+ return 0;
+}