Overview
Comment: | Add -[OFMutableDictionary initWithCapacity:].
This was already implemented in OFDictionary_hashtable for internal |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
4fb0f4bf66a09a408383f40639ffbbce |
User & Date: | js on 2013-02-18 11:07:29 |
Other Links: | manifest | tags |
Context
2013-02-18
| ||
11:31 | A few small fixes for OS X/PPC. check-in: adaf5a3e6e user: js tags: trunk | |
11:07 | Add -[OFMutableDictionary initWithCapacity:]. check-in: 4fb0f4bf66 user: js tags: trunk | |
10:38 | Add -[OFDataArray initWithItemSize:capacity:]. check-in: e403ca05cb user: js tags: trunk | |
Changes
Modified src/OFMapTable.h from [c74d98dfe6] to [98630c9c0b].
︙ | |||
44 45 46 47 48 49 50 | 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | - + | * @brief A class similar to OFDictionary, but providing more options how keys * and values should be retained, released, compared and hashed. */ @interface OFMapTable: OFObject <OFCopying, OFFastEnumeration> { of_map_table_functions_t _keyFunctions, _valueFunctions; struct of_map_table_bucket **_buckets; |
︙ |
Modified src/OFMapTable.m from [212223cd50] to [1f61a324ed].
︙ | |||
143 144 145 146 147 148 149 | 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | - - | for (_capacity = 1; _capacity < capacity; _capacity <<= 1); if (capacity * 8 / _capacity >= 6) _capacity <<= 1; if (_capacity < MIN_CAPACITY) _capacity = MIN_CAPACITY; |
︙ | |||
242 243 244 245 246 247 248 | 240 241 242 243 244 245 246 247 248 249 250 251 252 253 | - - | hash: OF_ROR(_buckets[i]->hash, _rotate)]; } @catch (id e) { [copy release]; @throw e; } |
︙ | |||
307 308 309 310 311 312 313 | 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 | + + + + - + | if (fullness >= 6) capacity = _capacity << 1; else if (fullness <= 1) capacity = _capacity >> 1; else return; /* * Don't downsize if we have an initial capacity or if we would fall * below the minimum capacity. */ |
︙ |
Modified src/OFMutableDictionary.h from [0910db56e1] to [2e2922b971].
︙ | |||
20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 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 | + + + + + + + + + + + + + + + + + + | typedef id (^of_dictionary_replace_block_t)(id key, id object, BOOL *stop); #endif /*! * @brief An abstract class for storing and changing objects in a dictionary. */ @interface OFMutableDictionary: OFDictionary /*! * @brief Creates a new OFMutableDictionary with enough memory to hold the * specified number of objects. * * @param capacity The initial capacity for the OFMutableDictionary * @return A new autoreleased OFMutableDictionary */ + (instancetype)dictionaryWithCapacity: (size_t)capacity; /*! * @brief Initializes an already allocated OFMutableDictionary with enough * memory to hold the specified number of objects. * * @param capacity The initial capacity for the OFMutableDictionary * @return A new initialized OFMutableDictionary */ - initWithCapacity: (size_t)capacity; /*! * @brief Sets an object for a key. * * A key can be any object that conforms to the OFCopying protocol. * * @param key The key to set * @param object The object to set the key to |
︙ |
Modified src/OFMutableDictionary.m from [7687a7a311] to [3f243b3679].
︙ | |||
87 88 89 90 91 92 93 94 95 96 97 98 99 100 | 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | + + + + + + | } - initWithSerialization: (OFXMLElement*)element { return (id)[[OFMutableDictionary_hashtable alloc] initWithSerialization: element]; } - initWithCapacity: (size_t)capacity { return (id)[[OFMutableDictionary_hashtable alloc] initWithCapacity: capacity]; } - retain { return self; } - autorelease |
︙ | |||
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 | 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 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | + + + + + + + + + + + + + + + + | + alloc { if (self == [OFMutableDictionary class]) return (id)&placeholder; return [super alloc]; } + dictionaryWithCapacity: (size_t)capacity { return [[[self alloc] initWithCapacity: capacity] autorelease]; } - init { if (object_getClass(self) == [OFMutableDictionary class]) { @try { [self doesNotRecognizeSelector: _cmd]; abort(); } @catch (id e) { [self release]; @throw e; } } return [super init]; } - initWithCapacity: (size_t)capacity { @try { [self doesNotRecognizeSelector: _cmd]; abort(); } @catch (id e) { [self release]; @throw e; } } - (void)setObject: (id)object forKey: (id)key { [self doesNotRecognizeSelector: _cmd]; abort(); } |
︙ |