diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index 426942726df0fd51939281624ae4f8b358547267..4d82d9f23a9b31a16d8e2d8557975d0b34f6c195 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -505,7 +505,8 @@ DLLCALL js_DefineSyncMethods(JSContext* cx, JSObject* obj, jsSyncMethodSpec *fun * 1) We'll always be enumerating anyways * 2) The speed penalty won't be seen in production code anyways */ -JSBool js_SyncResolve(JSContext* cx, JSObject* obj, char *name, jsSyncPropertySpec* props, jsSyncMethodSpec* funcs) +JSBool +DLLCALL js_SyncResolve(JSContext* cx, JSObject* obj, char *name, jsSyncPropertySpec* props, jsSyncMethodSpec* funcs, jsConstIntSpec* consts, int flags) { JSBool ret=JS_TRUE; @@ -517,6 +518,9 @@ JSBool js_SyncResolve(JSContext* cx, JSObject* obj, char *name, jsSyncPropertySp if(!js_DefineSyncMethods(cx, obj, funcs)) ret=JS_FALSE; + if(consts) + if(!js_DefineConstIntegers(JSContext* cx, JSObject* obj, consts, flags) + return(ret); } @@ -547,9 +551,11 @@ DLLCALL js_DefineSyncMethods(JSContext* cx, JSObject* obj, jsSyncMethodSpec *fun return(JS_TRUE); } -JSBool js_SyncResolve(JSContext* cx, JSObject* obj, char *name, jsSyncPropertySpec* props, jsSyncMethodSpec* funcs) +JSBool +DLLCALL js_SyncResolve(JSContext* cx, JSObject* obj, char *name, jsSyncPropertySpec* props, jsSyncMethodSpec* funcs, jsConstIntSpec* consts, int flags) { uint i; + jsval val; if(props) { for(i=0;props[i].name;i++) { @@ -572,6 +578,20 @@ JSBool js_SyncResolve(JSContext* cx, JSObject* obj, char *name, jsSyncPropertySp } } } + if(consts) { + for(i=0;ints[i].name;i++) { + if(name==NULL || strcmp(name, consts[i].name)==0) { + if(!JS_NewNumberValue(cx, ints[i].val, &val)) + return(JS_FALSE); + + if(!JS_DefineProperty(cx, obj, ints[i].name, val ,NULL, NULL, flags)) + return(JS_FALSE); + + if(name) + return(JS_TRUE); + } + } + } return(JS_TRUE); } @@ -592,7 +612,7 @@ DLLCALL js_DefineConstIntegers(JSContext* cx, JSObject* obj, jsConstIntSpec* int if(!JS_DefineProperty(cx, obj, ints[i].name, val ,NULL, NULL, flags)) return(JS_FALSE); } - + return(JS_TRUE); } diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index c03ab07a0296b306e67285f45e7dd4243a5d536f..e424887d1f3918106ab5db1c6e72f987a374bdca 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -968,7 +968,7 @@ extern "C" { DLLEXPORT JSBool DLLCALL js_DescribeSyncConstructor(JSContext* cx, JSObject* obj, const char*); DLLEXPORT JSBool DLLCALL js_DefineSyncMethods(JSContext* cx, JSObject* obj, jsSyncMethodSpec*, BOOL append); DLLEXPORT JSBool DLLCALL js_DefineSyncProperties(JSContext* cx, JSObject* obj, jsSyncPropertySpec*); - DLLEXPORT JSBool DLLCALL js_SyncResolve(JSContext* cx, JSObject* obj, char *name, jsSyncPropertySpec* props, jsSyncMethodSpec* funcs); + DLLEXPORT JSBool DLLCALL js_SyncResolve(JSContext* cx, JSObject* obj, char *name, jsSyncPropertySpec* props, jsSyncMethodSpec* funcs, jsConstIntSpec* consts, int flags); DLLEXPORT JSBool DLLCALL js_DefineConstIntegers(JSContext* cx, JSObject* obj, jsConstIntSpec*, int flags); DLLEXPORT JSBool DLLCALL js_CreateArrayOfStrings(JSContext* cx, JSObject* parent ,const char* name, char* str[], uintN flags);