diff options
author | 2013-05-04 23:17:33 -0700 | |
---|---|---|
committer | 2013-05-04 23:17:33 -0700 | |
commit | 55f998e5076e6ee5607580a56bdac68e605e1050 (patch) | |
tree | 8313b526775f494806ff82f67d0f6e31e39ab6bb /src/objc/provider | |
parent | cf0e72e7f751413c57b0a2dd1c7adcf7e1a37c38 (diff) |
Cleaned provider implementation
Diffstat (limited to 'src/objc/provider')
-rw-r--r-- | src/objc/provider/MCOMailProvider.mm | 42 | ||||
-rw-r--r-- | src/objc/provider/MCOMailProvidersManager.h | 2 | ||||
-rw-r--r-- | src/objc/provider/MCOMailProvidersManager.mm | 22 | ||||
-rw-r--r-- | src/objc/provider/MCONetService.h | 12 | ||||
-rw-r--r-- | src/objc/provider/MCONetService.mm | 31 |
5 files changed, 47 insertions, 62 deletions
diff --git a/src/objc/provider/MCOMailProvider.mm b/src/objc/provider/MCOMailProvider.mm index 4eb5f9fb..e8d80407 100644 --- a/src/objc/provider/MCOMailProvider.mm +++ b/src/objc/provider/MCOMailProvider.mm @@ -7,16 +7,27 @@ // #import "MCOMailProvider.h" + +#include <typeinfo> + #include "MCMailProvider.h" #import "NSDictionary+MCO.h" #import "NSArray+MCO.h" #import "NSString+MCO.h" +#import "NSObject+MCO.h" @implementation MCOMailProvider { mailcore::MailProvider * _provider; } +#define nativeType mailcore::MailProvider + ++ (void) load +{ + MCORegisterClass(self, &typeid(nativeType)); +} + - (mailcore::Object *) mco_mcObject { return _provider; @@ -25,40 +36,42 @@ + (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object { mailcore::MailProvider * provider = (mailcore::MailProvider *) object; - return [[self alloc] initWithProvider:provider]; + return [[self alloc] initWithMCProvider:provider]; } - (id) initWithInfo:(NSDictionary *)info { self = [super init]; - _provider = new mailcore::MailProvider([info mco_mcHashMap]); + _provider = mailcore::MailProvider::providerWithInfo([info mco_mcHashMap]); + _provider->retain(); return self; } -- (id) initWithProvider:(mailcore::MailProvider *)provider +- (id) initWithMCProvider:(mailcore::MailProvider *)provider { self = [super init]; _provider = provider; + _provider->retain(); return self; } - (NSArray *) imapServices { - return [NSArray mco_arrayWithMCArray:_provider->imapServices()]; + return MCO_OBJC_BRIDGE_GET(imapServices); } - (NSArray *) smtpServices { - return [NSArray mco_arrayWithMCArray:_provider->smtpServices()]; + return MCO_OBJC_BRIDGE_GET(smtpServices); } - (NSArray *) popServices { - return [NSArray mco_arrayWithMCArray:_provider->popServices()]; + return MCO_OBJC_BRIDGE_GET(popServices); } - (BOOL) matchEmail:(NSString *)email @@ -73,40 +86,41 @@ - (NSString *) sentMailFolderPath { - return [NSString mco_stringWithMCString:_provider->sentMailFolderPath()]; + return MCO_OBJC_BRIDGE_GET(sentMailFolderPath); } - (NSString *) starredFolderPath { - return [NSString mco_stringWithMCString:_provider->starredFolderPath()]; + return MCO_OBJC_BRIDGE_GET(starredFolderPath); } - (NSString *) allMailFolderPath { - return [NSString mco_stringWithMCString:_provider->allMailFolderPath()]; + return MCO_OBJC_BRIDGE_GET(allMailFolderPath); } - (NSString *) trashFolderPath { - return [NSString mco_stringWithMCString:_provider->trashFolderPath()]; + return MCO_OBJC_BRIDGE_GET(trashFolderPath); } - (NSString *) draftsFolderPath { - return [NSString mco_stringWithMCString:_provider->draftsFolderPath()]; + return MCO_OBJC_BRIDGE_GET(draftsFolderPath); } - (NSString *) spamFolderPath { - return [NSString mco_stringWithMCString:_provider->spamFolderPath()]; + return MCO_OBJC_BRIDGE_GET(spamFolderPath); } - (NSString *) importantFolderPath { - return [NSString mco_stringWithMCString:_provider->spamFolderPath()]; + return MCO_OBJC_BRIDGE_GET(importantFolderPath); } -- (BOOL) isMainFolder:(NSString *)folderPath prefix:(NSString *)prefix { +- (BOOL) isMainFolder:(NSString *)folderPath prefix:(NSString *)prefix +{ return _provider->isMainFolder(folderPath.mco_mcString, prefix.mco_mcString); } diff --git a/src/objc/provider/MCOMailProvidersManager.h b/src/objc/provider/MCOMailProvidersManager.h index 55b5e6af..78d10ff2 100644 --- a/src/objc/provider/MCOMailProvidersManager.h +++ b/src/objc/provider/MCOMailProvidersManager.h @@ -17,7 +17,5 @@ - (MCOMailProvider *) providerForEmail:(NSString *)email; - (MCOMailProvider *) providerForMX:(NSString *)hostname; - (MCOMailProvider *) providerForIdentifier:(NSString *)identifier; -- (void) registerProviders:(NSDictionary *)providers; -- (void) registerProvidersFilename:(NSString *)filename; @end diff --git a/src/objc/provider/MCOMailProvidersManager.mm b/src/objc/provider/MCOMailProvidersManager.mm index f7b11cb9..8f12aa11 100644 --- a/src/objc/provider/MCOMailProvidersManager.mm +++ b/src/objc/provider/MCOMailProvidersManager.mm @@ -18,7 +18,7 @@ + (MCOMailProvidersManager *) sharedManager { - static MCOMailProvidersManager *sharedInstance = nil; + static MCOMailProvidersManager * sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [[self alloc] init]; \ @@ -31,39 +31,29 @@ NSString * filename; self = [super init]; - + filename = [[NSBundle bundleForClass:[self class]] pathForResource:@"providers" ofType:@"json"]; - [self registerProvidersFilename:filename]; + mailcore::MailProvidersManager::sharedManager()->registerProvidersWithFilename(filename.mco_mcString); return self; } -- (void) registerProviders:(NSDictionary *)providers -{ - mailcore::MailProvidersManager::sharedManager()->registerProviders(providers.mco_mcHashMap); -} - -- (void) registerProvidersFilename:(NSString *)filename -{ - mailcore::MailProvidersManager::sharedManager()->registerProvidersFilename(filename.mco_mcString); -} - - (MCOMailProvider *) providerForEmail:(NSString *)email { mailcore::MailProvider *provider = mailcore::MailProvidersManager::sharedManager()->providerForEmail(email.mco_mcString); - return [MCOMailProvider mco_objectWithMCObject:(mailcore::Object *) provider]; + return MCO_TO_OBJC(provider); } - (MCOMailProvider *) providerForMX:(NSString *)hostname { mailcore::MailProvider *provider = mailcore::MailProvidersManager::sharedManager()->providerForMX(hostname.mco_mcString); - return [MCOMailProvider mco_objectWithMCObject:(mailcore::Object *) provider]; + return MCO_TO_OBJC(provider); } - (MCOMailProvider *) providerForIdentifier:(NSString *)identifier { mailcore::MailProvider *provider = mailcore::MailProvidersManager::sharedManager()->providerForIdentifier(identifier.mco_mcString); - return [MCOMailProvider mco_objectWithMCObject:(mailcore::Object *) provider]; + return MCO_TO_OBJC(provider); } @end diff --git a/src/objc/provider/MCONetService.h b/src/objc/provider/MCONetService.h index e1e02141..06a9f2af 100644 --- a/src/objc/provider/MCONetService.h +++ b/src/objc/provider/MCONetService.h @@ -7,21 +7,15 @@ // #import <Foundation/Foundation.h> - -typedef enum { - MCONetServiceConnectionTypeClear = 1 << 0, - MCONetServiceConnectionTypeStartTLS = 1 << 1, - MCONetServiceConnectionTypeTLS = 1 << 2, - MCONetServiceConnectionTypeMask = (MCONetServiceConnectionTypeClear | MCONetServiceConnectionTypeStartTLS | MCONetServiceConnectionTypeTLS) -} MCONetServiceConnectionType; +#import <MailCore/MCOConstants.h> @interface MCONetService : NSObject @property (nonatomic, copy) NSString * hostname; @property (nonatomic, assign) unsigned int port; -@property (nonatomic, assign) MCONetServiceConnectionType connectionType; +@property (nonatomic, assign) MCOConnectionType connectionType; -+ (MCONetService *) netServiceWithInfo:(NSDictionary *)info; ++ (MCONetService *) serviceWithInfo:(NSDictionary *)info; - (id) initWithInfo:(NSDictionary *)info; - (NSDictionary *) info; diff --git a/src/objc/provider/MCONetService.mm b/src/objc/provider/MCONetService.mm index eb2ad6f5..614e2337 100644 --- a/src/objc/provider/MCONetService.mm +++ b/src/objc/provider/MCONetService.mm @@ -11,11 +11,14 @@ #import "NSDictionary+MCO.h" #import "NSString+MCO.h" +#import "NSObject+MCO.h" @implementation MCONetService { mailcore::NetService * _netService; } +#define nativeType mailcore::NetService + - (mailcore::Object *) mco_mcObject { return _netService; @@ -29,14 +32,15 @@ + (MCONetService *) netServiceWithInfo:(NSDictionary *)info { - return [[[MCONetService alloc] initWithInfo:info] autorelease]; + return [[[self alloc] initWithInfo:info] autorelease]; } - (id) initWithInfo:(NSDictionary *)info { self = [super init]; - _netService = new mailcore::NetService(info.mco_mcHashMap); + _netService = mailcore::NetService::serviceWithInfo(info.mco_mcHashMap); + _netService->retain(); return self; } @@ -46,29 +50,14 @@ self = [super init]; _netService = netService; + _netService->retain(); return self; } -- (void) setHostname:(NSString *)hostname { - _netService->setHostname(hostname.mco_mcString); -} - -- (NSString *) hostname { - return [NSString mco_stringWithMCString:_netService->hostname()]; -} - -- (void) setPort:(unsigned int)port { - _netService->setPort(port); -} - -- (unsigned int) port { - return _netService->port(); -} - -- (MCONetServiceConnectionType) connectionType { - return (MCONetServiceConnectionType) _netService->connectionType(); -} +MCO_OBJC_SYNTHESIZE_STRING(setHostname, hostname) +MCO_OBJC_SYNTHESIZE_SCALAR(unsigned int, unsigned int, setPort, port) +MCO_OBJC_SYNTHESIZE_SCALAR(MCOConnectionType, mailcore::ConnectionType, setConnectionType, connectionType) - (NSDictionary *) info { |