JavaScriptCore:
Reviewed by Anders.
- First cut at C API to JavaScript. Includes a unit test, 'testapi.c',
and the outline of a test app, 'minidom.c'.
Includes one change to JSC internals: Rename propList to getPropertyList and have it
take its target property list by reference so that subclasses can
add properties to the list before calling through to their superclasses.
Also, I just ran prepare-ChangeLog in about 10 seconds, and I would like
to give a shout-out to that.
* API/APICast.h: Added.
(toJS):
(toRef):
* API/JSBase.h: Added.
* API/JSCallbackObject.cpp: Added.
(KJS::):
(KJS::JSCallbackObject::JSCallbackObject):
(KJS::JSCallbackObject::~JSCallbackObject):
(KJS::JSCallbackObject::className):
(KJS::JSCallbackObject::getOwnPropertySlot):
(KJS::JSCallbackObject::put):
(KJS::JSCallbackObject::deleteProperty):
(KJS::JSCallbackObject::implementsConstruct):
(KJS::JSCallbackObject::construct):
(KJS::JSCallbackObject::implementsCall):
(KJS::JSCallbackObject::callAsFunction):
(KJS::JSCallbackObject::getPropertyList):
(KJS::JSCallbackObject::toBoolean):
(KJS::JSCallbackObject::toNumber):
(KJS::JSCallbackObject::toString):
(KJS::JSCallbackObject::setPrivate):
(KJS::JSCallbackObject::getPrivate):
(KJS::JSCallbackObject::cachedValueGetter):
(KJS::JSCallbackObject::callbackGetter):
* API/JSCallbackObject.h: Added.
(KJS::JSCallbackObject::classInfo):
* API/JSCharBufferRef.cpp: Added.
(JSStringMake):
(JSCharBufferCreate):
(JSCharBufferCreateUTF8):
(JSCharBufferRetain):
(JSCharBufferRelease):
(JSValueCopyStringValue):
(JSCharBufferGetLength):
(JSCharBufferGetCharactersPtr):
(JSCharBufferGetCharacters):
(JSCharBufferGetMaxLengthUTF8):
(JSCharBufferGetCharactersUTF8):
(JSCharBufferIsEqual):
(JSCharBufferIsEqualUTF8):
(JSCharBufferCreateWithCFString):
(CFStringCreateWithJSCharBuffer):
* API/JSCharBufferRef.h: Added.
* API/JSContextRef.cpp: Added.
(JSContextCreate):
(JSContextDestroy):
(JSContextGetGlobalObject):
(JSEvaluate):
(JSCheckSyntax):
(JSContextHasException):
(JSContextGetException):
(JSContextClearException):
(JSContextSetException):
* API/JSContextRef.h: Added.
* API/JSObjectRef.cpp: Added.
(JSValueToObject):
(JSObjectMake):
(JSFunctionMake):
(JSObjectGetDescription):
(JSObjectGetPrototype):
(JSObjectSetPrototype):
(JSObjectHasProperty):
(JSObjectGetProperty):
(JSObjectSetProperty):
(JSObjectDeleteProperty):
(JSObjectGetPrivate):
(JSObjectSetPrivate):
(JSObjectIsFunction):
(JSObjectCallAsFunction):
(JSObjectIsConstructor):
(JSObjectCallAsConstructor):
(__JSPropertyListEnumerator::__JSPropertyListEnumerator):
(JSObjectCreatePropertyEnumerator):
(JSPropertyEnumeratorGetNext):
(JSPropertyEnumeratorRetain):
(JSPropertyEnumeratorRelease):
(JSPropertyListAdd):
* API/JSObjectRef.h: Added.
* API/JSValueRef.cpp: Added.
(JSValueGetType):
(JSValueIsUndefined):
(JSValueIsNull):
(JSValueIsBoolean):
(JSValueIsNumber):
(JSValueIsString):
(JSValueIsObject):
(JSValueIsEqual):
(JSValueIsStrictEqual):
(JSUndefinedMake):
(JSNullMake):
(JSBooleanMake):
(JSNumberMake):
(JSValueToBoolean):
(JSValueToNumber):
(JSGCProtect):
(JSGCUnprotect):
(JSGCCollect):
* API/JSValueRef.h: Added.
* API/JavaScriptCore.h: Added.
* API/minidom.c: Added.
(main):
* API/minidom.html: Added.
* API/minidom.js: Added.
* API/testapi.c: Added.
(assertEqualsAsBoolean):
(assertEqualsAsNumber):
(assertEqualsAsUTF8String):
(assertEqualsAsCharactersPtr):
(assertEqualsAsCharacters):
(MyObject_initialize):
(MyObject_copyDescription):
(MyObject_hasProperty):
(MyObject_getProperty):
(MyObject_setProperty):
(MyObject_deleteProperty):
(MyObject_getPropertyList):
(MyObject_callAsFunction):
(MyObject_callAsConstructor):
(MyObject_convertToType):
(MyObject_finalize):
(print_callAsFunction):
(main):
(createStringWithContentsOfFile):
* API/testapi.js: Added.
* ChangeLog:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bindings/npruntime_impl.h:
* kjs/array_instance.h:
* kjs/array_object.cpp:
(ArrayInstance::getPropertyList):
* kjs/interpreter.cpp:
(KJS::Interpreter::evaluate):
* kjs/nodes.cpp:
(ForInNode::execute):
* kjs/object.cpp:
(KJS::JSObject::put):
(KJS::JSObject::canPut):
(KJS::JSObject::deleteProperty):
(KJS::JSObject::propertyIsEnumerable):
(KJS::JSObject::getPropertyAttributes):
(KJS::JSObject::getPropertyList):
* kjs/object.h:
* kjs/property_map.cpp:
(KJS::PropertyMap::get):
* kjs/property_map.h:
* kjs/scope_chain.cpp:
(KJS::ScopeChain::print):
* kjs/string_object.cpp:
(StringInstance::getPropertyList):
* kjs/string_object.h:
* kjs/ustring.h:
(KJS::UString::Rep::ref):
JavaScriptGlue:
Reviewed by Anders.
- Required for JS API: Rename propList to getPropertyList and have it
take its target property list by reference so that subclasses can
add properties to the list before calling through to their superclasses.
* JSUtils.cpp:
(KJSValueToCFTypeInternal):
* JSValueWrapper.cpp:
(JSValueWrapper::JSObjectCopyPropertyNames):
* UserObjectImp.cpp:
(UserObjectImp::getPropertyList):
* UserObjectImp.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@14951
268f45cc-cd09-0410-ab3c-
d52691b4dbfc