aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2014-01-30 23:37:54 -0800
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2014-01-30 23:37:54 -0800
commit0f09edb01731f9ed0a9c5b6946e261322ad808fe (patch)
tree04d49575ea4be57c9c0218cef09678b8a97a3926
parentfeb34ca2dee213eb430309ad2a770631f4fb4631 (diff)
Added Set to Obj-C bridging
-rwxr-xr-xbuild-mac/mailcore2.xcodeproj/project.pbxproj8
-rw-r--r--src/objc/utils/NSObject+MCO.mm7
-rw-r--r--src/objc/utils/NSSet+MCO.h25
-rw-r--r--src/objc/utils/NSSet+MCO.mm45
4 files changed, 85 insertions, 0 deletions
diff --git a/build-mac/mailcore2.xcodeproj/project.pbxproj b/build-mac/mailcore2.xcodeproj/project.pbxproj
index b75a25b0..0db54b8b 100755
--- a/build-mac/mailcore2.xcodeproj/project.pbxproj
+++ b/build-mac/mailcore2.xcodeproj/project.pbxproj
@@ -124,6 +124,8 @@
C63D316317C92D8300A4D993 /* MCOIMAPIdentity.mm in Sources */ = {isa = PBXBuildFile; fileRef = C63D316117C92D8300A4D993 /* MCOIMAPIdentity.mm */; };
C63D316617C997B400A4D993 /* MCOIMAPIdentity.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C63D316017C92D8300A4D993 /* MCOIMAPIdentity.h */; };
C63D316717C997BA00A4D993 /* MCOIMAPIdentity.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C63D316017C92D8300A4D993 /* MCOIMAPIdentity.h */; };
+ C643F492189A3D59007EA2F7 /* NSSet+MCO.mm in Sources */ = {isa = PBXBuildFile; fileRef = C643F491189A3D59007EA2F7 /* NSSet+MCO.mm */; };
+ C643F493189A3D59007EA2F7 /* NSSet+MCO.mm in Sources */ = {isa = PBXBuildFile; fileRef = C643F491189A3D59007EA2F7 /* NSSet+MCO.mm */; };
C64BB22116E34DCB000DB34C /* MCIMAPSyncResult.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64BB21F16E34DCA000DB34C /* MCIMAPSyncResult.cc */; };
C64BB22B16E5C0A4000DB34C /* MCIMAPCapabilityOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64BB22916E5C0A3000DB34C /* MCIMAPCapabilityOperation.cc */; };
C64BB22E16E5C1EE000DB34C /* MCIndexSet.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64BB22C16E5C1EE000DB34C /* MCIndexSet.cc */; };
@@ -1250,6 +1252,8 @@
C63D315B17C9155C00A4D993 /* MCIMAPIdentity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPIdentity.h; sourceTree = "<group>"; };
C63D316017C92D8300A4D993 /* MCOIMAPIdentity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOIMAPIdentity.h; sourceTree = "<group>"; };
C63D316117C92D8300A4D993 /* MCOIMAPIdentity.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOIMAPIdentity.mm; sourceTree = "<group>"; };
+ C643F490189A3D59007EA2F7 /* NSSet+MCO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSSet+MCO.h"; sourceTree = "<group>"; };
+ C643F491189A3D59007EA2F7 /* NSSet+MCO.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSSet+MCO.mm"; sourceTree = "<group>"; };
C64BB21F16E34DCA000DB34C /* MCIMAPSyncResult.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPSyncResult.cc; sourceTree = "<group>"; };
C64BB22016E34DCB000DB34C /* MCIMAPSyncResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPSyncResult.h; sourceTree = "<group>"; };
C64BB22916E5C0A3000DB34C /* MCIMAPCapabilityOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPCapabilityOperation.cc; sourceTree = "<group>"; };
@@ -2195,6 +2199,8 @@
C6CCC5C816FFE54F0077A5FC /* MCORange.h */,
C69BA85917DEFCCB00D601B7 /* NSIndexSet+MCO.h */,
C69BA85A17DEFCCB00D601B7 /* NSIndexSet+MCO.m */,
+ C643F490189A3D59007EA2F7 /* NSSet+MCO.h */,
+ C643F491189A3D59007EA2F7 /* NSSet+MCO.mm */,
);
path = utils;
sourceTree = "<group>";
@@ -2613,6 +2619,7 @@
C64EA81D16A29DC500778456 /* MCIMAPFetchContentOperation.cc in Sources */,
C64EA82016A29E4100778456 /* MCIMAPStoreFlagsOperation.cc in Sources */,
C64EA82316A29E5300778456 /* MCIMAPStoreLabelsOperation.cc in Sources */,
+ C643F492189A3D59007EA2F7 /* NSSet+MCO.mm in Sources */,
C64EA82616A29EE500778456 /* MCIMAPSearchOperation.cc in Sources */,
C6E665BD1796500C0063F2CF /* zip.c in Sources */,
C64EA82916A29F2200778456 /* MCIMAPIdleOperation.cc in Sources */,
@@ -2818,6 +2825,7 @@
C6BA2BCE1705F4E6003F0E9E /* MCIMAPFetchContentOperation.cc in Sources */,
C6BA2BCF1705F4E6003F0E9E /* MCIMAPStoreFlagsOperation.cc in Sources */,
C6BA2BD01705F4E6003F0E9E /* MCIMAPStoreLabelsOperation.cc in Sources */,
+ C643F493189A3D59007EA2F7 /* NSSet+MCO.mm in Sources */,
C6BA2BD11705F4E6003F0E9E /* MCIMAPSearchOperation.cc in Sources */,
C6E665BE1796500C0063F2CF /* zip.c in Sources */,
C6BA2BD21705F4E6003F0E9E /* MCIMAPIdleOperation.cc in Sources */,
diff --git a/src/objc/utils/NSObject+MCO.mm b/src/objc/utils/NSObject+MCO.mm
index 9c6f4fa7..4887080f 100644
--- a/src/objc/utils/NSObject+MCO.mm
+++ b/src/objc/utils/NSObject+MCO.mm
@@ -15,6 +15,7 @@
#import "NSDictionary+MCO.h"
#import "NSArray+MCO.h"
#import "NSValue+MCO.h"
+#import "NSSet+MCO.h"
#include "MCBaseTypes.h"
#include "MCUtils.h"
@@ -95,6 +96,9 @@ static Class classWithTypeInfo(const std::type_info * info)
else if (objectType == typeid(mailcore::Array).hash_code()) {
return [NSArray mco_arrayWithMCArray:(mailcore::Array *) object];
}
+ else if (objectType == typeid(mailcore::Set).hash_code()) {
+ return [NSSet mco_setWithMCSet:(mailcore::Set *) object];
+ }
else {
Class aClass = classWithTypeInfo(&typeid(* object));
MCAssert(aClass != nil);
@@ -124,6 +128,9 @@ static Class classWithTypeInfo(const std::type_info * info)
else if ([self isKindOfClass:[NSDictionary class]]) {
return [(NSDictionary *) self mco_mcHashMap];
}
+ else if ([self isKindOfClass:[NSSet class]]) {
+ return [(NSSet *) self mco_mcSet];
+ }
else {
MCAssert(0);
return nil;
diff --git a/src/objc/utils/NSSet+MCO.h b/src/objc/utils/NSSet+MCO.h
new file mode 100644
index 00000000..17bd1bf4
--- /dev/null
+++ b/src/objc/utils/NSSet+MCO.h
@@ -0,0 +1,25 @@
+//
+// NSSet+MCO.h
+// mailcore2
+//
+// Created by Hoa V. DINH on 1/29/14.
+// Copyright (c) 2014 MailCore. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#ifdef __cplusplus
+namespace mailcore {
+ class Set;
+}
+#endif
+
+@interface NSSet (MCO)
+
+#ifdef __cplusplus
++ (NSSet *) mco_setWithMCSet:(mailcore::Set *)cppSet;
+
+- (mailcore::Set *) mco_mcSet;
+#endif
+
+@end
diff --git a/src/objc/utils/NSSet+MCO.mm b/src/objc/utils/NSSet+MCO.mm
new file mode 100644
index 00000000..690cfe77
--- /dev/null
+++ b/src/objc/utils/NSSet+MCO.mm
@@ -0,0 +1,45 @@
+//
+// NSSet+MCO.m
+// mailcore2
+//
+// Created by Hoa V. DINH on 1/29/14.
+// Copyright (c) 2014 MailCore. All rights reserved.
+//
+
+#import "NSSet+MCO.h"
+
+#include "MCSet.h"
+#include "MCArray.h"
+#import "NSObject+MCO.h"
+
+@implementation NSSet (MCO)
+
++ (id) mco_objectWithMCObject:(mailcore::Object *)object
+{
+ return [self mco_setWithMCSet:(mailcore::Set *) object];
+}
+
++ (NSSet *) mco_setWithMCSet:(mailcore::Set *)cppSet
+{
+ if (cppSet == NULL)
+ return nil;
+
+ NSMutableSet * result = [NSMutableSet set];
+ mailcore::Array * array = cppSet->allObjects();
+ for(unsigned int i = 0 ; i < array->count() ; i ++) {
+ [result addObject:[NSObject mco_objectWithMCObject:array->objectAtIndex(i)]];
+ }
+ return result;
+}
+
+- (mailcore::Set *) mco_mcSet
+{
+ mailcore::Set * result = mailcore::Set::set();
+ NSArray * array = [self allObjects];
+ for(unsigned int i = 0 ; i < [array count] ; i ++) {
+ result->addObject([[array objectAtIndex:i] mco_mcObject]);
+ }
+ return result;
+}
+
+@end