diff options
author | Vincent Sanders <vince@kyllikki.org> | 2013-01-22 22:50:06 +0000 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2013-01-22 22:50:06 +0000 |
commit | 515dc7e649e1276c131b9ef4e0e1c7ff4e19a69f (patch) | |
tree | b65054f1bc17edd94d6b0f279ade658b2a702097 /src | |
parent | fb67cea0bf74267bdb614543b693551830dddc24 (diff) | |
download | nsgenbind-515dc7e649e1276c131b9ef4e0e1c7ff4e19a69f.tar.gz nsgenbind-515dc7e649e1276c131b9ef4e0e1c7ff4e19a69f.tar.bz2 |
cause private data to be available in all api handlers
Diffstat (limited to 'src')
-rw-r--r-- | src/jsapi-libdom.c | 58 |
1 files changed, 56 insertions, 2 deletions
diff --git a/src/jsapi-libdom.c b/src/jsapi-libdom.c index 899cbb8..2a29e22 100644 --- a/src/jsapi-libdom.c +++ b/src/jsapi-libdom.c @@ -268,6 +268,15 @@ output_api_operations(struct binding *binding) "static JSBool JSAPI_PROP(add, JSContext *cx, JSObject *obj, jsval *vp)\n" "{\n"); + if (binding->has_private) { + + fprintf(binding->outfile, + "\tstruct jsclass_private *private;\n" + "\n" + "\tprivate = JS_GetInstancePrivate(cx, obj, &JSClass_%s, NULL);\n", + binding->interface); + } + output_code_block(binding, genbind_node_getnode(binding->addproperty)); @@ -282,6 +291,15 @@ output_api_operations(struct binding *binding) "static JSBool JSAPI_PROP(del, JSContext *cx, JSObject *obj, jsval *vp)\n" "{\n"); + if (binding->has_private) { + + fprintf(binding->outfile, + "\tstruct jsclass_private *private;\n" + "\n" + "\tprivate = JS_GetInstancePrivate(cx, obj, &JSClass_%s, NULL);\n", + binding->interface); + } + output_code_block(binding, genbind_node_getnode(binding->delproperty)); @@ -296,6 +314,15 @@ output_api_operations(struct binding *binding) "static JSBool JSAPI_PROP(get, JSContext *cx, JSObject *obj, jsval *vp)\n" "{\n"); + if (binding->has_private) { + + fprintf(binding->outfile, + "\tstruct jsclass_private *private;\n" + "\n" + "\tprivate = JS_GetInstancePrivate(cx, obj, &JSClass_%s, NULL);\n", + binding->interface); + } + output_code_block(binding, genbind_node_getnode(binding->getproperty)); @@ -310,6 +337,15 @@ output_api_operations(struct binding *binding) "static JSBool JSAPI_STRICTPROP(set, JSContext *cx, JSObject *obj, jsval *vp)\n" "{\n"); + if (binding->has_private) { + + fprintf(binding->outfile, + "\tstruct jsclass_private *private;\n" + "\n" + "\tprivate = JS_GetInstancePrivate(cx, obj, &JSClass_%s, NULL);\n", + binding->interface); + } + output_code_block(binding, genbind_node_getnode(binding->setproperty)); @@ -324,6 +360,15 @@ output_api_operations(struct binding *binding) "static JSBool jsclass_enumerate(JSContext *cx, JSObject *obj)\n" "{\n"); + if (binding->has_private) { + + fprintf(binding->outfile, + "\tstruct jsclass_private *private;\n" + "\n" + "\tprivate = JS_GetInstancePrivate(cx, obj, &JSClass_%s, NULL);\n", + binding->interface); + } + output_code_block(binding, genbind_node_getnode(binding->enumerate)); fprintf(binding->outfile, @@ -337,6 +382,15 @@ output_api_operations(struct binding *binding) "static JSBool jsclass_resolve(JSContext *cx, JSObject *obj, jsval id, uintN flags, JSObject **objp)\n" "{\n"); + if (binding->has_private) { + + fprintf(binding->outfile, + "\tstruct jsclass_private *private;\n" + "\n" + "\tprivate = JS_GetInstancePrivate(cx, obj, &JSClass_%s, NULL);\n", + binding->interface); + } + output_code_block(binding, genbind_node_getnode(binding->resolve)); fprintf(binding->outfile, @@ -344,12 +398,12 @@ output_api_operations(struct binding *binding) "}\n\n"); } + /* generate trace/mark entry */ if (binding->mark != NULL) { - /* generate trace/mark entry */ fprintf(binding->outfile, "static JSAPI_MARKOP(jsclass_mark)\n" "{\n"); - if(binding->has_private) { + if (binding->has_private) { fprintf(binding->outfile, "\tstruct jsclass_private *private;\n" |