summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2013-01-22 22:50:06 +0000
committerVincent Sanders <vince@kyllikki.org>2013-01-22 22:50:06 +0000
commit515dc7e649e1276c131b9ef4e0e1c7ff4e19a69f (patch)
treeb65054f1bc17edd94d6b0f279ade658b2a702097
parentfb67cea0bf74267bdb614543b693551830dddc24 (diff)
downloadnsgenbind-515dc7e649e1276c131b9ef4e0e1c7ff4e19a69f.tar.gz
nsgenbind-515dc7e649e1276c131b9ef4e0e1c7ff4e19a69f.tar.bz2
cause private data to be available in all api handlers
-rw-r--r--src/jsapi-libdom.c58
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"