Differences From Artifact [97b4c86e48]:
- File src/OFSet_hashtable.m — part of check-in [e0b9167693] at 2016-02-21 15:37:42 on branch trunk — Make use of C99-style for loops (user: js, size: 5654) [annotate] [blame] [check-ins using]
To Artifact [c4c7c8ad52]:
- File
src/OFSet_hashtable.m
— part of check-in
[1ba9c051a6]
at
2016-06-04 18:49:46
on branch trunk
— OFMapTable: Rename valueForKey to objectForKey
The reason for this is that -[valueForKey:] could be confused with
Key Value Coding. (user: js, size: 5683) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
25 26 27 28 29 30 31 | #import "OFString.h" #import "OFXMLElement.h" #import "OFInvalidArgumentException.h" #import "OFEnumerationMutationException.h" static void* | | | | | | | | | | | | 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 | #import "OFString.h" #import "OFXMLElement.h" #import "OFInvalidArgumentException.h" #import "OFEnumerationMutationException.h" static void* retain(void *object) { return [(id)object retain]; } static void release(void *object) { [(id)object release]; } static uint32_t hash(void *object) { return [(id)object hash]; } static bool equal(void *object1, void *object2) { return [(id)object1 isEqual: (id)object2]; } static const of_map_table_functions_t keyFunctions = { .retain = retain, .release = release, .hash = hash, .equal = equal }; static const of_map_table_functions_t objectFunctions = { NULL }; @implementation OFSet_hashtable - init { return [self initWithCapacity: 0]; } - initWithCapacity: (size_t)capacity { self = [super init]; @try { _mapTable = [[OFMapTable alloc] initWithKeyFunctions: keyFunctions objectFunctions: objectFunctions capacity: capacity]; } @catch (id e) { [self release]; @throw e; } return self; |
︙ | ︙ | |||
97 98 99 100 101 102 103 | @throw e; } self = [self initWithCapacity: count]; @try { for (id object in set) | | | | 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | @throw e; } self = [self initWithCapacity: count]; @try { for (id object in set) [_mapTable setObject: (void*)1 forKey: object]; } @catch (id e) { [self release]; @throw e; } return self; } |
︙ | ︙ | |||
125 126 127 128 129 130 131 | @throw e; } self = [self initWithCapacity: count]; @try { for (id object in array) | | | | | | 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 150 151 152 153 154 155 156 157 | @throw e; } self = [self initWithCapacity: count]; @try { for (id object in array) [_mapTable setObject: (void*)1 forKey: object]; } @catch (id e) { [self release]; @throw e; } return self; } - initWithObjects: (id const*)objects count: (size_t)count { self = [self initWithCapacity: count]; @try { for (size_t i = 0; i < count; i++) [_mapTable setObject: (void*)1 forKey: objects[i]]; } @catch (id e) { [self release]; @throw e; } return self; } |
︙ | ︙ | |||
168 169 170 171 172 173 174 | va_copy(argumentsCopy, arguments); for (count = 1; va_arg(argumentsCopy, id) != nil; count++); _mapTable = [[OFMapTable alloc] initWithKeyFunctions: keyFunctions | | | | | | | 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 | va_copy(argumentsCopy, arguments); for (count = 1; va_arg(argumentsCopy, id) != nil; count++); _mapTable = [[OFMapTable alloc] initWithKeyFunctions: keyFunctions objectFunctions: objectFunctions capacity: count]; [_mapTable setObject: (void*)1 forKey: firstObject]; while ((object = va_arg(arguments, id)) != nil) [_mapTable setObject: (void*)1 forKey: object]; } @catch (id e) { [self release]; @throw e; } return self; } |
︙ | ︙ | |||
201 202 203 204 205 206 207 | ![[element namespace] isEqual: OF_SERIALIZATION_NS]) @throw [OFInvalidArgumentException exception]; for (OFXMLElement *child in [element elementsForNamespace: OF_SERIALIZATION_NS]) { void *pool2 = objc_autoreleasePoolPush(); | | | | 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 | ![[element namespace] isEqual: OF_SERIALIZATION_NS]) @throw [OFInvalidArgumentException exception]; for (OFXMLElement *child in [element elementsForNamespace: OF_SERIALIZATION_NS]) { void *pool2 = objc_autoreleasePoolPush(); [_mapTable setObject: (void*)1 forKey: [child objectByDeserializing]]; objc_autoreleasePoolPop(pool2); } objc_autoreleasePoolPop(pool); } @catch (id e) { [self release]; |
︙ | ︙ | |||
233 234 235 236 237 238 239 | } - (bool)containsObject: (id)object { if (object == nil) return false; | | | 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 | } - (bool)containsObject: (id)object { if (object == nil) return false; return ([_mapTable objectForKey: object] != nil); } - (bool)isEqual: (id)object { OFSet_hashtable *set; if (![object isKindOfClass: [OFSet_hashtable class]] && |
︙ | ︙ | |||
255 256 257 258 259 260 261 | } - (id)anyObject { void *pool = objc_autoreleasePoolPush(); id object; | | | 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 | } - (id)anyObject { void *pool = objc_autoreleasePoolPush(); id object; object = [[_mapTable keyEnumerator] nextObject]; object = [object retain]; objc_autoreleasePoolPop(pool); return [object autorelease]; } |
︙ | ︙ | |||
283 284 285 286 287 288 289 | count: count]; } #ifdef OF_HAVE_BLOCKS - (void)enumerateObjectsUsingBlock: (of_set_enumeration_block_t)block { @try { | | | | 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 | count: count]; } #ifdef OF_HAVE_BLOCKS - (void)enumerateObjectsUsingBlock: (of_set_enumeration_block_t)block { @try { [_mapTable enumerateKeysAndObjectsUsingBlock: ^ (void *key, void *object, bool *stop) { block(key, stop); }]; } @catch (OFEnumerationMutationException *e) { @throw [OFEnumerationMutationException exceptionWithObject: self]; } } #endif @end |