diff options
author | Vincent Sanders <vincent.sanders@collabora.co.uk> | 2012-10-12 18:28:20 +0100 |
---|---|---|
committer | Vincent Sanders <vincent.sanders@collabora.co.uk> | 2012-10-12 18:28:20 +0100 |
commit | 6ec7a2853b5d339fa086fe5dadb4605fb0f392c3 (patch) | |
tree | 21717abd00cf1a4680e69f54c990503bbd2d6d28 | |
parent | b5c56b56cebe3f46c05823300783d1c88c02f12e (diff) | |
download | nsgenbind-6ec7a2853b5d339fa086fe5dadb4605fb0f392c3.tar.gz nsgenbind-6ec7a2853b5d339fa086fe5dadb4605fb0f392c3.tar.bz2 |
add loop to generate arrtibute variables
-rw-r--r-- | src/jsapi-libdom-operator.c | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/src/jsapi-libdom-operator.c b/src/jsapi-libdom-operator.c index 90a67a7..001bb39 100644 --- a/src/jsapi-libdom-operator.c +++ b/src/jsapi-libdom-operator.c @@ -23,10 +23,38 @@ * values as appropriate */ static void -output_variable_definitions(struct binding *binding, struct webidl_node *operator_list) +output_variable_definitions(struct binding *binding, struct webidl_node *operation_list) { - operator_list = operator_list; + struct webidl_node *arglist_node; + struct webidl_node *arglist; /* argument list */ + struct webidl_node *arg_node = NULL; + + /* return value */ fprintf(binding->outfile, "\tjsval jsretval = JSVAL_VOID;\n"); + + /* input variables */ + arglist_node = webidl_node_find(operation_list, + NULL, + webidl_cmp_node_type, + (void *)WEBIDL_NODE_TYPE_LIST); + + if (arglist_node == NULL) { + return; /* @todo check if this is broken AST */ + } + + arglist = webidl_node_getnode(arglist_node); + + arg_node = webidl_node_find_type(arglist, + arg_node, + WEBIDL_NODE_TYPE_ARGUMENT); + while (arg_node != NULL) { + /* generate variable to hold the argument */ + + arg_node = webidl_node_find_type(arglist, + arg_node, + WEBIDL_NODE_TYPE_ARGUMENT); + } + } static void @@ -35,6 +63,7 @@ output_operation_input(struct binding *binding, { struct webidl_node *arglist_node; + struct webidl_node *arglist; /* argument list */ struct webidl_node *arg_node = NULL; arglist_node = webidl_node_find(operation_list, @@ -48,7 +77,7 @@ output_operation_input(struct binding *binding, arglist = webidl_node_getnode(arglist_node); - arg_node = webidl_node_for_each_type(arglist, + arg_node = webidl_node_find_type(arglist, arg_node, WEBIDL_NODE_TYPE_ARGUMENT); while (arg_node != NULL) { @@ -63,9 +92,9 @@ output_operation_input(struct binding *binding, */ - arg_node = webidl_node_for_each_type(arglist, - arg_node, - WEBIDL_NODE_TYPE_ARGUMENT); + arg_node = webidl_node_find_type(arglist, + arg_node, + WEBIDL_NODE_TYPE_ARGUMENT); } |