Overview
Comment: | Implement +[OFObject inheritMethodsFromClass:] for the ObjFW runtime. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | runtime |
Files: | files | file ages | folders |
SHA3-256: |
54c4df2021ce2a411169d19bacb381d3 |
User & Date: | js on 2012-03-06 16:53:31 |
Other Links: | branch diff | manifest | tags |
Context
2012-03-06
| ||
17:09 | Fix a typo. check-in: 650f34cb63 user: js tags: runtime | |
16:53 | Implement +[OFObject inheritMethodsFromClass:] for the ObjFW runtime. check-in: 54c4df2021 user: js tags: runtime | |
16:31 | Merge changes from default branch into runtime branch. check-in: 9bb186a7a3 user: js tags: runtime | |
Changes
Modified src/OFObject.m from [5440e87ac8] to [cb4e4e0941].
︙ | ︙ | |||
36 37 38 39 40 41 42 | #import "OFMemoryNotPartOfObjectException.h" #import "OFNotImplementedException.h" #import "OFOutOfMemoryException.h" #import "OFOutOfRangeException.h" #import "macros.h" | | | 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #import "OFMemoryNotPartOfObjectException.h" #import "OFNotImplementedException.h" #import "OFOutOfMemoryException.h" #import "OFOutOfRangeException.h" #import "macros.h" #if defined(OF_APPLE_RUNTIME) && __OBJC2__ # import <objc/objc-exception.h> #elif defined(OF_OBJFW_RUNTIME) # import "runtime.h" #endif #ifdef _WIN32 # include <windows.h> |
︙ | ︙ | |||
90 91 92 93 94 95 96 | extern BOOL objc_sync_init(); #endif #ifdef NEED_OBJC_PROPERTIES_INIT extern BOOL objc_properties_init(); #endif | | | 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | extern BOOL objc_sync_init(); #endif #ifdef NEED_OBJC_PROPERTIES_INIT extern BOOL objc_properties_init(); #endif #if defined(OF_APPLE_RUNTIME) && __OBJC2__ static void uncaught_exception_handler(id exception) { fprintf(stderr, "\nUnhandled exception:\n%s\n", [[exception description] UTF8String]); } #endif |
︙ | ︙ | |||
146 147 148 149 150 151 152 | if (!objc_properties_init()) { fputs("Runtime error: objc_properties_init() failed!\n", stderr); abort(); } #endif | | | 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | if (!objc_properties_init()) { fputs("Runtime error: objc_properties_init() failed!\n", stderr); abort(); } #endif #if defined(OF_APPLE_RUNTIME) && __OBJC2__ objc_setUncaughtExceptionHandler(uncaught_exception_handler); #endif #ifdef HAVE_OBJC_ENUMERATIONMUTATION objc_setEnumerationMutationHandler(enumeration_mutation_handler); #endif |
︙ | ︙ | |||
385 386 387 388 389 390 391 | [self replaceInstanceMethod: selector withMethodFromClass: class]; } } @finally { free(methodList); } | > > | > > > | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 437 438 | [self replaceInstanceMethod: selector withMethodFromClass: class]; } } @finally { free(methodList); } #elif defined(OF_OBJFW_RUNTIME) struct objc_method_list *methodlist; for (methodlist = class->isa->methodlist; methodlist != NULL; methodlist = methodlist->next) { int i; for (i = 0; i < methodlist->count; i++) { SEL selector = &methodlist->methods[i].sel; /* * Don't replace methods implemented in receiving class. */ if ([self methodForSelector: selector] != [superclass methodForSelector: selector]) continue; [self replaceClassMethod: selector withMethodFromClass: class]; } } for (methodlist = class->methodlist; methodlist != NULL; methodlist = methodlist->next) { int i; for (i = 0; i < methodlist->count; i++) { SEL selector = &methodlist->methods[i].sel; /* * Don't replace methods implemented in receiving class. */ if ([self instanceMethodForSelector: selector] != [superclass instanceMethodForSelector: selector]) continue; [self replaceInstanceMethod: selector withMethodFromClass: class]; } } #endif [self inheritMethodsFromClass: [class superclass]]; } - init { |
︙ | ︙ |