- JSContextRef ctx = toRef(exec);
- JSObjectRef thisRef = toRef(this);
-
- for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass)
- if (JSObjectConvertToTypeCallback convertToType = jsClass->convertToType) {
- JSLock::DropAllLocks dropAllLocks;
- if (JSValueRef value = convertToType(ctx, thisRef, kJSTypeNumber, toRef(exec->exceptionSlot())))
- return toJS(value)->getNumber();
- }
-
- return Base::toNumber(exec);
-}
-
-template <class Base>
-UString JSCallbackObject<Base>::toString(ExecState* exec) const
-{
- JSContextRef ctx = toRef(exec);
- JSObjectRef thisRef = toRef(this);
-
- for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass)
- if (JSObjectConvertToTypeCallback convertToType = jsClass->convertToType) {
- JSLock::DropAllLocks dropAllLocks;
- if (JSValueRef value = convertToType(ctx, thisRef, kJSTypeString, toRef(exec->exceptionSlot())))
- return toJS(value)->getString();
- }
-
- return Base::toString(exec);
-}
-
-template <class Base>
-void JSCallbackObject<Base>::setPrivate(void* data)
-{
- m_privateData = data;