make sure we have destructors for all objects

This commit is contained in:
Ari Lazier 2015-10-16 10:35:26 -07:00
parent 5ccc03eeb7
commit 7ae6fe4a03
4 changed files with 6 additions and 5 deletions

View File

@ -224,6 +224,6 @@ const JSStaticFunction RJSListFuncs[] = {
}; };
JSClassRef RJSListClass() { JSClassRef RJSListClass() {
static JSClassRef s_listClass = RJSCreateWrapperClass<Object>("RealmList", ListGetProperty, ListSetProperty, RJSListFuncs, NULL, ListPropertyNames); static JSClassRef s_listClass = RJSCreateWrapperClass<List *>("RealmList", ListGetProperty, ListSetProperty, RJSListFuncs, ListPropertyNames);
return s_listClass; return s_listClass;
} }

View File

@ -58,7 +58,7 @@ void ObjectPropertyNames(JSContextRef ctx, JSObjectRef object, JSPropertyNameAcc
} }
JSClassRef RJSObjectClass() { JSClassRef RJSObjectClass() {
static JSClassRef s_objectClass = RJSCreateWrapperClass<Object>("RealmObject", ObjectGetProperty, ObjectSetProperty, NULL, NULL, ObjectPropertyNames); static JSClassRef s_objectClass = RJSCreateWrapperClass<Object *>("RealmObject", ObjectGetProperty, ObjectSetProperty, NULL, ObjectPropertyNames);
return s_objectClass; return s_objectClass;
} }

View File

@ -124,6 +124,6 @@ JSClassRef RJSResultsClass() {
{"sortByProperty", SortByProperty, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete}, {"sortByProperty", SortByProperty, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
{NULL, NULL}, {NULL, NULL},
}; };
static JSClassRef s_objectClass = RJSCreateWrapperClass<Object>("Results", ResultsGetProperty, NULL, resultsFuncs, NULL, ResultsPropertyNames); static JSClassRef s_objectClass = RJSCreateWrapperClass<Results *>("Results", ResultsGetProperty, NULL, resultsFuncs, ResultsPropertyNames);
return s_objectClass; return s_objectClass;
} }

View File

@ -43,10 +43,11 @@ inline T RJSGetInternal(JSObjectRef jsObject) {
} }
template<typename T> template<typename T>
JSClassRef RJSCreateWrapperClass(const char * name, JSObjectGetPropertyCallback getter = NULL, JSObjectSetPropertyCallback setter = NULL, const JSStaticFunction *funcs = NULL, JSObjectFinalizeCallback finalize = RJSFinalize<T>, JSObjectGetPropertyNamesCallback propertyNames = NULL) { JSClassRef RJSCreateWrapperClass(const char * name, JSObjectGetPropertyCallback getter = NULL, JSObjectSetPropertyCallback setter = NULL, const JSStaticFunction *funcs = NULL,
JSObjectGetPropertyNamesCallback propertyNames = NULL) {
JSClassDefinition classDefinition = kJSClassDefinitionEmpty; JSClassDefinition classDefinition = kJSClassDefinitionEmpty;
classDefinition.className = name; classDefinition.className = name;
classDefinition.finalize = finalize; classDefinition.finalize = RJSFinalize<T>;
classDefinition.getProperty = getter; classDefinition.getProperty = getter;
classDefinition.setProperty = setter; classDefinition.setProperty = setter;
classDefinition.staticFunctions = funcs; classDefinition.staticFunctions = funcs;