33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# import <objc/sarray.h>
#endif
#ifdef _WIN32
# include <windows.h>
#endif
#ifdef OF_ATOMIC_OPS
# import "atomic.h"
#else
# import "threading.h"
#endif
/* A few macros to reduce #ifdefs */
|
>
>
|
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# import <objc/sarray.h>
#endif
#ifdef _WIN32
# include <windows.h>
#endif
#import "OFString.h"
#ifdef OF_ATOMIC_OPS
# import "atomic.h"
#else
# import "threading.h"
#endif
/* A few macros to reduce #ifdefs */
|
256
257
258
259
260
261
262
263
264
265
266
267
268
269
|
if ((ret = objc_get_type_encoding(self, selector)) == NULL)
@throw [OFNotImplementedException newWithClass: self
selector: selector];
return ret;
#endif
}
+ (IMP)setImplementation: (IMP)newimp
forClassMethod: (SEL)selector
{
#if defined(OF_OBJFW_RUNTIME)
if (newimp == (IMP)0 || !class_respondsToSelector(self->isa, selector))
@throw [OFInvalidArgumentException newWithClass: self
|
>
>
>
>
>
|
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
|
if ((ret = objc_get_type_encoding(self, selector)) == NULL)
@throw [OFNotImplementedException newWithClass: self
selector: selector];
return ret;
#endif
}
+ (OFString*)description
{
return [OFString stringWithCString: [self className]];
}
+ (IMP)setImplementation: (IMP)newimp
forClassMethod: (SEL)selector
{
#if defined(OF_OBJFW_RUNTIME)
if (newimp == (IMP)0 || !class_respondsToSelector(self->isa, selector))
@throw [OFInvalidArgumentException newWithClass: self
|
474
475
476
477
478
479
480
481
482
483
484
485
486
487
|
}
- (uint32_t)hash
{
/* Classes containing data should reimplement this! */
return (uint32_t)(uintptr_t)self;
}
- (void)addMemoryToPool: (void*)ptr
{
void **memchunks;
size_t memchunks_size;
memchunks_size = PRE_IVAR->memchunks_size + 1;
|
>
>
>
>
>
>
|
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
|
}
- (uint32_t)hash
{
/* Classes containing data should reimplement this! */
return (uint32_t)(uintptr_t)self;
}
- (OFString*)description
{
/* Classes containing data should reimplement this! */
return [OFString stringWithFormat: @"<%s: %p>", [self className], self];
}
- (void)addMemoryToPool: (void*)ptr
{
void **memchunks;
size_t memchunks_size;
memchunks_size = PRE_IVAR->memchunks_size + 1;
|