From 352df58136c11e9b15dea0a38c47ceb66c10b206 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Fri, 11 Jan 2008 08:34:52 +0000 Subject: [PATCH] Add consts and const flags to js_SyncResolve() Fix DLLCALL usage. --- src/sbbs3/main.cpp | 26 +++++++++++++++++++++++--- src/sbbs3/sbbs.h | 2 +- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index 426942726d..4d82d9f23a 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 c03ab07a02..e424887d1f 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); -- GitLab