ObjFW  Check-in [6e19bd47ee]

Overview
Comment:Add OF_UNRECOGNIZED_SELECTOR.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 6e19bd47eec53ac297ed5d7517142ccff5a7fd86952aa729c11485b1fa877284
User & Date: js on 2013-11-23 01:27:40
Other Links: manifest | tags
Context
2013-11-23
01:38
Add OF_ROOT_CLASS. check-in: 48df0f966f user: js tags: trunk
01:27
Add OF_UNRECOGNIZED_SELECTOR. check-in: 6e19bd47ee user: js tags: trunk
01:14
Add OF_REQUIRES_SUPER. check-in: 3ab5dace83 user: js tags: trunk
Changes

Modified src/OFArray.m from [2f6f04f166] to [0c3512457f].

102
103
104
105
106
107
108
109

110
111
112
113
114
115
116
117
102
103
104
105
106
107
108

109

110
111
112
113
114
115
116







-
+
-








- (void)release
{
}

- (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();

	/* Get rid of a stupid warning */
	[super dealloc];
}
@end

@implementation OFArray
223
224
225
226
227
228
229
230

231
232
233
234
235
236
237
238
222
223
224
225
226
227
228

229

230
231
232
233
234
235
236







-
+
-







- initWithSerialization: (OFXMLElement*)element
{
	OF_INVALID_INIT_METHOD
}

- (size_t)count
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)getObjects: (id*)buffer
	   inRange: (of_range_t)range
{
	size_t i;

265
266
267
268
269
270
271
272

273
274
275
276
277
278
279
280
263
264
265
266
267
268
269

270

271
272
273
274
275
276
277







-
+
-







- mutableCopy
{
	return [[OFMutableArray alloc] initWithArray: self];
}

- (id)objectAtIndex: (size_t)index
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (id)objectAtIndexedSubscript: (size_t)index
{
	return [self objectAtIndex: index];
}

Modified src/OFAutoreleasePool.m from [c1b6db103b] to [ce4907a277].

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
12
13
14
15
16
17
18


19
20
21
22
23
24
25







-
-







 * Public License, either version 2 or 3, which can be found in the file
 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
 * file.
 */

#include "config.h"

#include <stdlib.h>

#import "OFAutoreleasePool.h"
#import "OFAutoreleasePool+Private.h"

#import "macros.h"
#if !defined(OF_HAVE_COMPILER_TLS) && defined(OF_HAVE_THREADS)
# import "threading.h"

178
179
180
181
182
183
184
185

186
187
188
189
190
191

192
193
194
176
177
178
179
180
181
182

183

184
185
186
187

188

189
190







-
+
-




-
+
-


	}

	[super dealloc];
}

- retain
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- autorelease
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}
@end

Modified src/OFBlock.m from [c640f522f6] to [1ced59ee61].

382
383
384
385
386
387
388
389

390
391
392
393
394
395
396
397
398
399
400

401
402
403
404
405
406
407

408
409
410
411
412
413
414

415
416
417
418
419
420
421
422

423
424
425
426
427
428

429
430
431
432
433
434
435
436
382
383
384
385
386
387
388

389

390
391
392
393
394
395
396
397
398

399

400
401
402
403
404

405

406
407
408
409
410

411

412
413
414
415
416
417

418

419
420
421
422

423

424
425
426
427
428
429
430







-
+
-









-
+
-





-
+
-





-
+
-






-
+
-




-
+
-







	objc_registerClassPair((Class)&_NSConcreteMallocBlock);
# endif
#endif
}

+ alloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- init
{
	OF_INVALID_INIT_METHOD
}

