#include <stdio.h>
#include <objc/Object.h>

@interface Decode: Object
{
}
- multipleDef;
- (const char *) myDescription;
@end

@implementation Decode

- multipleDef
{
  printf("method multipleDef\n");
  return self;
}

- (const char *) myDescription
{
  return "Decode gdb test object";
}

@end

int
multipleDef()
{
  printf("function multipleDef\n");
  return 0;
}

int main (int argc, const char *argv[])
{
  id obj;
  obj = [Decode new];
  multipleDef();
  [obj multipleDef];
  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;
}
