Constructing object literals.

git-svn-id: svn://10.0.0.236/trunk@126379 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
rogerl%netscape.com
2002-08-05 23:08:39 +00:00
parent 8f365056b7
commit 94098a015a
3 changed files with 49 additions and 4 deletions

View File

@@ -77,6 +77,7 @@ namespace MetaData {
static void Multiname_finalize(JSContext *cx, JSObject *obj);
static void LexicalReference_finalize(JSContext *cx, JSObject *obj);
static void Namespace_finalize(JSContext *cx, JSObject *obj);
static void JS2Object_finalize(JSContext *cx, JSObject *obj);
JSClass gMonkeyMultinameClass =
{ "Multiname", JSCLASS_HAS_PRIVATE,
@@ -97,6 +98,12 @@ namespace MetaData {
JS_PropertyStub, JS_PropertyStub, JS_EnumerateStub,
JS_ResolveStub, JS_ConvertStub, Namespace_finalize };
JSClass gMonkeyJS2ObjectClass =
{ "JS2Object", JSCLASS_HAS_PRIVATE,
JS_PropertyStub, JS_PropertyStub,
JS_PropertyStub, JS_PropertyStub, JS_EnumerateStub,
JS_ResolveStub, JS_ConvertStub, JS2Object_finalize };
// member functions at global scope
JSFunctionSpec jsfGlobal [] =
{
@@ -243,6 +250,29 @@ namespace MetaData {
}
/******************************************************************************
JS2Object
******************************************************************************/
// finish constructing a JS2Object
static JSBool
JS2Object_constructor(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
JS2Metadata *meta = static_cast<JS2Metadata *>(JS_GetContextPrivate(cx));
if (!JS_SetPrivate(cx, obj, meta->objectClass->construct()))
return JS_FALSE;
return JS_TRUE;
}
// finalize a Namespace - called by Monkey gc
static void
JS2Object_finalize(JSContext *cx, JSObject *obj)
{
ASSERT(OBJ_GET_CLASS(cx, obj) == &gMonkeyJS2ObjectClass);
DynamicInstance *di = static_cast<DynamicInstance *>(JS_GetPrivate(cx, obj));
if (di) delete di;
}
@@ -280,6 +310,10 @@ namespace MetaData {
&gMonkeyNamespaceClass, Namespace_constructor, 0,
NULL, NULL, NULL, NULL);
JS_InitClass(monkeyContext, monkeyGlobalObject, NULL,
&gMonkeyJS2ObjectClass, JS2Object_constructor, 0,
NULL, NULL, NULL, NULL);
if (!JS_DefineFunctions(monkeyContext, monkeyGlobalObject, jsfGlobal))
throw "Monkey start failure";
}