- (void*)allocMemoryWithSize: (size_t)size
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void*)allocMemoryWithSize: (size_t)size
		       count: (size_t)count
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void*)resizeMemory: (void*)ptr
		 size: (size_t)size
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void*)resizeMemory: (void*)ptr
		 size: (size_t)size
		count: (size_t)count
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)freeMemory: (void*)ptr
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- retain
{
	if (object_getClass(self) == (Class)&_NSConcreteMallocBlock)
		return Block_copy(self);

463
464
465
466
467
468
469
470

471
472
473
474
475
476
457
458
459
460
461
462
463

464

465
466
467
468
469







-
+
-





{
	if (object_getClass(self) == (Class)&_NSConcreteMallocBlock)
		Block_release(self);
}

- (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();

	/* Get rid of a stupid warning */
	[super dealloc];
}
@end

Modified src/OFConstantString.m from [7d49a47280] to [bf1e5cc793].

23
24
25
26
27
28
29


30
31
32
33
34
35
36
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38







+
+








#import "OFConstantString.h"
#import "OFString_UTF8.h"

#import "OFInitializationFailedException.h"
#import "OFInvalidEncodingException.h"
#import "OFOutOfMemoryException.h"

#import "macros.h"

#if defined(OF_APPLE_RUNTIME) && !defined(__OBJC2__)
# import <objc/runtime.h>

struct {
	struct class *isa, *super_class;
	const char *name;
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
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







-
+
-





-
+
-





-
+
-





-
+
-






-
+
-




-
+
-








@interface OFString_const: OFString_UTF8
@end

@implementation OFString_const
+ alloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}


- (void*)allocMemoryWithSize: (size_t)size
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void*)allocMemoryWithSize: (size_t)size
		       count: (size_t)count
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void*)resizeMemory: (void*)pointer
		 size: (size_t)size
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void*)resizeMemory: (void*)pointer
		 size: (size_t)size
		count: (size_t)count
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)freeMemory: (void*)pointer
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- retain
{
	return self;
}

106
107
108
109
110
111
112
113

114
115
116
117
118
119
120
121
102
103
104
105
106
107
108

109

110
111
112
113
114
115
116







-
+
-








- (void)release
{
}

- (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();

	/* Get rid of a stupid warning */
	[super dealloc];
}
@end

@implementation OFConstantString
173
174
175
176
177
178
179
180

181
182
183
184
185
186

187
188
189
190
191
192
193

194
195
196
197
198
199
200

201
202
203
204
205
206
207
208

209
210
211
212
213
214

215
216
217
218
219
220
221
222
168
169
170
171
172
173
174

175

176
177
178
179

180

181
182
183
184
185

186

187
188
189
190
191

192

193
194
195
196
197
198

199

200
201
202
203

204

205
206
207
208
209
210
211







-
+
-




-
+
-





-
+
-





-
+
-






-
+
-




-
+
-







		_cString = (char*)ivars;
		object_setClass(self, [OFString_const class]);
	}
}

+ alloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void*)allocMemoryWithSize: (size_t)size
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void*)allocMemoryWithSize: (size_t)size
		       count: (size_t)count
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void*)resizeMemory: (void*)pointer
		 size: (size_t)size
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void*)resizeMemory: (void*)pointer
		 size: (size_t)size
		count: (size_t)count
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)freeMemory: (void*)pointer
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- retain
{
	return self;
}

232
233
234
235
236
237
238
239

240
241
242
243
244
245
246
247
221
222
223
224
225
226
227

228

229
230
231
232
233
234
235







-
+
-








- (void)release
{
}

- (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();

	/* Get rid of a stupid warning */
	[super dealloc];
}

/*
 * In all following methods, the constant string is converted to an

Modified src/OFCountedSet.m from [d006ca7115] to [e35b534e34].

21
22
23
24
25
26
27

28
29
30
31
32
33
34
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35







+







#import "OFCountedSet.h"
#import "OFCountedSet_hashtable.h"
#import "OFNumber.h"
#import "OFString.h"
#import "OFXMLElement.h"

#import "autorelease.h"
#import "macros.h"

static struct {
	Class isa;
} placeholder;

@interface OFCountedSet_placeholder: OFCountedSet
@end
94
95
96
97
98
99
100
101

102
103
104
105
106
107
108
109
95
96
97
98
99
100
101

102

103
104
105
106
107
108
109







-
+
-








- (void)release
{
}

- (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();

	/* Get rid of a stupid warning */
	[super dealloc];
}
@end

@implementation OFCountedSet
135
136
137
138
139
140
141
142

143
144
145
146
147
148
149
150
135
136
137
138
139
140
141

142

143
144
145
146
147
148
149







-
+
-







	}

	return [super init];
}

