Mercurial > osx-quasimode
changeset 13:bab79fdfa745
Added JSQuasimodeMethod array to make method definitions on quasimode JS object easier.
author | Atul Varma <avarma@mozilla.com> |
---|---|
date | Sun, 11 Apr 2010 21:34:36 -0700 |
parents | 4bb0e66b4d7f |
children | 7a3d7ce08927 |
files | JavaScriptQuasimode.m |
diffstat | 1 files changed, 28 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/JavaScriptQuasimode.m Sun Apr 11 21:18:13 2010 -0700 +++ b/JavaScriptQuasimode.m Sun Apr 11 21:34:36 2010 -0700 @@ -4,12 +4,18 @@ #import "Quasimode.h" #import "JavaScriptQuasimode.h" -static JSValueRef setSize(JSContextRef ctx, - JSObjectRef function, - JSObjectRef thisObject, - size_t argumentCount, - const JSValueRef arguments[], - JSValueRef* exception) +typedef struct { + const char *name; + JSObjectCallAsFunctionCallback callback; +} JSQuasimodeMethod; + +static JSValueRef +method_setSize(JSContextRef ctx, + JSObjectRef function, + JSObjectRef thisObject, + size_t argumentCount, + const JSValueRef arguments[], + JSValueRef* exception) { if (argumentCount >= 2 && JSValueIsNumber(ctx, arguments[0]) && @@ -27,16 +33,24 @@ return JSValueMakeUndefined(ctx); } +static JSQuasimodeMethod jsQuasimodeMethods[] = { + {"setSize", method_setSize}, + {NULL, NULL} +}; + static void initialize(JSContextRef ctx, JSObjectRef object) { - JSStringRef setSizeStr = JSStringCreateWithUTF8CString("setSize"); - JSObjectRef func = JSObjectMakeFunctionWithCallback(ctx, setSizeStr, - setSize); - - JSObjectSetProperty(ctx, object, setSizeStr, func, - kJSPropertyAttributeReadOnly | - kJSPropertyAttributeDontDelete, - NULL); + for (JSQuasimodeMethod *method = jsQuasimodeMethods; + method->name != NULL; + method++) { + JSStringRef nameStr = JSStringCreateWithUTF8CString(method->name); + JSObjectRef func = JSObjectMakeFunctionWithCallback(ctx, nameStr, + method->callback); + JSObjectSetProperty(ctx, object, nameStr, func, + kJSPropertyAttributeReadOnly | + kJSPropertyAttributeDontDelete, + NULL); + } } void JSQuasimodeInit(Quasimode *quasimode)