xref: /openbsd-src/gnu/usr.bin/binutils/gdb/testsuite/gdb.objc/basicclass.m (revision b725ae7711052a2233e31a66fefb8a752c388d7a)
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