- (size_t)countForObject: (id)object
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (OFString*)description
{
	OFMutableString *ret;
	void *pool;
	OFEnumerator *enumerator;

Modified src/OFDictionary.m from [03af4f840a] to [e19125e0d9].

113
114
115
116
117
118
119
120

121
122
123
124
125
126
127
128
113
114
115
116
117
118
119

120

121
122
123
124
125
126
127







-
+
-








- (void)release
{
}

- (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();

	/* Get rid of a stupid warning */
	[super dealloc];
}
@end

@implementation OFDictionary
269
270
271
272
273
274
275
276

277
278
279
280
281
282
283
284
285
286
287

288
289
290
291
292
293
294
295
268
269
270
271
272
273
274

275

276
277
278
279
280
281
282
283
284

285

286
287
288
289
290
291
292







-
+
-









-
+
-







- initWithSerialization: (OFXMLElement*)element
{
	OF_INVALID_INIT_METHOD
}

- (id)objectForKey: (id)key
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (id)objectForKeyedSubscript: (id)key
{
	return [self objectForKey: key];
}

- (size_t)count
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- copy
{
	return [self retain];
}

411
412
413
414
415
416
417
418

419
420
421
422
423
424

425
426
427
428
429
430
431
432

433
434
435
436
437
438
439
440
408
409
410
411
412
413
414

415

416
417
418
419

420

421
422
423
424
425
426

427

428
429
430
431
432
433
434







-
+
-




-
+
-






-
+
-







	objc_autoreleasePoolPop(pool);

	return ret;
}

- (OFEnumerator*)objectEnumerator
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (OFEnumerator*)keyEnumerator
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (int)countByEnumeratingWithState: (of_fast_enumeration_state_t*)state
			   objects: (id*)objects
			     count: (int)count_
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

#if defined(OF_HAVE_BLOCKS) && defined(OF_HAVE_FAST_ENUMERATION)
- (void)enumerateKeysAndObjectsUsingBlock:
    (of_dictionary_enumeration_block_t)block
{
	bool stop = false;

Modified src/OFEnumerator.m from [e3173d5720] to [6cd2a2aacc].

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
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







+



















-
+
-




















-
+
-



#include <stdlib.h>

#import "OFEnumerator.h"
#import "OFArray.h"

#import "autorelease.h"
#import "macros.h"

@implementation OFEnumerator
- init
{
	if (object_getClass(self) == [OFEnumerator class]) {
		@try {
			[self doesNotRecognizeSelector: _cmd];
			abort();
		} @catch (id e) {
			[self release];
			@throw e;
		}
	}

	return [super init];
}

- (id)nextObject
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (OFArray*)allObjects
{
	OFMutableArray *ret = [OFMutableArray array];
	void *pool = objc_autoreleasePoolPush();
	id object;

	while ((object = [self nextObject]) != nil)
		[ret addObject: object];

	[ret makeImmutable];

	objc_autoreleasePoolPop(pool);

	return ret;
}

- (void)reset
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}
@end

Modified src/OFMapTable.m from [3c5a2f693b] to [74b5d78ed2].

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
12
13
14
15
16
17
18

19
20
21
22
23
24
25







-







 * Public License, either version 2 or 3, which can be found in the file
 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
 * file.
 */

#include "config.h"

#include <stdlib.h>
#include <string.h>

#include <assert.h>

#import "OFMapTable.h"
#import "OFEnumerator.h"

696
697
698
699
700
701
702
703

704
705
706
707
708
709
710
711
695
696
697
698
699
700
701

702

703
704
705
706
707
708
709







-
+
-







	[_mapTable release];

	[super dealloc];
}

- (void*)nextValue
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)reset
{
	if (*_mutationsPtr != _mutations)
		@throw [OFEnumerationMutationException
		    exceptionWithObject: _mapTable];

Modified src/OFMutableArray.m from [f95015fcd1] to [0ba491b550].

147
148
149
150
151
152
153
154

155
156
157
158
159
160
161
162
147
148
149
150
151
152
153

154

155
156
157
158
159
160
161







-
+
-








- (void)release
{
}

- (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();

	/* Get rid of a stupid warning */
	[super dealloc];
}
@end

@implementation OFMutableArray
215
216
217
218
219
220
221
222

223
224
225
226
227
228
229
230
214
215
216
217
218
219
220

221

222
223
224
225
226
227
228







-
+
-







	[self insertObjectsFromArray: array
			     atIndex: [self count]];
}

