vvopensource
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Properties Macros Groups Pages
MutLockArray.h
1 #if IPHONE
2 #import <UIKit/UIKit.h>
3 #else
4 #import <Cocoa/Cocoa.h>
5 #endif
6 #import <pthread.h>
7 
8 
9 
11 
20 @interface MutLockArray : NSObject {
21  NSMutableArray *array;
22  pthread_rwlock_t arrayLock;
23 }
24 
26 + (id) arrayWithCapacity:(NSInteger)c;
28 - (id) initWithCapacity:(NSInteger)c;
29 - (id) init;
30 
32 - (void) rdlock;
33 - (BOOL) tryRdLock; // returns YES if i got a read-lock successfully!
35 - (void) wrlock;
37 - (void) unlock;
38 
40 - (NSMutableArray *) array;
42 - (NSMutableArray *) createArrayCopy;
44 - (NSMutableArray *) lockCreateArrayCopy;
45 
47 - (void) addObject:(id)o;
49 - (void) lockAddObject:(id)o;
51 - (void) addObjectsFromArray:(id)a;
53 - (void) lockAddObjectsFromArray:(id)a;
55 - (void) replaceWithObjectsFromArray:(id)a;
57 - (void) lockReplaceWithObjectsFromArray:(id)a;
59 - (BOOL) insertObject:(id)o atIndex:(NSInteger)i;
61 - (BOOL) lockInsertObject:(id)o atIndex:(NSInteger)i;
63 - (void) removeAllObjects;
65 - (void) lockRemoveAllObjects;
67 - (id) firstObject;
69 - (id) lockFirstObject;
71 - (void) removeFirstObject;
73 - (void) lockRemoveFirstObject;
75 - (id) lastObject;
77 - (id) lockLastObject;
79 - (void) removeLastObject;
81 - (void) lockRemoveLastObject;
83 - (void) removeObject:(id)o;
85 - (void) lockRemoveObject:(id)o;
87 - (void) removeObjectAtIndex:(NSInteger)i;
89 - (void) lockRemoveObjectAtIndex:(NSInteger)i;
91 - (void) removeObjectsAtIndexes:(NSIndexSet *)i;
93 - (void) lockRemoveObjectsAtIndexes:(NSIndexSet *)i;
95 - (void) removeObjectsInArray:(NSArray *)otherArray;
97 - (void) lockRemoveObjectsInArray:(NSArray *)otherArray;
99 - (void) removeIdenticalPtrsInArray:(NSArray *)a;
101 - (void) lockRemoveIdenticalPtrsInArray:(NSArray *)a;
102 
104 - (void) replaceObjectsAtIndexes:(NSIndexSet *)indexes withObjects:(NSArray *)objects;
105 // Establishes a write-lock, then calls "replaceObjectsAtIndexes:withObjects on self; threadsafe
106 - (void) lockReplaceObjectsAtIndexes:(NSIndexSet *)indexes withObjects:(NSArray *)objects;
107 
109 - (id) valueForKey:(NSString *)key;
111 - (id) lockValueForKey:(NSString *)key;
112 
113 
115 - (BOOL) containsObject:(id)o;
117 - (BOOL) lockContainsObject:(id)o;
119 - (id) objectAtIndex:(NSInteger)i;
121 - (id) lockObjectAtIndex:(NSInteger)i;
123 - (NSArray *) objectsAtIndexes:(NSIndexSet *)indexes;
125 - (NSArray *) lockObjectsAtIndexes:(NSIndexSet *)indexes;
127 - (NSInteger) indexOfObject:(id)o;
129 - (NSInteger) lockIndexOfObject:(id)o;
130 
131 
133 - (BOOL) containsIdenticalPtr:(id)o;
135 - (BOOL) lockContainsIdenticalPtr:(id)o;
137 - (long) indexOfIdenticalPtr:(id)o;
139 - (long) lockIndexOfIdenticalPtr:(id)o;
141 - (void) removeIdenticalPtr:(id)o;
143 - (void) lockRemoveIdenticalPtr:(id)o;
144 
145 // Calls "filteredArrayUsingPredicate:" on my array; not threadsafe
146 - (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate;
147 // Establishes a read-lock, then calls "filteredArrayUsingPredicate:" on self; threadsafe
148 - (NSArray *) lockFilteredArrayUsingPredicate:(NSPredicate *)predicate;
149 
151 - (void) makeObjectsPerformSelector:(SEL)s;
153 - (void) lockMakeObjectsPerformSelector:(SEL)s;
155 - (void) makeObjectsPerformSelector:(SEL)s withObject:(id)o;
157 - (void) lockMakeObjectsPerformSelector:(SEL)s withObject:(id)o;
158 
159 
160 
161 /*
162 - (void) makeCopyPerformSelector:(SEL)s;
163 - (void) lockMakeCopyPerformSelector:(SEL)s;
164 - (void) makeCopyPerformSelector:(SEL)s withObject:(id)o;
165 - (void) lockMakeCopyPerformSelector:(SEL)s withObject:(id)o;
166 */
167 
168 
169 
171 - (void) sortUsingSelector:(SEL)s;
173 - (void) lockSortUsingSelector:(SEL)s;
174 
176 - (void) sortUsingDescriptors:(NSArray *)descriptors;
178 - (void) lockSortUsingDescriptors:(NSArray *)descriptors;
179 
180 - (NSEnumerator *) objectEnumerator;
181 - (NSEnumerator *) reverseObjectEnumerator;
182 - (long) count;
183 - (long) lockCount;
184 
185 @end
NSMutableArray * array()
Returns the NSMutableArray with everything in it. This returns the actual array, so be careful- it's ...
Definition: MutLockArray.m:87
Similar to NSMutableArray, but thread-safe. Internally, uses an NSMutableArray and a rwlock...
Definition: MutLockArray.h:20