83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
}
[self freeMemory: data];
data = newData;
size = newSize;
}
- (void)setObject: (id)object
forKey: (id <OFCopying>)key
{
uint32_t i, hash, last;
id old;
if (key == nil || object == nil)
@throw [OFInvalidArgumentException newWithClass: isa
selector: _cmd];
|
|
|
>
|
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
}
[self freeMemory: data];
data = newData;
size = newSize;
}
- (void)_setObject: (id)object
forKey: (id)key
copyKey: (BOOL)copyKey
{
uint32_t i, hash, last;
id old;
if (key == nil || object == nil)
@throw [OFInvalidArgumentException newWithClass: isa
selector: _cmd];
|
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
if (i >= last)
@throw [OFOutOfRangeException newWithClass: isa];
bucket = [self allocMemoryWithSize: sizeof(*bucket)];
@try {
key = [key copy];
} @catch (id e) {
[self freeMemory: bucket];
@throw e;
}
@try {
[object retain];
|
|
|
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
if (i >= last)
@throw [OFOutOfRangeException newWithClass: isa];
bucket = [self allocMemoryWithSize: sizeof(*bucket)];
@try {
key = (copyKey ? [key copy] : [key retain]);
} @catch (id e) {
[self freeMemory: bucket];
@throw e;
}
@try {
[object retain];
|
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
return;
}
old = data[i]->object;
data[i]->object = [object retain];
[old release];
}
- (void)removeObjectForKey: (id <OFCopying>)key
{
uint32_t i, hash, last;
if (key == nil)
@throw [OFInvalidArgumentException newWithClass: isa
|
>
>
>
>
>
>
>
>
|
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
|
return;
}
old = data[i]->object;
data[i]->object = [object retain];
[old release];
}
- (void)setObject: (id)object
forKey: (id <OFCopying>)key
{
[self _setObject: object
forKey: key
copyKey: YES];
}
- (void)removeObjectForKey: (id <OFCopying>)key
{
uint32_t i, hash, last;
if (key == nil)
@throw [OFInvalidArgumentException newWithClass: isa
|