- (void)insertObject: (id)object
	     atIndex: (size_t)index
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)insertObjectsFromArray: (OFArray*)array
		       atIndex: (size_t)index
{
	void *pool = objc_autoreleasePoolPush();
	OFEnumerator *enumerator = [array objectEnumerator];
241
242
243
244
245
246
247
248

249
250
251
252
253
254
255
256
239
240
241
242
243
244
245

246

247
248
249
250
251
252
253







-
+
-








	objc_autoreleasePoolPop(pool);
}

- (void)replaceObjectAtIndex: (size_t)index
		  withObject: (id)object
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

-    (void)setObject: (id)object
  atIndexedSubscript: (size_t)index
{
	[self replaceObjectAtIndex: index
			withObject: object];
293
294
295
296
297
298
299
300

301
302
303
304
305
306
307
308
290
291
292
293
294
295
296

297

298
299
300
301
302
303
304







-
+
-







			return;
		}
	}
}

- (void)removeObjectAtIndex: (size_t)index
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)removeObject: (id)object
{
	size_t i, count;

	if (object == nil)

Modified src/OFMutableDictionary.m from [fcf875c4b5] to [42d74ec14c].

114
115
116
117
118
119
120
121

122
123
124
125
126
127
128
129
114
115
116
117
118
119
120

121

122
123
124
125
126
127
128







-
+
-








- (void)release
{
}

- (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();

	/* Get rid of a stupid warning */
	[super dealloc];
}
@end

@implementation OFMutableDictionary
166
167
168
169
170
171
172
173

174
175
176
177
178
179
180
181
182
183
184
185
186

187
188
189
190
191
192
193
194
165
166
167
168
169
170
171

172

173
174
175
176
177
178
179
180
181
182
183

184

185
186
187
188
189
190
191







-
+
-











-
+
-







{
	OF_INVALID_INIT_METHOD
}

- (void)setObject: (id)object
	   forKey: (id)key
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

-   (void)setObject: (id)object
  forKeyedSubscript: (id)key
{
	[self setObject: object
		 forKey: key];
}

- (void)removeObjectForKey: (id)key
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)removeAllObjects
{
	void *pool = objc_autoreleasePoolPush();
	OFArray *keys = [self allKeys];
	OFEnumerator *enumerator = [keys objectEnumerator];

Modified src/OFMutableSet.m from [d2501929a2] to [418c7f3f73].

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







+








#include <assert.h>

#import "OFMutableSet.h"
#import "OFMutableSet_hashtable.h"

#import "autorelease.h"
#import "macros.h"

static struct {
	Class isa;
} placeholder;

@interface OFMutableSet_placeholder: OFMutableSet
@end
93
94
95
96
97
98
99
100

101
102
103
104
105
106
107
108
94
95
96
97
98
99
100

101

102
103
104
105
106
107
108







-
+
-








- (void)release
{
}

- (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();

	/* Get rid of a stupid warning */
	[super dealloc];
}
@end

@implementation OFMutableSet
133
134
135
136
137
138
139
140

141
142
143
144
145
146

147
148
149
150
151
152
153
154
133
134
135
136
137
138
139

140

141
142
143
144

145

146
147
148
149
150
151
152







-
+
-




-
+
-







	}

	return [super init];
}

- (void)addObject: (id)object
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)removeObject: (id)object
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)minusSet: (OFSet*)set
{
	void *pool = objc_autoreleasePoolPush();
	OFEnumerator *enumerator = [set objectEnumerator];
	id object;

Modified src/OFMutableString.m from [ad91789f29] to [8476e8b7af].

215
216
217
218
219
220
221
222

223
224
225
226
227
228
229
230
215
216
217
218
219
220
221

222

223
224
225
226
227
228
229







-
+
-








- (void)release
{
}

- (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();

	/* Get rid of a stupid warning */
	[super dealloc];
}
@end

@implementation OFMutableString
447
448
449
450
451
452
453
454

455
456
457
458
459
460
461
462
446
447
448
449
450
451
452

453

454
455
456
457
458
459
460







-
+
-







	[self replaceCharactersInRange: range
			    withString: @""];
}

