Changeset 15133 in webkit for trunk/JavaScriptCore/API/JSObjectRef.cpp
- Timestamp:
- Jul 1, 2006, 9:06:07 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/API/JSObjectRef.cpp
r15043 r15133 28 28 #include "JSValueRef.h" 29 29 #include "JSObjectRef.h" 30 #include "JSCallbackConstructor.h" 31 #include "JSCallbackFunction.h" 30 32 #include "JSCallbackObject.h" 31 33 … … 36 38 37 39 using namespace KJS; 38 39 const JSObjectCallbacks kJSObjectCallbacksNone = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };40 40 41 41 JSObjectRef JSValueToObject(JSContextRef context, JSValueRef value) … … 52 52 } 53 53 54 JSObjectRef JSObjectMake(JSContextRef context, const JSObjectCallbacks* callbacks, JSObjectRef prototype)54 JSObjectRef JSObjectMake(JSContextRef context, JSClassRef jsClass, JSObjectRef prototype) 55 55 { 56 56 JSLock lock; … … 62 62 jsPrototype = exec->lexicalInterpreter()->builtinObjectPrototype(); 63 63 64 if ( callbacks == &kJSObjectCallbacksNone)64 if (!jsClass) 65 65 return toRef(new JSObject(jsPrototype)); // slightly more efficient 66 66 else 67 return toRef(new JSCallbackObject( callbacks, jsPrototype));67 return toRef(new JSCallbackObject(jsClass, jsPrototype)); 68 68 } 69 69 70 70 JSObjectRef JSFunctionMake(JSContextRef context, JSCallAsFunctionCallback callback) 71 71 { 72 ExecState* exec = toJS(context); 73 JSObjectCallbacks callbacks = kJSObjectCallbacksNone; 74 callbacks.callAsFunction = callback; 75 76 return JSObjectMake(context, &callbacks, toRef(exec->lexicalInterpreter()->builtinFunctionPrototype())); 72 JSLock lock; 73 ExecState* exec = toJS(context); 74 return toRef(new JSCallbackFunction(exec, callback)); 77 75 } 78 76 79 77 JSObjectRef JSConstructorMake(JSContextRef context, JSCallAsConstructorCallback callback) 80 78 { 81 ExecState* exec = toJS(context); 82 JSObjectCallbacks callbacks = kJSObjectCallbacksNone; 83 callbacks.callAsConstructor = callback; 84 85 return JSObjectMake(context, &callbacks, toRef(exec->lexicalInterpreter()->builtinObjectPrototype())); 79 JSLock lock; 80 ExecState* exec = toJS(context); 81 return toRef(new JSCallbackConstructor(exec, callback)); 86 82 } 87 83 … … 224 220 } 225 221 226 struct __JSProperty ListEnumerator227 { 228 __JSProperty ListEnumerator() : refCount(0), iterator(list.end())222 struct __JSPropertyEnumerator 223 { 224 __JSPropertyEnumerator() : refCount(0), iterator(list.end()) 229 225 { 230 226 } … … 235 231 }; 236 232 237 JSProperty ListEnumeratorRef JSObjectCreatePropertyEnumerator(JSContextRef context, JSObjectRef object)238 { 239 JSLock lock; 240 ExecState* exec = toJS(context); 241 JSObject* jsObject = toJS(object); 242 243 JSProperty ListEnumeratorRef enumerator = new __JSPropertyListEnumerator();233 JSPropertyEnumeratorRef JSObjectCreatePropertyEnumerator(JSContextRef context, JSObjectRef object) 234 { 235 JSLock lock; 236 ExecState* exec = toJS(context); 237 JSObject* jsObject = toJS(object); 238 239 JSPropertyEnumeratorRef enumerator = new __JSPropertyEnumerator(); 244 240 jsObject->getPropertyList(exec, enumerator->list); 245 241 enumerator->iterator = enumerator->list.begin(); 246 242 247 return enumerator;248 } 249 250 JSCharBufferRef JSPropertyEnumeratorGetNext(JSContextRef context, JSProperty ListEnumeratorRef enumerator)243 return JSPropertyEnumeratorRetain(enumerator); 244 } 245 246 JSCharBufferRef JSPropertyEnumeratorGetNext(JSContextRef context, JSPropertyEnumeratorRef enumerator) 251 247 { 252 248 ExecState* exec = toJS(context); … … 259 255 } 260 256 261 JSProperty ListEnumeratorRef JSPropertyEnumeratorRetain(JSPropertyListEnumeratorRef enumerator)257 JSPropertyEnumeratorRef JSPropertyEnumeratorRetain(JSPropertyEnumeratorRef enumerator) 262 258 { 263 259 ++enumerator->refCount; … … 265 261 } 266 262 267 void JSPropertyEnumeratorRelease(JSProperty ListEnumeratorRef enumerator)263 void JSPropertyEnumeratorRelease(JSPropertyEnumeratorRef enumerator) 268 264 { 269 265 if (--enumerator->refCount == 0)
Note:
See TracChangeset
for help on using the changeset viewer.