JavaScriptCore:
authorggaren <ggaren@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 21 Jun 2006 21:09:19 +0000 (21:09 +0000)
committerggaren <ggaren@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 21 Jun 2006 21:09:19 +0000 (21:09 +0000)
commitb9e174f8036f13e8949fe9f280a4d7c3671db16c
treed139982a03b86eb6d8b15785424387551b31cc6e
parent547b8a4ee46b4258c0960fc555884c5d634abf4a
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
38 files changed:
JavaScriptCore/API/APICast.h [new file with mode: 0644]
JavaScriptCore/API/JSBase.h [new file with mode: 0644]
JavaScriptCore/API/JSCallbackObject.cpp [new file with mode: 0644]
JavaScriptCore/API/JSCallbackObject.h [new file with mode: 0644]
JavaScriptCore/API/JSCharBufferRef.cpp [new file with mode: 0644]
JavaScriptCore/API/JSCharBufferRef.h [new file with mode: 0644]
JavaScriptCore/API/JSContextRef.cpp [new file with mode: 0644]
JavaScriptCore/API/JSContextRef.h [new file with mode: 0644]
JavaScriptCore/API/JSObjectRef.cpp [new file with mode: 0644]
JavaScriptCore/API/JSObjectRef.h [new file with mode: 0644]
JavaScriptCore/API/JSValueRef.cpp [new file with mode: 0644]
JavaScriptCore/API/JSValueRef.h [new file with mode: 0644]
JavaScriptCore/API/JavaScriptCore.h [new file with mode: 0644]
JavaScriptCore/API/minidom.c [new file with mode: 0644]
JavaScriptCore/API/minidom.html [new file with mode: 0644]
JavaScriptCore/API/minidom.js [new file with mode: 0644]
JavaScriptCore/API/testapi.c [new file with mode: 0644]
JavaScriptCore/API/testapi.js [new file with mode: 0644]
JavaScriptCore/ChangeLog
JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
JavaScriptCore/bindings/npruntime_impl.h
JavaScriptCore/kjs/array_instance.h
JavaScriptCore/kjs/array_object.cpp
JavaScriptCore/kjs/interpreter.cpp
JavaScriptCore/kjs/nodes.cpp
JavaScriptCore/kjs/object.cpp
JavaScriptCore/kjs/object.h
JavaScriptCore/kjs/property_map.cpp
JavaScriptCore/kjs/property_map.h
JavaScriptCore/kjs/scope_chain.cpp
JavaScriptCore/kjs/string_object.cpp
JavaScriptCore/kjs/string_object.h
JavaScriptCore/kjs/ustring.h
JavaScriptGlue/ChangeLog
JavaScriptGlue/JSUtils.cpp
JavaScriptGlue/JSValueWrapper.cpp
JavaScriptGlue/UserObjectImp.cpp
JavaScriptGlue/UserObjectImp.h