aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objc/imap/MCOIMAPIdentity.mm
blob: 0beb092b5cdc20422e5943059ecda72e9fa2172f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
//
//  MCOIMAPIdentity.m
//  mailcore2
//
//  Created by Hoa V. DINH on 8/24/13.
//  Copyright (c) 2013 MailCore. All rights reserved.
//

#import "MCOIMAPIdentity.h"
#import "NSObject+MCO.h"
#import "NSString+MCO.h"

#include "MCIMAPIdentity.h"

#define nativeType mailcore::IMAPIdentity

@implementation MCOIMAPIdentity {
	mailcore::IMAPIdentity * _nativeIdentity;
}

+ (void) load
{
    MCORegisterClass(self, &typeid(nativeType));
}

- (id) initWithMCIdentity:(mailcore::IMAPIdentity *)identity
{
    self = [super init];
    
    identity->retain();
    _nativeIdentity = identity;
    
    return self;
}

- (void) dealloc
{
    MC_SAFE_RELEASE(_nativeIdentity);
    [super dealloc];
}

+ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object
{
    mailcore::IMAPIdentity * identity = (mailcore::IMAPIdentity *) object;
    return [[[self alloc] initWithMCIdentity:identity] autorelease];
}

- (mailcore::Object *) mco_mcObject
{
    return _nativeIdentity;
}

- (id) copyWithZone:(NSZone *)zone
{
    nativeType * nativeObject = (nativeType *) [self mco_mcObject]->copy();
    id result = [[self class] mco_objectWithMCObject:nativeObject];
    MC_SAFE_RELEASE(nativeObject);
    return [result retain];
}

- (NSString *) description
{
    return MCO_OBJC_BRIDGE_GET(description);
}

MCO_OBJC_SYNTHESIZE_STRING(setVendor, vendor)
MCO_OBJC_SYNTHESIZE_STRING(setName, name)
MCO_OBJC_SYNTHESIZE_STRING(setVersion, version)

- (NSArray *) allInfoKeys
{
    return MCO_OBJC_BRIDGE_GET(allInfoKeys);
}

- (NSString *) infoForKey:(NSString *)key
{
    return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->infoForKey([key mco_mcString]));
}

- (void) setInfo:(NSString *)value forKey:(NSString *)key
{
    MCO_NATIVE_INSTANCE->setInfoForKey([key mco_mcString], [value mco_mcString]);
}

+ (MCOIMAPIdentity *) identityWithVendor:(NSString *)vendor
                                    name:(NSString *)name
                                 version:(NSString *)version
{
    MCOIMAPIdentity * identity = [[[MCOIMAPIdentity alloc] init] autorelease];
    [identity setVendor:vendor];
    [identity setName:name];
    [identity setVersion:version];
    return identity;
}

@end