diff --git a/linux/bin/swig/bin/swig b/linux/bin/swig/bin/swig index 3029247f..e5d35352 100755 Binary files a/linux/bin/swig/bin/swig and b/linux/bin/swig/bin/swig differ diff --git a/linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcode.swg b/linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcode.swg index f261faaa..16993e16 100644 --- a/linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcode.swg +++ b/linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcode.swg @@ -28,6 +28,36 @@ static bool $jswrapper(se::State& s) // NOLINT(readability-identifier-naming) } SE_BIND_CTOR($jswrapper, __jsb_$jsmangledname_class, js_delete_$jsdtor)%} +%fragment ("js_ctor_for_struct_default_constructor", "templates") +%{ +static bool $jswrapper(se::State& s) // NOLINT(readability-identifier-naming) +{ + CC_UNUSED bool ok = true; + const auto& args = s.args(); + size_t argc = args.size(); + $jslocals + $jscode + auto *ptr = JSB_MAKE_PRIVATE_OBJECT_WITH_INSTANCE(result); + if (argc == 0) { + s.thisObject()->setPrivateObject(ptr); + return true; + } + $assign_struct_default_args + if (argc > 0 && !ok) { + delete ptr; + SE_REPORT_ERROR("Argument convertion error"); + return false; + } + s.thisObject()->setPrivateObject(ptr); + return true; +} +SE_BIND_CTOR($jswrapper, __jsb_$jsmangledname_class, js_delete_$jsdtor)%} + +%fragment ("js_struct_default_constructor_args", "templates") %{ + if (argc > $js_arg_index && !args[$js_arg_index].isUndefined()) { + ok &= sevalue_to_native(args[$js_arg_index], &(result->$field_name), nullptr); + }%} + /* ----------------------------------------------------------------------------- * js_ctor_dispatcher: dispatcher for overloaded constructors * - $jswrapper: name of wrapper diff --git a/mac/bin/swig/bin/swig b/mac/bin/swig/bin/swig index 9380c1e4..ffe9e883 100755 Binary files a/mac/bin/swig/bin/swig and b/mac/bin/swig/bin/swig differ diff --git a/mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcode.swg b/mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcode.swg index f261faaa..16993e16 100644 --- a/mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcode.swg +++ b/mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcode.swg @@ -28,6 +28,36 @@ static bool $jswrapper(se::State& s) // NOLINT(readability-identifier-naming) } SE_BIND_CTOR($jswrapper, __jsb_$jsmangledname_class, js_delete_$jsdtor)%} +%fragment ("js_ctor_for_struct_default_constructor", "templates") +%{ +static bool $jswrapper(se::State& s) // NOLINT(readability-identifier-naming) +{ + CC_UNUSED bool ok = true; + const auto& args = s.args(); + size_t argc = args.size(); + $jslocals + $jscode + auto *ptr = JSB_MAKE_PRIVATE_OBJECT_WITH_INSTANCE(result); + if (argc == 0) { + s.thisObject()->setPrivateObject(ptr); + return true; + } + $assign_struct_default_args + if (argc > 0 && !ok) { + delete ptr; + SE_REPORT_ERROR("Argument convertion error"); + return false; + } + s.thisObject()->setPrivateObject(ptr); + return true; +} +SE_BIND_CTOR($jswrapper, __jsb_$jsmangledname_class, js_delete_$jsdtor)%} + +%fragment ("js_struct_default_constructor_args", "templates") %{ + if (argc > $js_arg_index && !args[$js_arg_index].isUndefined()) { + ok &= sevalue_to_native(args[$js_arg_index], &(result->$field_name), nullptr); + }%} + /* ----------------------------------------------------------------------------- * js_ctor_dispatcher: dispatcher for overloaded constructors * - $jswrapper: name of wrapper diff --git a/win64/bin/swig/bin/swig.exe b/win64/bin/swig/bin/swig.exe index 1d4b561f..b6aa72bf 100644 Binary files a/win64/bin/swig/bin/swig.exe and b/win64/bin/swig/bin/swig.exe differ diff --git a/win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcode.swg b/win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcode.swg index 4a127ac3..28f50791 100644 --- a/win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcode.swg +++ b/win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascriptcode.swg @@ -28,6 +28,36 @@ static bool $jswrapper(se::State& s) // NOLINT(readability-identifier-naming) } SE_BIND_CTOR($jswrapper, __jsb_$jsmangledname_class, js_delete_$jsdtor)%} +%fragment ("js_ctor_for_struct_default_constructor", "templates") +%{ +static bool $jswrapper(se::State& s) // NOLINT(readability-identifier-naming) +{ + CC_UNUSED bool ok = true; + const auto& args = s.args(); + size_t argc = args.size(); + $jslocals + $jscode + auto *ptr = JSB_MAKE_PRIVATE_OBJECT_WITH_INSTANCE(result); + if (argc == 0) { + s.thisObject()->setPrivateObject(ptr); + return true; + } + $assign_struct_default_args + if (argc > 0 && !ok) { + delete ptr; + SE_REPORT_ERROR("Argument convertion error"); + return false; + } + s.thisObject()->setPrivateObject(ptr); + return true; +} +SE_BIND_CTOR($jswrapper, __jsb_$jsmangledname_class, js_delete_$jsdtor)%} + +%fragment ("js_struct_default_constructor_args", "templates") %{ + if (argc > $js_arg_index && !args[$js_arg_index].isUndefined()) { + ok &= sevalue_to_native(args[$js_arg_index], &(result->$field_name), nullptr); + }%} + /* ----------------------------------------------------------------------------- * js_ctor_dispatcher: dispatcher for overloaded constructors * - $jswrapper: name of wrapper