7 JSUserObject::JSUserObject(JSObjectCallBacksPtr callBacks, JSObjectMarkProcPtr markProc, void *data, int dataType)
8 : JSBase(kJSObjectTypeID), fCallBacks(*callBacks), fMarkProc(markProc), fData(data), fDataType(dataType)
12 JSUserObject::~JSUserObject()
14 if (fCallBacks.dispose)
16 fCallBacks.dispose(fData);
20 CFArrayRef JSUserObject::CopyPropertyNames(void)
22 CFArrayRef result = 0;
23 if (fCallBacks.copyPropertyNames)
25 result = fCallBacks.copyPropertyNames(fData);
30 JSUserObject* JSUserObject::CopyProperty(CFStringRef propertyName)
32 JSUserObject* result = 0;
33 if (fCallBacks.copyProperty)
35 result = (JSUserObject*)fCallBacks.copyProperty(fData, propertyName);
40 void JSUserObject::SetProperty(CFStringRef propertyName, JSUserObject* value)
42 if (fCallBacks.setProperty)
44 fCallBacks.setProperty(fData, propertyName, (JSObjectRef)value);
49 bool JSUserObject::ImplementsCall()
51 return fCallBacks.callFunction ? true : false;
54 JSUserObject* JSUserObject::CallFunction(JSUserObject* thisObj, CFArrayRef args)
56 JSUserObject* result = 0;
57 if (fCallBacks.callFunction)
59 result = (JSUserObject*)fCallBacks.callFunction(fData, (JSObjectRef)thisObj, args);
65 CFTypeRef JSUserObject::CopyCFValue() const
68 if (fCallBacks.copyCFValue)
70 result = (JSUserObject*)fCallBacks.copyCFValue(fData);
75 UInt8 JSUserObject::Equal(JSBase* other)
78 JSUserObject* obj = (JSUserObject*)other;
79 if (obj->GetTypeID() == kJSObjectTypeID)
83 result = fCallBacks.equal(GetData(), obj->GetData());
87 CFTypeRef cf1 = CopyCFValue();
88 CFTypeRef cf2 = obj->CopyCFValue();
91 result = CFEqual(cf1, cf2);
100 void JSUserObject::Mark()
108 void *JSUserObject::GetData()