aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objc/utils/MCOObjectWrapper.mm
blob: e0a162b4dfc2c9dd4247f5892eb4d43fcb45260b (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
//
//  MCOObjectWrapper.m
//  mailcore2
//
//  Created by DINH Viêt Hoà on 1/25/13.
//  Copyright (c) 2013 MailCore. All rights reserved.
//

#import "MCOObjectWrapper.h"

#include <typeinfo>

#include "MCUtils.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);
    [super dealloc];
}

+ (MCOObjectWrapper *) objectWrapperWithObject:(mailcore::Object *)object
{
    MCOObjectWrapper * wrapper = [[MCOObjectWrapper alloc] init];
    [wrapper setObject:object];
    return [wrapper autorelease];
}

- (void) setObject:(mailcore::Object *)object
{
    MC_SAFE_RELEASE(mObject);
    mObject = object;
    MC_SAFE_RETAIN(mObject);
}

- (mailcore::Object *) object
{
    return mObject;
}

@end