diff options
author | 2013-03-29 20:03:14 -0700 | |
---|---|---|
committer | 2013-03-29 20:03:14 -0700 | |
commit | c51a8a2b44e6934de9d45d74ddec4b70b00f1abb (patch) | |
tree | eec1e324fa1384f054aa8f73a52ec11c1e9dc396 /src/objc | |
parent | 8adf0c2d16d1567ff830bf72460cb75deb7eb022 (diff) |
Build for iOS.
Diffstat (limited to 'src/objc')
-rw-r--r-- | src/objc/utils/MCOObjectWrapper.mm | 15 | ||||
-rw-r--r-- | src/objc/utils/NSArray+MCO.mm | 5 | ||||
-rw-r--r-- | src/objc/utils/NSData+MCO.mm | 5 | ||||
-rw-r--r-- | src/objc/utils/NSDictionary+MCO.mm | 5 | ||||
-rw-r--r-- | src/objc/utils/NSObject+MCO.mm | 20 | ||||
-rw-r--r-- | src/objc/utils/NSString+MCO.mm | 5 | ||||
-rw-r--r-- | src/objc/utils/NSValue+MCO.mm | 5 |
7 files changed, 57 insertions, 3 deletions
diff --git a/src/objc/utils/MCOObjectWrapper.mm b/src/objc/utils/MCOObjectWrapper.mm index e4fda2ae..e0a162b4 100644 --- a/src/objc/utils/MCOObjectWrapper.mm +++ b/src/objc/utils/MCOObjectWrapper.mm @@ -8,13 +8,26 @@ #import "MCOObjectWrapper.h" +#include <typeinfo> + #include "MCUtils.h" -#include "MCObject.h" +#include "MCBaseTypes.h" + +#import "NSObject+MCO.h" @implementation MCOObjectWrapper { mailcore::Object * mObject; } ++ (void) load +{ + MCORegisterClass([NSValue class], &typeid(mailcore::Value)); + MCORegisterClass([NSData class], &typeid(mailcore::Data)); + MCORegisterClass([NSString class], &typeid(mailcore::String)); + MCORegisterClass([NSDictionary class], &typeid(mailcore::HashMap)); + MCORegisterClass([NSArray class], &typeid(mailcore::Array)); +} + - (void) dealloc { MC_SAFE_RELEASE(mObject); diff --git a/src/objc/utils/NSArray+MCO.mm b/src/objc/utils/NSArray+MCO.mm index 4b9eaab7..0b8b21bf 100644 --- a/src/objc/utils/NSArray+MCO.mm +++ b/src/objc/utils/NSArray+MCO.mm @@ -14,6 +14,11 @@ @implementation NSArray (MCO) ++ (id) mco_objectWithMCObject:(mailcore::Object *)object +{ + return [self mco_arrayWithMCArray:(mailcore::Array *) object]; +} + + (NSArray *) mco_arrayWithMCArray:(mailcore::Array *)array { NSMutableArray * result = [NSMutableArray array]; diff --git a/src/objc/utils/NSData+MCO.mm b/src/objc/utils/NSData+MCO.mm index dd279554..daea94c9 100644 --- a/src/objc/utils/NSData+MCO.mm +++ b/src/objc/utils/NSData+MCO.mm @@ -12,6 +12,11 @@ @implementation NSData (MCO) ++ (id) mco_objectWithMCObject:(mailcore::Object *)object +{ + return [self mco_dataWithMCData:(mailcore::Data *) object]; +} + + (NSData *) mco_dataWithMCData:(mailcore::Data *)cppData { if (cppData == NULL) diff --git a/src/objc/utils/NSDictionary+MCO.mm b/src/objc/utils/NSDictionary+MCO.mm index 8ba2f7a5..5745955a 100644 --- a/src/objc/utils/NSDictionary+MCO.mm +++ b/src/objc/utils/NSDictionary+MCO.mm @@ -14,6 +14,11 @@ @implementation NSDictionary (MCO) ++ (id) mco_objectWithMCObject:(mailcore::Object *)object +{ + return [self mco_dictionaryWithMCHashMap:(mailcore::HashMap *) object]; +} + + (NSDictionary *) mco_dictionaryWithMCHashMap:(mailcore::HashMap *)hashmap { NSMutableDictionary * result = [NSMutableDictionary dictionary]; diff --git a/src/objc/utils/NSObject+MCO.mm b/src/objc/utils/NSObject+MCO.mm index 27a9befe..5f1726e2 100644 --- a/src/objc/utils/NSObject+MCO.mm +++ b/src/objc/utils/NSObject+MCO.mm @@ -31,11 +31,16 @@ void MCORegisterClass(Class aClass, const std::type_info * info) { init(); - size_t hash_value = info->hash_code(); chashdatum key; chashdatum value; +#ifdef __LIBCPP_TYPEINFO + size_t hash_value = info->hash_code(); key.data = &hash_value; key.len = sizeof(hash_value); +#else + key.data = (void *) info->name(); + key.len = strlen(info->name()); +#endif value.data = aClass; value.len = 0; chash_set(classHash, &key, &value, NULL); @@ -45,12 +50,17 @@ static Class classWithTypeInfo(const std::type_info * info) { init(); - size_t hash_value = info->hash_code(); int r; chashdatum key; chashdatum value; +#ifdef __LIBCPP_TYPEINFO + size_t hash_value = info->hash_code(); key.data = &hash_value; key.len = sizeof(hash_value); +#else + key.data = (void *) info->name(); + key.len = strlen(info->name()); +#endif r = chash_get(classHash, &key, &value); if (r < 0) return nil; @@ -66,6 +76,7 @@ static Class classWithTypeInfo(const std::type_info * info) return nil; //fprintf(stderr, "typeid: %i %i\n", typeid(* object).hash_code(), typeid(mailcore::Array).hash_code()); +#ifdef __LIBCPP_TYPEINFO size_t objectType = typeid(* object).hash_code(); if (objectType == typeid(mailcore::Value).hash_code()) { return [NSValue mco_valueWithMCValue:(mailcore::Value *) object]; @@ -87,6 +98,11 @@ static Class classWithTypeInfo(const std::type_info * info) MCAssert(aClass != nil); return [aClass mco_objectWithMCObject:object]; } +#else + Class aClass = classWithTypeInfo(&typeid(* object)); + MCAssert(aClass != nil); + return [aClass mco_objectWithMCObject:object]; +#endif } - (mailcore::Object *) mco_mcObject diff --git a/src/objc/utils/NSString+MCO.mm b/src/objc/utils/NSString+MCO.mm index 3d692b76..3b8253ce 100644 --- a/src/objc/utils/NSString+MCO.mm +++ b/src/objc/utils/NSString+MCO.mm @@ -12,6 +12,11 @@ @implementation NSString (MCO) ++ (id) mco_objectWithMCObject:(mailcore::Object *)object +{ + return [self mco_stringWithMCString:(mailcore::String *) object]; +} + + (NSString *) mco_stringWithMCString:(mailcore::String *)cppString { if (cppString == NULL) diff --git a/src/objc/utils/NSValue+MCO.mm b/src/objc/utils/NSValue+MCO.mm index 81bcebd7..9781534a 100644 --- a/src/objc/utils/NSValue+MCO.mm +++ b/src/objc/utils/NSValue+MCO.mm @@ -14,6 +14,11 @@ @implementation NSValue (MCO) ++ (id) mco_objectWithMCObject:(mailcore::Object *)object +{ + return [self mco_valueWithMCValue:(mailcore::Value *) object]; +} + + (NSNumber *) mco_valueWithMCValue:(mailcore::Value *)value { switch (value->type()) { |