| #include <objc/Object.h> |
| |
| @interface BasicClass: Object |
| { |
| id object; |
| } |
| + newWithArg: arg; |
| - doIt; |
| - takeArg: arg; |
| - printHi; |
| - (int) printNumber: (int)number; |
| - (const char *) myDescription; |
| @end |
| |
| @interface BasicClass (Private) |
| - hiddenMethod; |
| @end |
| |
| @implementation BasicClass |
| + newWithArg: arg |
| { |
| id obj = [self new]; |
| [obj takeArg: arg]; |
| return obj; |
| } |
| |
| - doIt |
| { |
| return self; |
| } |
| |
| - takeArg: arg |
| { |
| object = arg; |
| [self hiddenMethod]; |
| return self; |
| } |
| |
| - printHi |
| { |
| printf("Hi\n"); |
| return self; |
| } |
| |
| - (int) printNumber: (int)number |
| { |
| printf("%d\n", number); |
| return number+1; |
| } |
| |
| - (const char *) myDescription |
| { |
| return "BasicClass gdb test object"; |
| } |
| |
| @end |
| |
| @implementation BasicClass (Private) |
| - hiddenMethod |
| { |
| return self; |
| } |
| @end |
| |
| int main (int argc, const char *argv[]) |
| { |
| id obj; |
| obj = [BasicClass new]; |
| [obj takeArg: obj]; |
| return 0; |
| } |
| |
| const char *_NSPrintForDebugger(id object) |
| { |
| /* This is not really what _NSPrintForDebugger should do, but it |
| is a simple test if gdb can call this function */ |
| if (object && [object respondsTo: @selector(myDescription)]) |
| return [object myDescription]; |
| |
| return NULL; |
| } |