1*b725ae77Skettenis#include <objc/Object.h> 2*b725ae77Skettenis 3*b725ae77Skettenis@interface BasicClass: Object 4*b725ae77Skettenis{ 5*b725ae77Skettenis id object; 6*b725ae77Skettenis} 7*b725ae77Skettenis+ newWithArg: arg; 8*b725ae77Skettenis- doIt; 9*b725ae77Skettenis- takeArg: arg; 10*b725ae77Skettenis- printHi; 11*b725ae77Skettenis- (int) printNumber: (int)number; 12*b725ae77Skettenis- (const char *) myDescription; 13*b725ae77Skettenis@end 14*b725ae77Skettenis 15*b725ae77Skettenis@interface BasicClass (Private) 16*b725ae77Skettenis- hiddenMethod; 17*b725ae77Skettenis@end 18*b725ae77Skettenis 19*b725ae77Skettenis@implementation BasicClass 20*b725ae77Skettenis+ newWithArg: arg 21*b725ae77Skettenis{ 22*b725ae77Skettenis id obj = [self new]; 23*b725ae77Skettenis [obj takeArg: arg]; 24*b725ae77Skettenis return obj; 25*b725ae77Skettenis} 26*b725ae77Skettenis 27*b725ae77Skettenis- doIt 28*b725ae77Skettenis{ 29*b725ae77Skettenis return self; 30*b725ae77Skettenis} 31*b725ae77Skettenis 32*b725ae77Skettenis- takeArg: arg 33*b725ae77Skettenis{ 34*b725ae77Skettenis object = arg; 35*b725ae77Skettenis [self hiddenMethod]; 36*b725ae77Skettenis return self; 37*b725ae77Skettenis} 38*b725ae77Skettenis 39*b725ae77Skettenis- printHi 40*b725ae77Skettenis{ 41*b725ae77Skettenis printf("Hi\n"); 42*b725ae77Skettenis return self; 43*b725ae77Skettenis} 44*b725ae77Skettenis 45*b725ae77Skettenis- (int) printNumber: (int)number 46*b725ae77Skettenis{ 47*b725ae77Skettenis printf("%d\n", number); 48*b725ae77Skettenis return number+1; 49*b725ae77Skettenis} 50*b725ae77Skettenis 51*b725ae77Skettenis- (const char *) myDescription 52*b725ae77Skettenis{ 53*b725ae77Skettenis return "BasicClass gdb test object"; 54*b725ae77Skettenis} 55*b725ae77Skettenis 56*b725ae77Skettenis@end 57*b725ae77Skettenis 58*b725ae77Skettenis@implementation BasicClass (Private) 59*b725ae77Skettenis- hiddenMethod 60*b725ae77Skettenis{ 61*b725ae77Skettenis return self; 62*b725ae77Skettenis} 63*b725ae77Skettenis@end 64*b725ae77Skettenis 65*b725ae77Skettenisint main (int argc, const char *argv[]) 66*b725ae77Skettenis{ 67*b725ae77Skettenis id obj; 68*b725ae77Skettenis obj = [BasicClass new]; 69*b725ae77Skettenis [obj takeArg: obj]; 70*b725ae77Skettenis return 0; 71*b725ae77Skettenis} 72*b725ae77Skettenis 73*b725ae77Skettenisconst char *_NSPrintForDebugger(id object) 74*b725ae77Skettenis{ 75*b725ae77Skettenis /* This is not really what _NSPrintForDebugger should do, but it 76*b725ae77Skettenis is a simple test if gdb can call this function */ 77*b725ae77Skettenis if (object && [object respondsTo: @selector(myDescription)]) 78*b725ae77Skettenis return [object myDescription]; 79*b725ae77Skettenis 80*b725ae77Skettenis return NULL; 81*b725ae77Skettenis} 82