[GLIB] Add API to allow creating variadic functions
authorcarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 12 Jul 2018 05:18:20 +0000 (05:18 +0000)
committercarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 12 Jul 2018 05:18:20 +0000 (05:18 +0000)
commitb020c5bc14087553aa1bb4ea638b1e35410728c6
tree70b3f44a52242aed1464dbb7de44e2883a6d565a
parent197690ffb671cc27b908ac718c8e5f60db0a4e5a
[GLIB] Add API to allow creating variadic functions
https://bugs.webkit.org/show_bug.cgi?id=187517

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

Add a _variadic alternate method for jsc_class_add_constructor, jsc_class_add_method and
jsc_value_new_function. In that case the callback always receives a GPtrArray of JSCValue.

* API/glib/JSCCallbackFunction.cpp:
(JSC::JSCCallbackFunction::create): Make the parameters optional.
(JSC::JSCCallbackFunction::JSCCallbackFunction): Ditto.
(JSC::JSCCallbackFunction::call): Handle the case of parameters being nullopt by creating a GPtrArray of
JSCValue for the arguments.
(JSC::JSCCallbackFunction::construct): Ditto.
* API/glib/JSCCallbackFunction.h:
* API/glib/JSCClass.cpp:
(jscClassCreateConstructor): Make the parameters optional.
(jsc_class_add_constructor_variadic): Pass nullopt as parameters to jscClassCreateConstructor.
(jscClassAddMethod): Make the parameters optional.
(jsc_class_add_method_variadic): Pass nullopt as parameters to jscClassAddMethod.
* API/glib/JSCClass.h:
* API/glib/JSCValue.cpp:
(jsc_value_object_define_property_accessor): Update now that parameters are optional.
(jscValueFunctionCreate): Make the parameters optional.
(jsc_value_new_function_variadic): Pass nullopt as parameters to jscValueFunctionCreate.
* API/glib/JSCValue.h:
* API/glib/docs/jsc-glib-4.0-sections.txt:

Tools:

Add test cases.

* TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp:
(testJSCFunction):
(fooCreateWithFooV):
(multiplyFooV):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233760 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/JavaScriptCore/API/glib/JSCCallbackFunction.cpp
Source/JavaScriptCore/API/glib/JSCCallbackFunction.h
Source/JavaScriptCore/API/glib/JSCClass.cpp
Source/JavaScriptCore/API/glib/JSCClass.h
Source/JavaScriptCore/API/glib/JSCValue.cpp
Source/JavaScriptCore/API/glib/JSCValue.h
Source/JavaScriptCore/API/glib/docs/jsc-glib-4.0-sections.txt
Source/JavaScriptCore/ChangeLog
Tools/ChangeLog
Tools/TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp