]> git.saurik.com Git - cycript.git/commitdiff
Remove CYJavaValue and (almost) CYPrivate as base.
authorJay Freeman (saurik) <saurik@saurik.com>
Thu, 7 Jan 2016 03:36:12 +0000 (19:36 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Thu, 7 Jan 2016 03:36:12 +0000 (19:36 -0800)
Execute.cpp
Internal.hpp
Java/Execute.cpp
ObjectiveC/Internal.hpp
ObjectiveC/Library.mm

index f620f385c0457e10f432d213f09ebc61c35cd27b..db6c5baeba38e3e187e3ffa91d8afe3ce35019e4 100644 (file)
@@ -227,7 +227,7 @@ sig::Type *Structor_(CYPool &pool, sig::Aggregate *aggregate) {
 }
 
 struct Context :
-    CYPrivate<Context>
+    CYRoot
 {
     JSGlobalContextRef context_;
 
@@ -238,7 +238,7 @@ struct Context :
 };
 
 struct CArray :
-    CYPrivate<CArray>
+    CYRoot
 {
     void *value_;
     CYProtect owner_;
@@ -261,7 +261,7 @@ struct CArray :
 };
 
 struct CString :
-    CYPrivate<CString>
+    CYRoot
 {
     char *value_;
     CYProtect owner_;
@@ -276,7 +276,7 @@ struct CString :
 };
 
 struct Pointer :
-    CYPrivate<Pointer>
+    CYRoot
 {
     void *value_;
     CYProtect owner_;
@@ -298,7 +298,7 @@ struct Pointer :
 };
 
 struct Struct_privateData :
-    CYPrivate<Struct_privateData>
+    CYRoot
 {
     void *value_;
     CYProtect owner_;
@@ -635,7 +635,7 @@ static JSValueRef String_callAsFunction_toCYON(JSContextRef context, JSObjectRef
 } CYCatch(NULL) }
 
 JSObjectRef CYMakePointer(JSContextRef context, void *pointer, const sig::Type &type, ffi_type *ffi, JSObjectRef owner) {
-    return Pointer::Make(context, pointer, type, context, owner);
+    return CYPrivate<Pointer>::Make(context, pointer, type, context, owner);
 }
 
 static JSValueRef CYMakeFunctor(JSContextRef context, void (*function)(), bool variadic, const sig::Signature &signature) {
@@ -667,7 +667,7 @@ void *CYCastPointer_(JSContextRef context, JSValueRef value, bool *guess) {
             return NULL;
         case kJSTypeObject: {
             JSObjectRef object((JSObjectRef) value);
-            if (JSValueIsObjectOfClass(context, value, Pointer::Class_)) {
+            if (JSValueIsObjectOfClass(context, value, CYPrivate<Pointer>::Class_)) {
                 Pointer *internal(reinterpret_cast<Pointer *>(JSObjectGetPrivate(object)));
                 return internal->value_;
             }
@@ -862,7 +862,7 @@ JSValueRef Unknown::FromFFI(JSContextRef context, ffi_type *ffi, void *data, boo
 
 JSValueRef String::FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const {
     if (char *value = *reinterpret_cast<char **>(data))
-        return CString::Make(context, value, context, owner);
+        return CYPrivate<CString>::Make(context, value, context, owner);
     return CYJSNull(context);
 }
 
@@ -877,7 +877,7 @@ JSValueRef Pointer::FromFFI(JSContextRef context, ffi_type *ffi, void *data, boo
 }
 
 JSValueRef Array::FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const {
-    return CArray::Make(context, data, size, type, ffi->elements[0], context, owner);
+    return CYPrivate<CArray>::Make(context, data, size, type, ffi->elements[0], context, owner);
 }
 
 JSValueRef Enum::FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const {
@@ -887,7 +887,7 @@ JSValueRef Enum::FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool i
 JSValueRef Aggregate::FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const {
     _assert(!overlap);
     _assert(signature.count != _not(size_t));
-    return Struct_privateData::Make(context, data, *this, ffi, context, owner);
+    return CYPrivate<Struct_privateData>::Make(context, data, *this, ffi, context, owner);
 }
 
 JSValueRef Function::FromFFI(JSContextRef context, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) const {
@@ -1206,7 +1206,7 @@ static sig::Type *CYGetType(CYPool &pool, JSContextRef context, JSValueRef value
         return &PointerToVoid_;
     JSObjectRef object(CYCastJSObject(context, value));
     JSObjectRef type(CYCastJSObject(context, CYGetProperty(context, object, cyt_s)));
-    _assert(JSValueIsObjectOfClass(context, type, Type_privateData::Class_));
+    _assert(JSValueIsObjectOfClass(context, type, CYPrivate<Type_privateData>::Class_));
     Type_privateData *internal(reinterpret_cast<Type_privateData *>(JSObjectGetPrivate(type)));
     return internal->type_;
 }
@@ -1283,7 +1283,7 @@ static JSValueRef Pointer_callAsFunction(JSContextRef context, JSObjectRef objec
 } CYCatch(NULL) }
 
 JSObjectRef CYMakeType(JSContextRef context, const sig::Type &type) {
-    return Type_privateData::Make(context, type);
+    return CYPrivate<Type_privateData>::Make(context, type);
 }
 
 extern "C" bool CYBridgeHash(CYPool &pool, CYUTF8String name, const char *&code, unsigned &flags) {
@@ -1513,7 +1513,7 @@ static JSObjectRef Type_new(JSContextRef context, JSObjectRef object, size_t cou
                 element.name = CYPoolCString(pool, context, name);
 
             JSObjectRef object(CYCastJSObject(context, CYArrayGet(context, types, i)));
-            _assert(JSValueIsObjectOfClass(context, object, Type_privateData::Class_));
+            _assert(JSValueIsObjectOfClass(context, object, CYPrivate<Type_privateData>::Class_));
             Type_privateData *internal(reinterpret_cast<Type_privateData *>(JSObjectGetPrivate(object)));
             element.type = internal->type_;
             _assert(element.type != NULL);
@@ -1543,7 +1543,7 @@ static JSValueRef Type_callAsFunction_$With(JSContextRef context, JSObjectRef ob
         element.offset = _not(size_t);
 
         JSObjectRef object(CYCastJSObject(context, arguments[i]));
-        _assert(JSValueIsObjectOfClass(context, object, Type_privateData::Class_));
+        _assert(JSValueIsObjectOfClass(context, object, CYPrivate<Type_privateData>::Class_));
         Type_privateData *internal(reinterpret_cast<Type_privateData *>(JSObjectGetPrivate(object)));
 
         element.type = internal->type_;
@@ -2091,7 +2091,7 @@ void CYInitializeDynamic() {
     definition = kJSClassDefinitionEmpty;
     definition.className = "Context";
     definition.finalize = &CYFinalize;
-    Context::Class_ = JSClassCreate(&definition);
+    CYPrivate<Context>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.className = "CArray";
@@ -2100,7 +2100,7 @@ void CYInitializeDynamic() {
     definition.getProperty = &CArray_getProperty;
     definition.setProperty = &CArray_setProperty;
     definition.finalize = &CYFinalize;
-    CArray::Class_ = JSClassCreate(&definition);
+    CYPrivate<CArray>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.className = "CString";
@@ -2109,7 +2109,7 @@ void CYInitializeDynamic() {
     definition.getProperty = &CString_getProperty;
     definition.setProperty = &CString_setProperty;
     definition.finalize = &CYFinalize;
-    CString::Class_ = JSClassCreate(&definition);
+    CYPrivate<CString>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.className = "Functor";
@@ -2127,7 +2127,7 @@ void CYInitializeDynamic() {
     definition.getProperty = &Pointer_getProperty;
     definition.setProperty = &Pointer_setProperty;
     definition.finalize = &CYFinalize;
-    Pointer::Class_ = JSClassCreate(&definition);
+    CYPrivate<Pointer>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.className = "Struct";
@@ -2137,7 +2137,7 @@ void CYInitializeDynamic() {
     definition.setProperty = &Struct_setProperty;
     definition.getPropertyNames = &Struct_getPropertyNames;
     definition.finalize = &CYFinalize;
-    Struct_privateData::Class_ = JSClassCreate(&definition);
+    CYPrivate<Struct_privateData>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.className = "Type";
@@ -2146,7 +2146,7 @@ void CYInitializeDynamic() {
     definition.callAsFunction = &Type_callAsFunction;
     definition.callAsConstructor = &Type_callAsConstructor;
     definition.finalize = &CYFinalize;
-    Type_privateData::Class_ = JSClassCreate(&definition);
+    CYPrivate<Type_privateData>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.className = "Global";
@@ -2372,7 +2372,7 @@ extern "C" void CYSetupContext(JSGlobalContextRef context) {
 
     JSObjectRef global(CYGetGlobalObject(context));
 
-    JSObjectRef cy(Context::Make(context, context));
+    JSObjectRef cy(CYPrivate<Context>::Make(context, context));
     CYSetProperty(context, global, cy_s, cy, kJSPropertyAttributeDontEnum);
 
 /* Cache Globals {{{ */
@@ -2430,11 +2430,11 @@ extern "C" void CYSetupContext(JSGlobalContextRef context) {
     CYSetProperty(context, cycript, CYJSString("compile"), &Cycript_compile_callAsFunction);
     CYSetProperty(context, cycript, CYJSString("gc"), &Cycript_gc_callAsFunction);
 
-    JSObjectRef CArray(JSObjectMakeConstructor(context, CArray::Class_, &CArray_new));
+    JSObjectRef CArray(JSObjectMakeConstructor(context, CYPrivate<::CArray>::Class_, &CArray_new));
     CYSetPrototype(context, CYCastJSObject(context, CYGetProperty(context, CArray, prototype_s)), Array_prototype);
     CYSetProperty(context, cycript, CYJSString("CArray"), CArray);
 
-    JSObjectRef CString(JSObjectMakeConstructor(context, CString::Class_, &CString_new));
+    JSObjectRef CString(JSObjectMakeConstructor(context, CYPrivate<::CString>::Class_, &CString_new));
     CYSetPrototype(context, CYCastJSObject(context, CYGetProperty(context, CString, prototype_s)), String_prototype);
     CYSetProperty(context, cycript, CYJSString("CString"), CString);
 
@@ -2442,8 +2442,8 @@ extern "C" void CYSetupContext(JSGlobalContextRef context) {
     CYSetPrototype(context, CYCastJSObject(context, CYGetProperty(context, Functor, prototype_s)), Function_prototype);
     CYSetProperty(context, cycript, CYJSString("Functor"), Functor);
 
-    CYSetProperty(context, cycript, CYJSString("Pointer"), JSObjectMakeConstructor(context, Pointer::Class_, &Pointer_new));
-    CYSetProperty(context, cycript, CYJSString("Type"), JSObjectMakeConstructor(context, Type_privateData::Class_, &Type_new));
+    CYSetProperty(context, cycript, CYJSString("Pointer"), JSObjectMakeConstructor(context, CYPrivate<Pointer>::Class_, &Pointer_new));
+    CYSetProperty(context, cycript, CYJSString("Type"), JSObjectMakeConstructor(context, CYPrivate<Type_privateData>::Class_, &Type_new));
 
     JSObjectRef modules(JSObjectMake(context, NULL, NULL));
     CYSetProperty(context, cy, CYJSString("modules"), modules);
index b4acd1871de7dfd158f8439680263d1cacf49f94..e0193128ef5e0e8d0d9faad80e839aeefa4cc328 100644 (file)
@@ -39,15 +39,19 @@ sig::Type *Structor_(CYPool &pool, sig::Aggregate *aggregate);
 
 extern JSClassRef Functor_;
 
-template <typename Internal_>
-struct CYPrivate :
+struct CYRoot :
     CYData
 {
-    static JSClassRef Class_;
-
     _finline JSValueRef GetPrototype(JSContextRef context) const {
         return NULL;
     }
+};
+
+template <typename Internal_, typename Base_ = CYRoot>
+struct CYPrivateOld :
+    Base_
+{
+    static JSClassRef Class_;
 
     template <typename... Args_>
     _finline static JSClassRef GetClass(Args_ &&... args) {
@@ -69,8 +73,33 @@ struct CYPrivate :
     }
 };
 
+template <typename Internal_, typename Base_>
+JSClassRef CYPrivateOld<Internal_, Base_>::Class_;
+
+template <typename Internal_>
+struct CYPrivate {
+    static JSClassRef Class_;
+
+    template <typename... Args_>
+    static JSObjectRef Make(JSContextRef context, Args_ &&... args) {
+        Internal_ *internal(new Internal_(cy::Forward<Args_>(args)...));
+        JSObjectRef object(JSObjectMake(context, Class_, internal));
+        if (JSValueRef prototype = internal->GetPrototype(context))
+            CYSetPrototype(context, object, prototype);
+        return object;
+    }
+
+    static Internal_ *Get(JSContextRef context, JSObjectRef object) {
+        _assert(JSValueIsObjectOfClass(context, object, Class_));
+        return static_cast<Internal_ *>(JSObjectGetPrivate(object));
+    }
+};
+
+template <typename Internal_>
+JSClassRef CYPrivate<Internal_>::Class_;
+
 struct Type_privateData :
-    CYPrivate<Type_privateData>
+    CYRoot
 {
     ffi_type *ffi_;
     sig::Type *type_;
@@ -117,9 +146,6 @@ struct Type_privateData :
     }
 };
 
-template <typename Internal_>
-JSClassRef CYPrivate<Internal_>::Class_;
-
 struct CYProtect {
   private:
     JSGlobalContextRef context_;
@@ -156,7 +182,7 @@ struct CYProtect {
 
 namespace cy {
 struct Functor :
-    CYPrivate<Functor>
+    CYRoot
 {
   private:
     void set() {
index d9eb1e6e2246f4a401660fb100ee9a2b92e815b9..c7ecbb1e7a874170835eb2198a688532099e2619 100644 (file)
@@ -449,20 +449,6 @@ static CYJavaLocal<jstring> CYCastJavaString(const CYJavaRef<jobject> &value) {
     return jni.CallObjectMethod<jstring>(value, Object$toString);
 }
 
-template <typename Internal_, typename Value_>
-struct CYJavaValue :
-    CYPrivate<Internal_>
-{
-    CYJavaGlobal<Value_> value_;
-
-    CYJavaValue(const CYJavaRef<Value_> &value) :
-        value_(value)
-    {
-    }
-
-    CYJavaValue(const CYJavaValue &) = delete;
-};
-
 static JSValueRef CYCastJSValue(JSContextRef context, const CYJavaRef<jobject> &value);
 
 template <typename Other_>
@@ -540,7 +526,7 @@ struct CYJavaSignature {
 typedef std::multiset<CYJavaSignature> CYJavaOverload;
 
 struct CYJavaMethod :
-    CYPrivate<CYJavaMethod>
+    CYRoot
 {
     CYJavaOverload overload_;
 
@@ -551,7 +537,7 @@ struct CYJavaMethod :
 };
 
 struct CYJavaStaticMethod :
-    CYPrivate<CYJavaStaticMethod>
+    CYRoot
 {
     CYJavaOverload overload_;
 
@@ -562,8 +548,9 @@ struct CYJavaStaticMethod :
 };
 
 struct CYJavaClass :
-    CYJavaValue<CYJavaClass, jclass>
+    CYRoot
 {
+    CYJavaGlobal<jclass> value_;
     bool interface_;
 
     CYJavaFieldMap static_;
@@ -571,7 +558,7 @@ struct CYJavaClass :
     CYJavaOverload overload_;
 
     CYJavaClass(const CYJavaRef<jclass> &value, bool interface) :
-        CYJavaValue(value),
+        value_(value),
         interface_(interface)
     {
     }
@@ -580,12 +567,13 @@ struct CYJavaClass :
 static JSObjectRef CYGetJavaClass(JSContextRef context, const CYJavaRef<jclass> &_class);
 
 struct CYJavaObject :
-    CYJavaValue<CYJavaObject, jobject>
+    CYRoot
 {
+    CYJavaGlobal<jobject> value_;
     CYJavaClass *table_;
 
     CYJavaObject(const CYJavaRef<jobject> &value, CYJavaClass *table) :
-        CYJavaValue(value),
+        value_(value),
         table_(table)
     {
     }
@@ -594,36 +582,39 @@ struct CYJavaObject :
 };
 
 struct CYJavaInterior :
-    CYJavaValue<CYJavaInterior, jobject>
+    CYRoot
 {
+    CYJavaGlobal<jobject> value_;
     CYJavaClass *table_;
 
     CYJavaInterior(const CYJavaRef<jobject> &value, CYJavaClass *table) :
-        CYJavaValue(value),
+        value_(value),
         table_(table)
     {
     }
 };
 
 struct CYJavaStaticInterior :
-    CYJavaValue<CYJavaStaticInterior, jclass>
+    CYRoot
 {
+    CYJavaGlobal<jclass> value_;
     CYJavaClass *table_;
 
     CYJavaStaticInterior(const CYJavaRef<jclass> &value, CYJavaClass *table) :
-        CYJavaValue(value),
+        value_(value),
         table_(table)
     {
     }
 };
 
 struct CYJavaArray :
-    CYJavaValue<CYJavaArray, jarray>
+    CYRoot
 {
+    CYJavaGlobal<jarray> value_;
     CYJavaPrimitive primitive_;
 
     CYJavaArray(const CYJavaRef<jarray> &value, CYJavaPrimitive primitive) :
-        CYJavaValue(value),
+        value_(value),
         primitive_(primitive)
     {
     }
@@ -632,7 +623,7 @@ struct CYJavaArray :
 };
 
 struct CYJavaPackage :
-    CYPrivate<CYJavaPackage>
+    CYRoot
 {
     JNIEnv *jni_;
 
@@ -670,7 +661,7 @@ static JSValueRef CYCastJSValue(JSContextRef context, const CYJavaRef<jobject> &
         auto Class$getComponentType(jni.GetMethodID(Class$, "getComponentType", "()Ljava/lang/Class;"));
         auto component(jni.CallObjectMethod<jclass>(_class, Class$getComponentType));
         auto Class$getName(jni.GetMethodID(Class$, "getName", "()Ljava/lang/String;"));
-        return CYJavaArray::Make(context, value.cast<jarray>(), CYJavaGetPrimitive(context, component, Class$getName));
+        return CYPrivate<CYJavaArray>::Make(context, value.cast<jarray>(), CYJavaGetPrimitive(context, component, Class$getName));
     }
 
     auto Wrapper$(jni.FindClass("Cycript$Wrapper"));
@@ -681,7 +672,7 @@ static JSValueRef CYCastJSValue(JSContextRef context, const CYJavaRef<jobject> &
     }
 
     CYJavaClass *table(reinterpret_cast<CYJavaClass *>(JSObjectGetPrivate(CYGetJavaClass(context, _class))));
-    return CYJavaObject::Make(context, value, table);
+    return CYPrivate<CYJavaObject>::Make(context, value, table);
 }
 
 static _finline JSObjectRef CYCastJSObject(JSContextRef context, const CYJavaRef<jobject> &value) {
@@ -713,13 +704,13 @@ CYCastJava$(F, Float, jfloat, CYCastDouble)
 CYCastJava$(D, Double, jdouble, CYCastDouble)
 
 static CYJavaClass *CYGetJavaTable(JSContextRef context, JSObjectRef object) {
-    if (!JSValueIsObjectOfClass(context, object, CYJavaClass::Class_))
+    if (!JSValueIsObjectOfClass(context, object, CYPrivate<CYJavaClass>::Class_))
         return NULL;
     return reinterpret_cast<CYJavaClass *>(JSObjectGetPrivate(object));
 }
 
 static CYJavaObject *CYGetJavaObject(JSContextRef context, JSObjectRef object) {
-    if (!JSValueIsObjectOfClass(context, object, CYJavaObject::Class_))
+    if (!JSValueIsObjectOfClass(context, object, CYPrivate<CYJavaObject>::Class_))
         return NULL;
     return reinterpret_cast<CYJavaObject *>(JSObjectGetPrivate(object));
 }
@@ -817,7 +808,7 @@ static JSObjectRef CYGetJavaClass(JSContextRef context, const CYJavaRef<jclass>
         }
     }
 
-    constructor = JSObjectMake(context, CYJavaClass::Class_, table);
+    constructor = JSObjectMake(context, CYPrivate<CYJavaClass>::Class_, table);
 
     prototype = JSObjectMake(context, NULL, NULL);
     CYSetProperty(context, constructor, prototype_s, prototype, kJSPropertyAttributeDontEnum);
@@ -854,9 +845,9 @@ static JSObjectRef CYGetJavaClass(JSContextRef context, const CYJavaRef<jclass>
         CYJSString name(entry.first.second);
         auto &overload(entry.second);
         if (instance)
-            CYSetProperty(context, prototype, name, CYJavaMethod::Make(context, overload), kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete);
+            CYSetProperty(context, prototype, name, CYPrivate<CYJavaMethod>::Make(context, overload), kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete);
         else
-            CYSetProperty(context, constructor, name, CYJavaStaticMethod::Make(context, overload), kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete);
+            CYSetProperty(context, constructor, name, CYPrivate<CYJavaStaticMethod>::Make(context, overload), kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete);
     }
 
     }
@@ -941,7 +932,7 @@ static bool CYCastJavaArguments(const CYJavaFrame &frame, const CYJavaShorty &sh
 }
 
 static JSValueRef JavaMethod_callAsFunction(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
-    auto internal(CYJavaMethod::Get(context, object));
+    auto internal(CYPrivate<CYJavaMethod>::Get(context, object));
     CYJavaObject *self(CYGetJavaObject(context, _this));
     _assert(self != NULL);
     CYJavaEnv jni(self->value_);
@@ -972,7 +963,7 @@ CYJavaForEachPrimitive
 } CYCatch(NULL) }
 
 static JSValueRef JavaStaticMethod_callAsFunction(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
-    auto internal(CYJavaStaticMethod::Get(context, object));
+    auto internal(CYPrivate<CYJavaStaticMethod>::Get(context, object));
     CYJavaClass *table(CYGetJavaTable(context, _this));
     CYJavaEnv jni(table->value_);
 
@@ -1002,7 +993,7 @@ CYJavaForEachPrimitive
 } CYCatch(NULL) }
 
 static JSObjectRef JavaClass_callAsConstructor(JSContextRef context, JSObjectRef object, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
-    auto table(CYJavaClass::Get(context, object));
+    auto table(CYPrivate<CYJavaClass>::Get(context, object));
     CYJavaEnv jni(table->value_);
     jclass _class(table->value_);
 
@@ -1027,7 +1018,7 @@ static JSObjectRef JavaClass_callAsConstructor(JSContextRef context, JSObjectRef
 } CYCatch(NULL) }
 
 static bool JavaStaticInterior_hasProperty(JSContextRef context, JSObjectRef object, JSStringRef property) {
-    auto internal(CYJavaStaticInterior::Get(context, object));
+    auto internal(CYPrivate<CYJavaStaticInterior>::Get(context, object));
     CYJavaClass *table(internal->table_);
     CYPool pool;
     auto name(CYPoolUTF8String(pool, context, property));
@@ -1038,7 +1029,7 @@ static bool JavaStaticInterior_hasProperty(JSContextRef context, JSObjectRef obj
 }
 
 static JSValueRef JavaStaticInterior_getProperty(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) { CYTry {
-    auto internal(CYJavaStaticInterior::Get(context, object));
+    auto internal(CYPrivate<CYJavaStaticInterior>::Get(context, object));
     CYJavaClass *table(internal->table_);
     CYJavaEnv jni(table->value_);
     CYPool pool;
@@ -1060,7 +1051,7 @@ CYJavaForEachPrimitive
 } CYCatch(NULL) }
 
 static bool JavaStaticInterior_setProperty(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef value, JSValueRef *exception) { CYTry {
-    auto internal(CYJavaStaticInterior::Get(context, object));
+    auto internal(CYPrivate<CYJavaStaticInterior>::Get(context, object));
     CYJavaClass *table(internal->table_);
     CYJavaEnv jni(table->value_);
     CYPool pool;
@@ -1085,19 +1076,19 @@ CYJavaForEachPrimitive
 } CYCatch(false) }
 
 static void JavaStaticInterior_getPropertyNames(JSContextRef context, JSObjectRef object, JSPropertyNameAccumulatorRef names) {
-    auto internal(CYJavaStaticInterior::Get(context, object));
+    auto internal(CYPrivate<CYJavaStaticInterior>::Get(context, object));
     CYJavaClass *table(internal->table_);
     for (const auto &field : table->static_)
         JSPropertyNameAccumulatorAddName(names, CYJSString(field.first));
 }
 
 static JSValueRef JavaClass_getProperty_class(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) { CYTry {
-    auto table(CYJavaClass::Get(context, object));
+    auto table(CYPrivate<CYJavaClass>::Get(context, object));
     return CYCastJSValue(context, table->value_);
 } CYCatch(NULL) }
 
 static bool JavaInterior_hasProperty(JSContextRef context, JSObjectRef object, JSStringRef property) {
-    auto internal(CYJavaInterior::Get(context, object));
+    auto internal(CYPrivate<CYJavaInterior>::Get(context, object));
     CYJavaClass *table(internal->table_);
     CYPool pool;
     auto name(CYPoolUTF8String(pool, context, property));
@@ -1108,7 +1099,7 @@ static bool JavaInterior_hasProperty(JSContextRef context, JSObjectRef object, J
 }
 
 static JSValueRef JavaInterior_getProperty(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) { CYTry {
-    auto internal(CYJavaInterior::Get(context, object));
+    auto internal(CYPrivate<CYJavaInterior>::Get(context, object));
     CYJavaEnv jni(internal->value_);
     CYJavaClass *table(internal->table_);
     CYPool pool;
@@ -1130,7 +1121,7 @@ CYJavaForEachPrimitive
 } CYCatch(NULL) }
 
 static bool JavaInterior_setProperty(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef value, JSValueRef *exception) { CYTry {
-    auto internal(CYJavaInterior::Get(context, object));
+    auto internal(CYPrivate<CYJavaInterior>::Get(context, object));
     CYJavaEnv jni(internal->value_);
     CYJavaClass *table(internal->table_);
     CYPool pool;
@@ -1155,30 +1146,30 @@ CYJavaForEachPrimitive
 } CYCatch(false) }
 
 static void JavaInterior_getPropertyNames(JSContextRef context, JSObjectRef object, JSPropertyNameAccumulatorRef names) {
-    auto internal(CYJavaInterior::Get(context, object));
+    auto internal(CYPrivate<CYJavaInterior>::Get(context, object));
     CYJavaClass *table(internal->table_);
     for (const auto &field : table->instance_)
         JSPropertyNameAccumulatorAddName(names, CYJSString(field.first));
 }
 
 static JSValueRef JavaObject_getProperty_constructor(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) { CYTry {
-    auto internal(CYJavaObject::Get(context, object));
+    auto internal(CYPrivate<CYJavaObject>::Get(context, object));
     CYJavaEnv jni(internal->value_);
     return CYGetJavaClass(context, jni.GetObjectClass(internal->value_));
 } CYCatch(NULL) }
 
 static JSValueRef JavaClass_getProperty_$cyi(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) { CYTry {
-    auto internal(CYJavaClass::Get(context, object));
-    return CYJavaStaticInterior::Make(context, internal->value_, internal);
+    auto internal(CYPrivate<CYJavaClass>::Get(context, object));
+    return CYPrivate<CYJavaStaticInterior>::Make(context, internal->value_, internal);
 } CYCatch(NULL) }
 
 static JSValueRef JavaObject_getProperty_$cyi(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) { CYTry {
-    auto internal(CYJavaObject::Get(context, object));
-    return CYJavaInterior::Make(context, internal->value_, internal->table_);
+    auto internal(CYPrivate<CYJavaObject>::Get(context, object));
+    return CYPrivate<CYJavaInterior>::Make(context, internal->value_, internal->table_);
 } CYCatch(NULL) }
 
 static JSValueRef JavaClass_callAsFunction_toCYON(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
-    auto internal(CYJavaClass::Get(context, _this));
+    auto internal(CYPrivate<CYJavaClass>::Get(context, _this));
     CYJavaEnv jni(internal->value_);
     auto Class$(jni.FindClass("java/lang/Class"));
     auto Class$getCanonicalName(jni.GetMethodID(Class$, "getCanonicalName", "()Ljava/lang/String;"));
@@ -1196,7 +1187,7 @@ static JSValueRef JavaStaticMethod_callAsFunction_toCYON(JSContextRef context, J
 } CYCatch(NULL) }
 
 static JSValueRef JavaArray_getProperty(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) { CYTry {
-    auto internal(CYJavaArray::Get(context, object));
+    auto internal(CYPrivate<CYJavaArray>::Get(context, object));
     CYJavaEnv jni(internal->value_);
     if (JSStringIsEqual(property, length_s))
         return CYCastJSValue(context, jni.GetArrayLength(internal->value_));
@@ -1222,7 +1213,7 @@ CYJavaForEachPrimitive
 } CYCatch(NULL) }
 
 static bool JavaArray_setProperty(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef value, JSValueRef *exception) { CYTry {
-    auto internal(CYJavaArray::Get(context, object));
+    auto internal(CYPrivate<CYJavaArray>::Get(context, object));
     CYJavaEnv jni(internal->value_);
 
     CYPool pool;
@@ -1250,7 +1241,7 @@ CYJavaForEachPrimitive
 static JNIEnv *GetJNI(JSContextRef context, JNIEnv *&env);
 
 static JSValueRef JavaPackage_callAsFunction_toCYON(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
-    auto internal(CYJavaPackage::Get(context, _this));
+    auto internal(CYPrivate<CYJavaPackage>::Get(context, _this));
     std::ostringstream name;
     for (auto &package : internal->package_)
         name << package << '.';
@@ -1263,7 +1254,7 @@ static bool CYJavaPackage_hasProperty(JSContextRef context, JSObjectRef object,
 }
 
 static JSValueRef CYJavaPackage_getProperty(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) { CYTry {
-    auto internal(CYJavaPackage::Get(context, object));
+    auto internal(CYPrivate<CYJavaPackage>::Get(context, object));
     CYJavaPackage::Path package(internal->package_);
 
     CYPool pool;
@@ -1283,7 +1274,7 @@ static JSValueRef CYJavaPackage_getProperty(JSContextRef context, JSObjectRef ob
     jni->ExceptionClear();
 
     package.push_back(next);
-    return CYJavaPackage::Make(context, jni, package);
+    return CYPrivate<CYJavaPackage>::Make(context, jni, package);
 } CYCatch(NULL) }
 
 static void Cycript_delete(JNIEnv *env, jclass api, jlong jprotect) { CYJavaTry {
@@ -1539,7 +1530,7 @@ CYJavaForEachPrimitive
     definition.staticFunctions = JavaClass_staticFunctions;
     definition.callAsConstructor = &JavaClass_callAsConstructor;
     definition.finalize = &CYFinalize;
-    CYJavaClass::Class_ = JSClassCreate(&definition);
+    CYPrivate<CYJavaClass>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.attributes = kJSClassAttributeNoAutomaticPrototype;
@@ -1549,35 +1540,35 @@ CYJavaForEachPrimitive
     definition.setProperty = &JavaInterior_setProperty;
     definition.getPropertyNames = &JavaInterior_getPropertyNames;
     definition.finalize = &CYFinalize;
-    CYJavaInterior::Class_ = JSClassCreate(&definition);
+    CYPrivate<CYJavaInterior>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.className = "JavaMethod";
     definition.staticFunctions = JavaMethod_staticFunctions;
     definition.callAsFunction = &JavaMethod_callAsFunction;
     definition.finalize = &CYFinalize;
-    CYJavaMethod::Class_ = JSClassCreate(&definition);
+    CYPrivate<CYJavaMethod>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.className = "JavaStaticMethod";
     definition.staticFunctions = JavaStaticMethod_staticFunctions;
     definition.callAsFunction = &JavaStaticMethod_callAsFunction;
     definition.finalize = &CYFinalize;
-    CYJavaStaticMethod::Class_ = JSClassCreate(&definition);
+    CYPrivate<CYJavaStaticMethod>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.attributes = kJSClassAttributeNoAutomaticPrototype;
     definition.className = "JavaObject";
     definition.staticValues = JavaObject_staticValues;
     definition.finalize = &CYFinalize;
-    CYJavaObject::Class_ = JSClassCreate(&definition);
+    CYPrivate<CYJavaObject>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.className = "JavaArray";
     definition.getProperty = &JavaArray_getProperty;
     definition.setProperty = &JavaArray_setProperty;
     definition.finalize = &CYFinalize;
-    CYJavaArray::Class_ = JSClassCreate(&definition);
+    CYPrivate<CYJavaArray>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.className = "JavaPackage";
@@ -1585,7 +1576,7 @@ CYJavaForEachPrimitive
     definition.hasProperty = &CYJavaPackage_hasProperty;
     definition.getProperty = &CYJavaPackage_getProperty;
     definition.finalize = &CYFinalize;
-    CYJavaPackage::Class_ = JSClassCreate(&definition);
+    CYPrivate<CYJavaPackage>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.attributes = kJSClassAttributeNoAutomaticPrototype;
@@ -1595,7 +1586,7 @@ CYJavaForEachPrimitive
     definition.setProperty = &JavaStaticInterior_setProperty;
     definition.getPropertyNames = &JavaStaticInterior_getPropertyNames;
     definition.finalize = &CYFinalize;
-    CYJavaStaticInterior::Class_ = JSClassCreate(&definition);
+    CYPrivate<CYJavaStaticInterior>::Class_ = JSClassCreate(&definition);
 }
 
 void CYJava_SetupContext(JSContextRef context) {
@@ -1609,12 +1600,12 @@ void CYJava_SetupContext(JSContextRef context) {
     CYSetProperty(context, cycript, CYJSString("Java"), Java);
     CYSetProperty(context, cy, CYJSString("Java"), Java);
 
-    JSObjectRef Packages(CYJavaPackage::Make(context, nullptr, CYJavaPackage::Path()));
+    JSObjectRef Packages(CYPrivate<CYJavaPackage>::Make(context, nullptr, CYJavaPackage::Path()));
     CYSetProperty(context, all, CYJSString("Packages"), Packages, kJSPropertyAttributeDontEnum);
 
     for (auto name : (const char *[]) {"java", "javax", "android", "com", "net", "org"}) {
         CYJSString js(name);
-        CYSetProperty(context, all, js, CYJavaPackage::Make(context, nullptr, CYJavaPackage::Path(1, name)), kJSPropertyAttributeDontEnum);
+        CYSetProperty(context, all, js, CYPrivate<CYJavaPackage>::Make(context, nullptr, CYJavaPackage::Path(1, name)), kJSPropertyAttributeDontEnum);
     }
 }
 
index 356f61bbdfe3bd6e20f982c1e59153b709c12a72..3a297752e0b881ba73cd5a90bae62e3c693943d3 100644 (file)
@@ -27,7 +27,7 @@
 #include "../Internal.hpp"
 
 struct Selector_privateData :
-    CYPrivate<Selector_privateData>
+    CYRoot
 {
     SEL value_;
 
@@ -38,7 +38,7 @@ struct Selector_privateData :
 };
 
 struct Instance :
-    CYPrivate<Instance>
+    CYPrivateOld<Instance>
 {
     typedef unsigned Flags;
     static const Flags None = 0;
@@ -66,7 +66,7 @@ struct Instance :
 
 namespace cy {
 struct Super :
-    CYPrivate<Super>
+    CYRoot
 {
     id value_;
     Class class_;
@@ -79,7 +79,7 @@ struct Super :
 }; }
 
 struct Messages :
-    CYPrivate<Messages>
+    CYRoot
 {
     Class value_;
 
@@ -92,7 +92,7 @@ struct Messages :
 };
 
 struct Interior :
-    CYPrivate<Interior>
+    CYRoot
 {
     id value_;
     CYProtect owner_;
index 6f7c0e6db826fcefd82cacbb5b9055a71f4cab29..ca3662bc5cb8a7a17077153a3c57a36e4130f04c 100644 (file)
@@ -330,7 +330,7 @@ _finline JSValueRef CYGetClassPrototype(JSContextRef context, Class self) {
 
 JSValueRef Messages::GetPrototype(JSContextRef context) const {
     if (Class super = class_getSuperclass(value_))
-        return Messages::Make(context, super);
+        return CYPrivate<Messages>::Make(context, super);
     return NULL;
 }
 
@@ -1471,11 +1471,11 @@ JSValueRef CYCastJSValue(JSContextRef context, NSObject *value) {
 static JSValueRef CYCastJSValue(JSContextRef context, SEL sel) {
     if (sel == NULL)
         return CYJSNull(context);
-    return Selector_privateData::Make(context, sel);
+    return CYPrivate<Selector_privateData>::Make(context, sel);
 }
 
 static SEL CYCastSEL(JSContextRef context, JSValueRef value) {
-    if (JSValueIsObjectOfClass(context, value, Selector_privateData::Class_)) {
+    if (JSValueIsObjectOfClass(context, value, CYPrivate<Selector_privateData>::Class_)) {
         Selector_privateData *internal(reinterpret_cast<Selector_privateData *>(JSObjectGetPrivate((JSObjectRef) value)));
         return reinterpret_cast<SEL>(internal->value_);
     } else {
@@ -1776,7 +1776,7 @@ static JSValueRef Instance_getProperty(JSContextRef context, JSObjectRef object,
     id self(internal->value_);
 
     if (JSStringIsEqualToUTF8CString(property, "$cyi"))
-        return Interior::Make(context, self, context, object);
+        return CYPrivate<Interior>::Make(context, self, context, object);
 
     CYPool pool;
     NSString *name(CYCastNSString(&pool, context, property));
@@ -2462,7 +2462,7 @@ static JSValueRef $objc_msgSend(JSContextRef context, JSObjectRef object, JSObje
     SEL _cmd;
     Class _class;
 
-    if (JSValueIsObjectOfClass(context, arguments[0], cy::Super::Class_)) {
+    if (JSValueIsObjectOfClass(context, arguments[0], CYPrivate<cy::Super>::Class_)) {
         cy::Super *internal(reinterpret_cast<cy::Super *>(JSObjectGetPrivate((JSObjectRef) arguments[0])));
         self = internal->value_;
         _class = internal->class_;;
@@ -2520,7 +2520,7 @@ static JSObjectRef Super_new(JSContextRef context, JSObjectRef object, size_t co
     CYPool pool;
     id self(CYCastNSObject(&pool, context, arguments[0]));
     Class _class(CYCastClass(pool, context, arguments[1]));
-    return cy::Super::Make(context, self, _class);
+    return CYPrivate<cy::Super>::Make(context, self, _class);
 } CYCatch(NULL) }
 
 static JSObjectRef Selector_new(JSContextRef context, JSObjectRef object, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
@@ -2528,7 +2528,7 @@ static JSObjectRef Selector_new(JSContextRef context, JSObjectRef object, size_t
         throw CYJSError(context, "incorrect number of arguments to Selector constructor");
     CYPool pool;
     const char *name(CYPoolCString(pool, context, arguments[0]));
-    return Selector_privateData::Make(context, sel_registerName(name));
+    return CYPrivate<Selector_privateData>::Make(context, sel_registerName(name));
 } CYCatch(NULL) }
 
 static JSObjectRef Instance_new(JSContextRef context, JSObjectRef object, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
@@ -2576,7 +2576,7 @@ static JSValueRef Instance_getProperty_messages(JSContextRef context, JSObjectRe
     id self(internal->value_);
     if (!CYIsClass(self))
         return CYJSUndefined(context);
-    return Messages::Make(context, (Class) self);
+    return CYPrivate<Messages>::Make(context, (Class) self);
 } CYCatch(NULL) }
 
 static JSValueRef Instance_callAsFunction_toCYON(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
@@ -2830,7 +2830,7 @@ void CYObjectiveC_Initialize() { /*XXX*/ JSContextRef context(NULL); CYPoolTry {
     definition.setProperty = &Interior_setProperty;
     definition.getPropertyNames = &Interior_getPropertyNames;
     definition.finalize = &CYFinalize;
-    Interior::Class_ = JSClassCreate(&definition);
+    CYPrivate<Interior>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.className = "Message";
@@ -2847,7 +2847,7 @@ void CYObjectiveC_Initialize() { /*XXX*/ JSContextRef context(NULL); CYPoolTry {
     definition.setProperty = &Messages_setProperty;
     definition.getPropertyNames = &Messages_getPropertyNames;
     definition.finalize = &CYFinalize;
-    Messages::Class_ = JSClassCreate(&definition);
+    CYPrivate<Messages>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.className = "Selector";
@@ -2855,12 +2855,12 @@ void CYObjectiveC_Initialize() { /*XXX*/ JSContextRef context(NULL); CYPoolTry {
     definition.staticFunctions = Selector_staticFunctions;
     definition.callAsFunction = &Selector_callAsFunction;
     definition.finalize = &CYFinalize;
-    Selector_privateData::Class_ = JSClassCreate(&definition);
+    CYPrivate<Selector_privateData>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.className = "Super";
     definition.finalize = &CYFinalize;
-    cy::Super::Class_ = JSClassCreate(&definition);
+    CYPrivate<cy::Super>::Class_ = JSClassCreate(&definition);
 
     definition = kJSClassDefinitionEmpty;
     definition.className = "ObjectiveC::Classes";
@@ -2934,8 +2934,8 @@ void CYObjectiveC_SetupContext(JSContextRef context) { CYPoolTry {
 #endif
 
     JSObjectRef Message(JSObjectMakeConstructor(context, Message_privateData::Class_, NULL));
-    JSObjectRef Selector(JSObjectMakeConstructor(context, Selector_privateData::Class_, &Selector_new));
-    JSObjectRef Super(JSObjectMakeConstructor(context, cy::Super::Class_, &Super_new));
+    JSObjectRef Selector(JSObjectMakeConstructor(context, CYPrivate<Selector_privateData>::Class_, &Selector_new));
+    JSObjectRef Super(JSObjectMakeConstructor(context, CYPrivate<cy::Super>::Class_, &Super_new));
 
     JSObjectRef Instance(JSObjectMakeConstructor(context, Instance::Class_, &Instance_new));
     JSObjectRef Instance_prototype(CYCastJSObject(context, CYGetProperty(context, Instance, prototype_s)));