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