- (void)replaceCharactersInRange: (of_range_t)range
		      withString: (OFString*)replacement
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)replaceOccurrencesOfString: (OFString*)string
			withString: (OFString*)replacement
{
	[self replaceOccurrencesOfString: string
			      withString: replacement

Modified src/OFNull.m from [10a564f1a5] to [f10ff9f2e0].

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

29
30
31
32
33
34
35
12
13
14
15
16
17
18


19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34







-
-








+







 * Public License, either version 2 or 3, which can be found in the file
 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
 * file.
 */

#include "config.h"

#include <stdlib.h>

#import "OFNull.h"
#import "OFString.h"
#import "OFXMLElement.h"
#import "OFDataArray.h"

#import "OFInvalidArgumentException.h"

#import "autorelease.h"
#import "macros.h"

static OFNull *null = nil;

@implementation OFNull
+ (void)initialize
{
	null = [[self alloc] init];
115
116
117
118
119
120
121
122

123
124
125
126
127
128
114
115
116
117
118
119
120

121

122
123
124
125
126







-
+
-





- (unsigned int)retainCount
{
	return OF_RETAIN_COUNT_MAX;
}

- (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();

	/* Get rid of a stupid warning */
	[super dealloc];
}
@end

Modified src/OFObject.m from [8e2d9bc735] to [7af9301010].

1106
1107
1108
1109
1110
1111
1112
1113

1114
1115
1116
1117
1118
1119
1120

1121
1122
1123
1124
1125
1126
1127

1128
1129
1130
1131
1132
1133
1134
1135

1136
1137
1138
1139
1140
1141

1142
1143
1144
1145
1146
1147
1148
1149
1106
1107
1108
1109
1110
1111
1112

1113

1114
1115
1116
1117
1118

1119

1120
1121
1122
1123
1124

1125

1126
1127
1128
1129
1130
1131

1132

1133
1134
1135
1136

1137

1138
1139
1140
1141
1142
1143
1144







-
+
-





-
+
-





-
+
-






-
+
-




-
+
-








/*
 * Those are needed as the root class is the superclass of the root class's
 * metaclass and thus instance methods can be sent to class objects as well.
 */
+ (void*)allocMemoryWithSize: (size_t)size
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

+ (void*)allocMemoryWithSize: (size_t)size
		       count: (size_t)count
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

+ (void*)resizeMemory: (void*)pointer
		 size: (size_t)size
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

+ (void*)resizeMemory: (void*)pointer
		 size: (size_t)size
		count: (size_t)count
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

+ (void)freeMemory: (void*)pointer
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

+ retain
{
	return self;
}

1159
1160
1161
1162
1163
1164
1165
1166

1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177

1178
1179
1180
1154
1155
1156
1157
1158
1159
1160

1161

1162
1163
1164
1165
1166
1167
1168
1169
1170

1171

1172
1173







-
+
-









-
+
-



+ (void)release
{
}

+ (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

+ copy
{
	return self;
}

+ mutableCopyWithZone: (void*)zone
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}
@end

Modified src/OFProcess.m from [fbf3337ae3] to [4601d52af5].

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
12
13
14
15
16
17
18

19
20
21
22
23
24
25







-







 * Public License, either version 2 or 3, which can be found in the file
 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
 * file.
 */

#include "config.h"

#include <stdlib.h>
#include <string.h>

#ifndef _WIN32
# include <unistd.h>
# include <signal.h>
# include <sys/wait.h>
#endif
434
435
436
437
438
439
440
441

442
443
444
445
446
447
448
449
450
451

452
453
454
455
456
457
458
459
433
434
435
436
437
438
439

440

441
442
443
444
445
446
447
448

449

450
451
452
453
454
455
456







-
+
-








-
+
-







}

- (int)fileDescriptorForReading
{
#ifndef _WIN32
	return _readPipe[0];
#else
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
#endif
}

- (int)fileDescriptorForWriting
{
#ifndef _WIN32
	return _writePipe[1];
#else
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
#endif
}

- (void)closeForWriting
{
#ifndef _WIN32
	if (_writePipe[1] != -1)

Modified src/OFSeekableStream.m from [075ee49105] to [4c1c9e6a22].

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
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







+
+




















-
+
-








#include "config.h"

#include <stdlib.h>
#include <stdio.h>

#import "OFSeekableStream.h"

#import "macros.h"

@implementation OFSeekableStream
- init
{
	if (object_getClass(self) == [OFSeekableStream class]) {
		@try {
			[self doesNotRecognizeSelector: _cmd];
			abort();
		} @catch (id e) {
			[self release];
			@throw e;
		}
	}

	return [super init];
}

- (off_t)lowlevelSeekToOffset: (off_t)offset
		       whence: (int)whence
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (off_t)seekToOffset: (off_t)offset
	       whence: (int)whence
{
	if (whence == SEEK_CUR)
		offset -= _readBufferLength;

Modified src/OFSet.m from [6f0ac7c26a] to [a47e39e0ec].

94
95
96
97
98
99
100
101

102
103
104
105
106
107
108
109
94
95
96
97
98
99
100

101

102
103
104
105
106
107
108







-
+
-








- (void)release
{
}

- (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();

	/* Get rid of a stupid warning */
	[super dealloc];
}
@end

@implementation OFSet
210
211
212
213
214
215
216
217

218
219
220
221
222
223

224
225
226
227
228
229

230
231
232
233
234
235
236
237

238
239
240
241
242
243
244
245
209
210
211
212
213
214
215

216

217
218
219
220

221

222
223
224
225

226

227
228
229
230
231
232

233

234
235
236
237
238
239
240







-
+
-




-
+
-




-
+
-






-
+
-







- initWithSerialization: (OFXMLElement*)element
{
	OF_INVALID_INIT_METHOD
}

- (size_t)count
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (bool)containsObject: (id)object
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (OFEnumerator*)objectEnumerator
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (int)countByEnumeratingWithState: (of_fast_enumeration_state_t*)state
			   objects: (id*)objects
			     count: (int)count
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (bool)isEqual: (id)object
{
	OFSet *otherSet;

	if (![object isKindOfClass: [OFSet class]])

Modified src/OFSortedList.m from [0d00948527] to [4d4b30a8d1].

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
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







-
+

-
+




-
+
-




-
+
-





-
+
-





-
+
-







 * Public License, either version 2 or 3, which can be found in the file
 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
 * file.
 */

#include "config.h"

#include <stdlib.h>
#import "OFSortedList.h"

#import "OFSortedList.h"
#import "macros.h"

@implementation OFSortedList
- (of_list_object_t*)appendObject: (id)object
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (of_list_object_t*)prependObject: (id)object
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (of_list_object_t*)insertObject: (id)object
		 beforeListObject: (of_list_object_t*)listObject
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (of_list_object_t*)insertObject: (id)object
		  afterListObject: (of_list_object_t*)listObject
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (of_list_object_t*)insertObject: (id <OFComparing>)object
{
	of_list_object_t *iter;

	for (iter = _lastListObject; iter != NULL; iter = iter->previous) {

Modified src/OFStdIOStream.m from [953debbd4d] to [dd795e3790].

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
12
13
14
15
16
17
18

19
20
21
22
23
24
25







-







 * Public License, either version 2 or 3, which can be found in the file
 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
 * file.
 */

#include "config.h"

#include <stdlib.h>
#include <unistd.h>

#import "OFStdIOStream.h"
#import "OFDate.h"
#import "OFApplication.h"

#import "OFReadFailedException.h"
149
150
151
152
153
154
155
156

157
158
159
160
161
162
148
149
150
151
152
153
154

155

156
157
158
159
160







-
+
-





- (unsigned int)retainCount
{
	return OF_RETAIN_COUNT_MAX;
}

- (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();

	/* Get rid of stupid warning */
	[super dealloc];
}
@end

Modified src/OFStream.m from [11398332ce] to [c0a14a47ec].

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
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







-
+
-





-
+
-





-
+
-







	_blocking = true;

	return self;
}

- (bool)lowlevelIsAtEndOfStream
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (size_t)lowlevelReadIntoBuffer: (void*)buffer
			  length: (size_t)length
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)lowlevelWriteBuffer: (const void*)buffer
		     length: (size_t)length
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- copy
{
	return [self retain];
}

1529
1530
1531
1532
1533
1534
1535
1536

1537
1538
1539
1540
1541
1542
1543

1544
1545
1546
1547
1548
1549

1550
1551
1552
1553
1554
1555
1556
1557
1526
1527
1528
1529
1530
1531
1532

1533

1534
1535
1536
1537
1538

1539

1540
1541
1542
1543

1544

1545
1546
1547
1548
1549
1550
1551







-
+
-





-
+
-




-
+
-








	if (!readImplemented && !writeImplemented)
		@throw [OFNotImplementedException exceptionWithSelector: _cmd
								 object: self];

	_blocking = enable;
#else
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
#endif
}

- (int)fileDescriptorForReading
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (int)fileDescriptorForWriting
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

#ifdef OF_HAVE_SOCKETS
- (void)cancelAsyncRequests
{
	[OFRunLoop OF_cancelAsyncRequestsForStream: self];
}
1570
1571
1572
1573
1574
1575
1576
1577

1578
1579
1580
1581
1582
1583
1584
1585
1564
1565
1566
1567
1568
1569
1570

1571

1572
1573
1574
1575
1576
1577
1578







-
+
-







	memcpy(_readBuffer, buffer, length);

	_readBufferLength += length;
}

- (void)close
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (bool)OF_isWaitingForDelimiter
{
	return _waitingForDelimiter;
}
@end

Modified src/OFStreamObserver.m from [50f0ed1166] to [557367c1e5].

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
14
15
16
17
18
19
20


21
22
23
24
25
26
27







-
-







 * file.
 */

#include "config.h"

#define __NO_EXT_QNX

#include <stdlib.h>

#include <unistd.h>

#include <assert.h>

#import "OFStreamObserver.h"
#import "OFStreamObserver+Private.h"
#import "OFArray.h"
295
296
297
298
299
300
301
302

303
304
305
306
307
308

309
310
311
312
313
314

315
316
317
318
319
320

321
322
323
324
325
326
327
328
293
294
295
296
297
298
299

300

301
302
303
304

305

306
307
308
309

310

311
312
313
314

315

316
317
318
319
320
321
322







-
+
-




-
+
-




-
+
-




-
+
-







	}

	[self cancel];
}

- (void)OF_addFileDescriptorForReading: (int)fd
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)OF_addFileDescriptorForWriting: (int)fd
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)OF_removeFileDescriptorForReading: (int)fd
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)OF_removeFileDescriptorForWriting: (int)fd
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)OF_processQueue
{
#ifdef OF_HAVE_THREADS
	[_mutex lock];
#endif
397
398
399
400
401
402
403
404

405
406
407
408
409
410
411
412
391
392
393
394
395
396
397

398

399
400
401
402
403
404
405







-
+
-







- (void)observe
{
	[self observeForTimeInterval: -1];
}

- (bool)observeForTimeInterval: (double)timeInterval
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (bool)observeUntilDate: (OFDate*)date
{
	return [self observeForTimeInterval: [date timeIntervalSinceNow]];
}

Modified src/OFString.m from [5368d29b65] to [cca222946b].

452
453
454
455
456
457
458
459

460
461
462
463
464
465
466
467
452
453
454
455
456
457
458

459

460
461
462
463
464
465
466







-
+
-








- (void)release
{
}

- (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();

	/* Get rid of a stupid warning */
	[super dealloc];
}
@end

@implementation OFString
1227
1228
1229
1230
1231
1232
1233
1234

1235
1236
1237
1238
1239
1240
1241
1242
1226
1227
1228
1229
1230
1231
1232

1233

1234
1235
1236
1237
1238
1239
1240







-
+
-







- (const char*)UTF8String
{
	return [self cStringWithEncoding: OF_STRING_ENCODING_UTF_8];
}

- (size_t)length
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (size_t)cStringLengthWithEncoding: (of_string_encoding_t)encoding
{
	switch (encoding) {
	case OF_STRING_ENCODING_UTF_8:;
		const of_unichar_t *characters;
1271
1272
1273
1274
1275
1276
1277
1278

1279
1280
1281
1282
1283
1284
1285
1286
1269
1270
1271
1272
1273
1274
1275

1276

1277
1278
1279
1280
1281
1282
1283







-
+
-







- (size_t)UTF8StringLength
{
	return [self cStringLengthWithEncoding: OF_STRING_ENCODING_UTF_8];
}

- (of_unichar_t)characterAtIndex: (size_t)index
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)getCharacters: (of_unichar_t*)buffer
	      inRange: (of_range_t)range
{
	size_t i;

Modified src/OFSystemInfo.m from [e9e3f56333] to [35fe77e5c8].

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
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







-
-









+
+








#include "config.h"

#define __NO_EXT_QNX

#import "OFSystemInfo.h"

#include <stdlib.h>

#include <unistd.h>

#ifdef __QNX__
# include <sys/syspage.h>
#endif

#ifdef _WIN32
# include <windows.h>
#endif

#import "macros.h"

static size_t pageSize;
static size_t numberOfCPUs;

@implementation OFSystemInfo
+ (void)initialize
{
60
61
62
63
64
65
66
67

68
69
70
71
72
73
74
75
76
77
78
79
80
60
61
62
63
64
65
66

67

68
69
70
71
72
73
74
75
76
77
78
79







-
+
-












# endif
		numberOfCPUs = 1;
#endif
}

+ alloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

+ (size_t)pageSize
{
	return pageSize;
}

+ (size_t)numberOfCPUs
{
	return numberOfCPUs;
}
@end

Modified src/OFXMLNode.m from [d0cf0df8f6] to [84a940a509].

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
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







-
-













-
+
-







 * Public License, either version 2 or 3, which can be found in the file
 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
 * file.
 */

#include "config.h"

#include <stdlib.h>

#import "OFXMLNode.h"
#import "OFString.h"

#import "macros.h"

@implementation OFXMLNode
- initWithSerialization: (OFXMLElement*)element
{
	OF_INVALID_INIT_METHOD
}

- (OFString*)stringValue
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (intmax_t)decimalValue
{
	return [[self stringValue] decimalValue];
}

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
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







-
+
-









-
+
-







	return [self XMLStringWithIndentation: 0
					level: 0];
}

- (OFString*)XMLStringWithIndentation: (unsigned int)indentation
				level: (unsigned int)level
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (OFString*)description
{
	return [self XMLStringWithIndentation: 2];
}

- (OFXMLElement*)XMLElementBySerializing
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- copy
{
	return [self retain];
}
@end

Modified src/exceptions/OFAllocFailedException.m from [92f1626a0e] to [1bdbab1795].

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
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







-
-








-
+
-









-
+
-





-
+
-





-
+
-






-
+
-




-
+
-







 * Public License, either version 2 or 3, which can be found in the file
 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
 * file.
 */

#include "config.h"

#include <stdlib.h>

#import "OFAllocFailedException.h"
#import "OFString.h"

#import "macros.h"

@implementation OFAllocFailedException
+ alloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- init
{
	OF_INVALID_INIT_METHOD
}

- (void*)allocMemoryWithSize: (size_t)size
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void*)allocMemoryForNItems: (size_t)nitems
                     withSize: (size_t)size
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void*)resizeMemory: (void*)ptr
	       toSize: (size_t)size
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void*)resizeMemory: (void*)ptr
	     toNItems: (size_t)nitems
	     withSize: (size_t)size
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- (void)freeMemory: (void*)ptr
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();
}

