/
MOMapTable.h
149 lines (129 loc) · 3.27 KB
/
MOMapTable.h
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
//
// MOMapTable.h
// Mocha
//
// Created by Logan Collins on 8/6/12.
// Copyright (c) 2012 Sunflower Softworks. All rights reserved.
//
#import <Foundation/Foundation.h>
/*!
* @class MOMapTable
* @abstract A lightweight object map table
*
* @discussion
* MOMapTable is useful in situations where object-to-object hashes are desired.
* NSDictionary is not always sufficient due to the fact that keys must be copyable.
* NSMapTable is not available on iOS 5 and earlier.
*
* Note: MOMapTable is *not* a zeroing-weak collection.
*/
@interface MOMapTable : NSObject <NSFastEnumeration> {
CFMutableDictionaryRef _dictionary;
}
/*!
* @method mapTableWithStrongToStrongObjects
* @abstract Creates a new map table that strongly retains both its keys and values
*
* @result A MOMapTable object
*/
+ (MOMapTable *)mapTableWithStrongToStrongObjects;
/*!
* @method mapTableWithStrongToUnretainedObjects
* @abstract Creates a new map table that strongly retains its keys
*
* @result A MOMapTable object
*/
+ (MOMapTable *)mapTableWithStrongToUnretainedObjects;
/*!
* @method mapTableWithUnretainedToStrongObjects
* @abstract Creates a new map table that strongly retains its values
*
* @result A MOMapTable object
*/
+ (MOMapTable *)mapTableWithUnretainedToStrongObjects;
/*!
* @method mapTableWithUnretainedToUnretainedObjects
* @abstract Creates a new map table that does not strongly retains its keys or values
*
* @result A MOMapTable object
*/
+ (MOMapTable *)mapTableWithUnretainedToUnretainedObjects;
/*!
* @method keyEnumerator
* @abstract Gets an enumerator for the collection's key values
*
* @result An NSEnumerator object
*/
- (NSEnumerator *)keyEnumerator;
/*!
* @method objectEnumerator
* @abstract Gets an enumerator for the collection's object values
*
* @result An NSEnumerator object
*/
- (NSEnumerator *)objectEnumerator;
/*!
* @method count
* @abstract The number of objects in the map table
*
* @result An NSUInteger value
*/
- (NSUInteger)count;
/*!
* @method allKeys
* @abstract Gets all key objects
*
* @result An NSArray object
*/
- (NSArray *)allKeys;
/*!
* @method allValues
* @abstract Gets all value objects
*
* @result An NSArray object
*/
- (NSArray *)allObjects;
/*!
* @method objectForKey:
* @abstract Gets the object for a particular key
*
* @discussion
* If an object with the specified key is not in the collection
* this method returns nil.
*
* @result An object, or nil
*/
- (id)objectForKey:(id)key;
/*!
* @method setObject:forKey:
* @abstract Sets an object for a particular key
*
* @param value
* The value to set
*
* @param key
* The key to set
*
* @discussion
* If an object already exists for the specified key it is replaced.
* If value or key is nil this method raises an NSInvalidArgumentException.
*/
- (void)setObject:(id)value forKey:(id)key;
/*!
* @method removeObjectForKey:
* @abstract Removes the object for a particular key
*
* @param key
* The key to set
*
* @discussion
* If no object exists for the specified key this method has no effect.
* If key is nil this method raises an NSInvalidArgumentException.
*/
- (void)removeObjectForKey:(id)key;
/*!
* @method removeAllObjects
* @abstract Removes all objects from the collection
*/
- (void)removeAllObjects;
@end