Added the finalize callback (JSObjectFinalizeCallback)

This commit is contained in:
Kota Iguchi 2013-08-16 10:15:37 +09:00 • committed by Oliver Buchtala
commit 78a3cc9e3e
2 changed files with 4 additions and 2 deletions

View file

@ -108,7 +108,7 @@ JSObjectRef $jswrapper(JSContextRef context, JSObjectRef thisObject, size_t argc
void $jswrapper(JSObjectRef thisObject) void $jswrapper(JSObjectRef thisObject)
{ {
SWIG_PRV_DATA* t = (SWIG_PRV_DATA*) JSObjectGetPrivate(thisObject); SWIG_PRV_DATA* t = (SWIG_PRV_DATA*) JSObjectGetPrivate(thisObject);
if(t && t->swigCMemOwn) free (($jstype*)t->swigCObject); if(t && t->swigCMemOwn) free (($jstype)t->swigCObject);
if(t) free(t); if(t) free(t);
} }
%} %}
@ -125,7 +125,7 @@ void $jswrapper(JSObjectRef thisObject)
{ {
SWIG_PRV_DATA* t = (SWIG_PRV_DATA*) JSObjectGetPrivate(thisObject); SWIG_PRV_DATA* t = (SWIG_PRV_DATA*) JSObjectGetPrivate(thisObject);
if(t && t->swigCMemOwn) { if(t && t->swigCMemOwn) {
$jstype* arg1 = ($jstype*)t->swigCObject; $jstype arg1 = ($jstype)t->swigCObject;
${destructor_action} ${destructor_action}
} }
if(t) free(t); if(t) free(t);
@ -385,6 +385,7 @@ JSStaticFunction $jsmangledname_functions[] = {
$jsmangledname_classDefinition.staticFunctions = $jsmangledname_staticFunctions; $jsmangledname_classDefinition.staticFunctions = $jsmangledname_staticFunctions;
$jsmangledname_classDefinition.staticValues = $jsmangledname_staticValues; $jsmangledname_classDefinition.staticValues = $jsmangledname_staticValues;
$jsmangledname_classDefinition.callAsConstructor = $jsctor; $jsmangledname_classDefinition.callAsConstructor = $jsctor;
$jsmangledname_classDefinition.finalize = $jsdtor;
$jsmangledname_objectDefinition.staticValues = $jsmangledname_values; $jsmangledname_objectDefinition.staticValues = $jsmangledname_values;
$jsmangledname_objectDefinition.staticFunctions = $jsmangledname_functions; $jsmangledname_objectDefinition.staticFunctions = $jsmangledname_functions;
$jsmangledname_objectDefinition.parentClass = $jsbaseclass_classRef; $jsmangledname_objectDefinition.parentClass = $jsbaseclass_classRef;

View file

@ -1700,6 +1700,7 @@ int JSCEmitter::exitClass(Node *n) {
.replace(T_TYPE_MANGLED, state.clazz(TYPE_MANGLED)) .replace(T_TYPE_MANGLED, state.clazz(TYPE_MANGLED))
.replace(T_BASECLASS, base_name_mangled) .replace(T_BASECLASS, base_name_mangled)
.replace(T_CTOR, state.clazz(CTOR)) .replace(T_CTOR, state.clazz(CTOR))
.replace(T_DTOR, state.clazz(DTOR))
.pretty_print(state.global(INITIALIZER)); .pretty_print(state.global(INITIALIZER));
Delete(base_name_mangled); Delete(base_name_mangled);