diff --git a/linux/bin/swig/bin/swig b/linux/bin/swig/bin/swig index d155c600..bec43e13 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/javascript.swg b/linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascript.swg index b036bedc..f858d2e1 100644 --- a/linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascript.swg +++ b/linux/bin/swig/share/swig/4.1.0/javascript/cocos/javascript.swg @@ -21,4 +21,11 @@ %include #define %module_macro(m) %feature("module_macro","m") -#define %release_returned_cpp_object_in_gc(method) %feature("release_returned_cpp_object_in_gc", "1") method \ No newline at end of file +#define %release_returned_cpp_object_in_gc(method) %feature("release_returned_cpp_object_in_gc", "1") method + +%define %virtual_inherit(klass) +%feature("virtual_inherit", "1") klass; +%typemap(in) klass *self +%{ $1 = SE_THIS_OBJECT_VIRTUAL<$*ltype, cc::VirtualInheritBase>(s); +if (nullptr == $1) return true;%} +%enddef 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..37e1ca36 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 @@ -22,8 +22,7 @@ static bool $jswrapper(se::State& s) // NOLINT(readability-identifier-naming) $js_check_arg_count $jslocals $jscode - auto *ptr = JSB_MAKE_PRIVATE_OBJECT_WITH_INSTANCE(result); - s.thisObject()->setPrivateObject(ptr); + $js_set_private_object return true; } SE_BIND_CTOR($jswrapper, __jsb_$jsmangledname_class, js_delete_$jsdtor)%} @@ -62,8 +61,7 @@ static bool $jswrapper(se::State& s) // NOLINT(readability-identifier-naming) CC_UNUSED bool ok = true; $jslocals $jscode - auto *ptr = JSB_MAKE_PRIVATE_OBJECT_WITH_INSTANCE(result); - s.thisObject()->setPrivateObject(ptr); + $js_set_private_object return true; } %} @@ -86,19 +84,20 @@ static bool $jswrapper(se::State& s) // NOLINT(readability-identifier-naming) /* ----------------------------------------------------------------------------- * js_dtor: template for a destructor wrapper - * - $jsmangledname: mangled class name + * - $classname_mangled: mangled class name * - $jstype: class type * ----------------------------------------------------------------------------- */ %fragment ("js_dtor", "templates") %{ static bool $jswrapper(se::State& s) { + cc::invokeOnGarbageCollectMethod<$jsclass_type>(s); return true; } SE_BIND_FINALIZE_FUNC($jswrapper) %} /* ----------------------------------------------------------------------------- * js_dtor: template for a destructor wrapper - * - $jsmangledname: mangled class name + * - $classname_mangled: mangled class name * - $jstype: class type * - ${destructor_action}: The custom destructor action to invoke. * ----------------------------------------------------------------------------- */ @@ -106,6 +105,7 @@ SE_BIND_FINALIZE_FUNC($jswrapper) %} %{ static bool $jswrapper(se::State& s) { + cc::invokeOnGarbageCollectMethod<$jsclass_type>(s); return true; } SE_BIND_FINALIZE_FUNC($jswrapper) %} diff --git a/mac/bin/swig/bin/swig b/mac/bin/swig/bin/swig index 718f2018..c9d9cd0b 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/javascript.swg b/mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascript.swg index b036bedc..f858d2e1 100644 --- a/mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascript.swg +++ b/mac/bin/swig/share/swig/4.1.0/javascript/cocos/javascript.swg @@ -21,4 +21,11 @@ %include #define %module_macro(m) %feature("module_macro","m") -#define %release_returned_cpp_object_in_gc(method) %feature("release_returned_cpp_object_in_gc", "1") method \ No newline at end of file +#define %release_returned_cpp_object_in_gc(method) %feature("release_returned_cpp_object_in_gc", "1") method + +%define %virtual_inherit(klass) +%feature("virtual_inherit", "1") klass; +%typemap(in) klass *self +%{ $1 = SE_THIS_OBJECT_VIRTUAL<$*ltype, cc::VirtualInheritBase>(s); +if (nullptr == $1) return true;%} +%enddef 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..37e1ca36 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 @@ -22,8 +22,7 @@ static bool $jswrapper(se::State& s) // NOLINT(readability-identifier-naming) $js_check_arg_count $jslocals $jscode - auto *ptr = JSB_MAKE_PRIVATE_OBJECT_WITH_INSTANCE(result); - s.thisObject()->setPrivateObject(ptr); + $js_set_private_object return true; } SE_BIND_CTOR($jswrapper, __jsb_$jsmangledname_class, js_delete_$jsdtor)%} @@ -62,8 +61,7 @@ static bool $jswrapper(se::State& s) // NOLINT(readability-identifier-naming) CC_UNUSED bool ok = true; $jslocals $jscode - auto *ptr = JSB_MAKE_PRIVATE_OBJECT_WITH_INSTANCE(result); - s.thisObject()->setPrivateObject(ptr); + $js_set_private_object return true; } %} @@ -86,19 +84,20 @@ static bool $jswrapper(se::State& s) // NOLINT(readability-identifier-naming) /* ----------------------------------------------------------------------------- * js_dtor: template for a destructor wrapper - * - $jsmangledname: mangled class name + * - $classname_mangled: mangled class name * - $jstype: class type * ----------------------------------------------------------------------------- */ %fragment ("js_dtor", "templates") %{ static bool $jswrapper(se::State& s) { + cc::invokeOnGarbageCollectMethod<$jsclass_type>(s); return true; } SE_BIND_FINALIZE_FUNC($jswrapper) %} /* ----------------------------------------------------------------------------- * js_dtor: template for a destructor wrapper - * - $jsmangledname: mangled class name + * - $classname_mangled: mangled class name * - $jstype: class type * - ${destructor_action}: The custom destructor action to invoke. * ----------------------------------------------------------------------------- */ @@ -106,6 +105,7 @@ SE_BIND_FINALIZE_FUNC($jswrapper) %} %{ static bool $jswrapper(se::State& s) { + cc::invokeOnGarbageCollectMethod<$jsclass_type>(s); return true; } SE_BIND_FINALIZE_FUNC($jswrapper) %} diff --git a/versions.txt b/versions.txt index b1351f4d..b29da61d 100644 --- a/versions.txt +++ b/versions.txt @@ -139,7 +139,5 @@ glslang (Built using https://github.com/YunHsiao/glslang/tree/build) linux: 11.5.0 openharmony:11.5.0 (commit: 1978c76) -swig ( Built using https://github.com/cocos/swig/tree/cocos-se, executable files are downloaded from https://github.com/cocos/swig/releases/tag/cocos-v1.1.6 ) - win64: cocos-v1.1.6 (commit: f52be17) - mac: cocos-v1.1.6 (commit: f52be17) - linux: cocos-v1.1.6 (commit: f52be17) +swig ( Built using https://github.com/cocos/swig/tree/cocos-se, executable files are downloaded from https://github.com/cocos/swig/releases/tag/cocos-v1.1.7 ) + all: cocos-v1.1.7 (commit: 7969da2) diff --git a/win64/bin/swig/bin/swig.exe b/win64/bin/swig/bin/swig.exe index cc8f035d..b6401366 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/javascript.swg b/win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascript.swg index 34f29a7f..109689ab 100644 --- a/win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascript.swg +++ b/win64/bin/swig/share/swig/4.1.0/javascript/cocos/javascript.swg @@ -21,4 +21,11 @@ %include #define %module_macro(m) %feature("module_macro","m") -#define %release_returned_cpp_object_in_gc(method) %feature("release_returned_cpp_object_in_gc", "1") method \ No newline at end of file +#define %release_returned_cpp_object_in_gc(method) %feature("release_returned_cpp_object_in_gc", "1") method + +%define %virtual_inherit(klass) +%feature("virtual_inherit", "1") klass; +%typemap(in) klass *self +%{ $1 = SE_THIS_OBJECT_VIRTUAL<$*ltype, cc::VirtualInheritBase>(s); +if (nullptr == $1) return true;%} +%enddef 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..2f6ca930 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 @@ -22,8 +22,7 @@ static bool $jswrapper(se::State& s) // NOLINT(readability-identifier-naming) $js_check_arg_count $jslocals $jscode - auto *ptr = JSB_MAKE_PRIVATE_OBJECT_WITH_INSTANCE(result); - s.thisObject()->setPrivateObject(ptr); + $js_set_private_object return true; } SE_BIND_CTOR($jswrapper, __jsb_$jsmangledname_class, js_delete_$jsdtor)%} @@ -62,8 +61,7 @@ static bool $jswrapper(se::State& s) // NOLINT(readability-identifier-naming) CC_UNUSED bool ok = true; $jslocals $jscode - auto *ptr = JSB_MAKE_PRIVATE_OBJECT_WITH_INSTANCE(result); - s.thisObject()->setPrivateObject(ptr); + $js_set_private_object return true; } %} @@ -86,19 +84,20 @@ static bool $jswrapper(se::State& s) // NOLINT(readability-identifier-naming) /* ----------------------------------------------------------------------------- * js_dtor: template for a destructor wrapper - * - $jsmangledname: mangled class name + * - $classname_mangled: mangled class name * - $jstype: class type * ----------------------------------------------------------------------------- */ %fragment ("js_dtor", "templates") %{ static bool $jswrapper(se::State& s) { + cc::invokeOnGarbageCollectMethod<$jsclass_type>(s); return true; } SE_BIND_FINALIZE_FUNC($jswrapper) %} /* ----------------------------------------------------------------------------- * js_dtor: template for a destructor wrapper - * - $jsmangledname: mangled class name + * - $classname_mangled: mangled class name * - $jstype: class type * - ${destructor_action}: The custom destructor action to invoke. * ----------------------------------------------------------------------------- */ @@ -106,6 +105,7 @@ SE_BIND_FINALIZE_FUNC($jswrapper) %} %{ static bool $jswrapper(se::State& s) { + cc::invokeOnGarbageCollectMethod<$jsclass_type>(s); return true; } SE_BIND_FINALIZE_FUNC($jswrapper) %}