- retain
{
	return self;
}

86
87
88
89
90
91
92
93

94
95
96
97
98
99
100
101
102
103
104
78
79
80
81
82
83
84

85

86
87
88
89
90
91
92
93
94
95







-
+
-











- (void)release
{
}

- (void)dealloc
{
	[self doesNotRecognizeSelector: _cmd];
	OF_UNRECOGNIZED_SELECTOR
	abort();

	/* Get rid of a stupid warning */
	[super dealloc];
}

- (OFString*)description
{
	return @"Allocating an object failed!";
}
@end

Modified src/macros.h from [0bb7e4c204] to [9204081dd6].

128
129
130
131
132
133
134



135
136
137
138
139
140
141
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144







+
+
+








#define OF_IVAR_OFFSET(ivar) ((intptr_t)&ivar - (intptr_t)self)
#define OF_GETTER(ivar, atomic) \
	return objc_getProperty(self, _cmd, OF_IVAR_OFFSET(ivar), atomic);
#define OF_SETTER(ivar, value, atomic, copy) \
	objc_setProperty(self, _cmd, OF_IVAR_OFFSET(ivar), value, atomic, copy);

#define OF_UNRECOGNIZED_SELECTOR		\
	[self doesNotRecognizeSelector: _cmd];	\
	abort();
#define OF_INVALID_INIT_METHOD				\
	@try {						\
		[self doesNotRecognizeSelector: _cmd];	\
	} @catch (id e) {				\
		[self release];				\
		@throw e;				\
	}						\