293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
|
+ (Class)class
{
return self;
}
+ (OFString *)className
{
return [OFString stringWithCString: class_getName(self)
encoding: OF_STRING_ENCODING_ASCII];
}
+ (bool)isSubclassOfClass: (Class)class
{
for (Class iter = self; iter != Nil; iter = class_getSuperclass(iter))
if (iter == class)
return true;
|
|
>
|
|
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
|
+ (Class)class
{
return self;
}
+ (OFString *)className
{
return [OFString
stringWithCString: (const char *)class_getName(self)
encoding: OF_STRING_ENCODING_ASCII];
}
+ (bool)isSubclassOfClass: (Class)class
{
for (Class iter = self; iter != Nil; iter = class_getSuperclass(iter))
if (iter == class)
return true;
|
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
|
withMethodFromClass: (Class)class
{
IMP method = [class methodForSelector: selector];
if (method == NULL)
@throw [OFInvalidArgumentException exception];
return class_replaceMethod(object_getClass(self), selector,
(IMP _Nonnull)method,
typeEncodingForSelector(object_getClass(class), selector));
}
+ (IMP)replaceInstanceMethod: (SEL)selector
withMethodFromClass: (Class)class
{
IMP method = [class instanceMethodForSelector: selector];
if (method == NULL)
@throw [OFInvalidArgumentException exception];
return class_replaceMethod(self, selector, (IMP _Nonnull)method,
typeEncodingForSelector(class, selector));
}
+ (void)inheritMethodsFromClass: (Class)class
{
Class superclass = [self superclass];
|
|
<
|
>
|
|
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
|
withMethodFromClass: (Class)class
{
IMP method = [class methodForSelector: selector];
if (method == NULL)
@throw [OFInvalidArgumentException exception];
return class_replaceMethod((Class)object_getClass(self), selector,
(IMP)method, typeEncodingForSelector(object_getClass(class),
selector));
}
+ (IMP)replaceInstanceMethod: (SEL)selector
withMethodFromClass: (Class)class
{
IMP method = [class instanceMethodForSelector: selector];
if (method == NULL)
@throw [OFInvalidArgumentException exception];
return class_replaceMethod(self, selector, (IMP)method,
typeEncodingForSelector(class, selector));
}
+ (void)inheritMethodsFromClass: (Class)class
{
Class superclass = [self superclass];
|
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
|
- init
{
return self;
}
- (Class)class
{
return (Class _Nonnull)object_getClass(self);
}
- (Class)superclass
{
return class_getSuperclass(object_getClass(self));
}
- (OFString *)className
{
return [OFString stringWithCString: object_getClassName(self)
encoding: OF_STRING_ENCODING_ASCII];
}
- (bool)isKindOfClass: (Class)class
{
for (Class iter = object_getClass(self); iter != Nil;
iter = class_getSuperclass(iter))
if (iter == class)
|
|
|
>
|
|
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
|
- init
{
return self;
}
- (Class)class
{
return (Class)object_getClass(self);
}
- (Class)superclass
{
return class_getSuperclass(object_getClass(self));
}
- (OFString *)className
{
return [OFString
stringWithCString: (const char *)object_getClassName(self)
encoding: OF_STRING_ENCODING_ASCII];
}
- (bool)isKindOfClass: (Class)class
{
for (Class iter = object_getClass(self); iter != Nil;
iter = class_getSuperclass(iter))
if (iter == class)
|
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
|
- (void *)allocMemoryWithSize: (size_t)size
{
void *pointer;
struct pre_mem *preMem;
if OF_UNLIKELY (size == 0)
return (void *_Nonnull)NULL;
if OF_UNLIKELY (size > SIZE_MAX - PRE_IVARS_ALIGN)
@throw [OFOutOfRangeException exception];
if OF_UNLIKELY ((pointer = malloc(PRE_MEM_ALIGN + size)) == NULL)
@throw [OFOutOfMemoryException
exceptionWithRequestedSize: size];
|
|
|
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
|
- (void *)allocMemoryWithSize: (size_t)size
{
void *pointer;
struct pre_mem *preMem;
if OF_UNLIKELY (size == 0)
return NULL;
if OF_UNLIKELY (size > SIZE_MAX - PRE_IVARS_ALIGN)
@throw [OFOutOfRangeException exception];
if OF_UNLIKELY ((pointer = malloc(PRE_MEM_ALIGN + size)) == NULL)
@throw [OFOutOfMemoryException
exceptionWithRequestedSize: size];
|