import source from 1.3.40
[external/swig.git] / Examples / test-suite / typedef_inherit.i
1 // Inheritance through a typedef name
2 %module typedef_inherit
3
4   
5 %inline %{
6 class Foo {
7 public:
8      virtual ~Foo () { }
9   
10      virtual char *blah() {
11         return (char *) "Foo::blah";
12      }
13 };
14
15 typedef Foo FooObj;
16
17 class Bar : public FooObj {
18  public:
19   virtual char *blah() {
20     return (char *) "Bar::blah";
21   };
22 };
23
24 char *do_blah(FooObj *f) {
25   return f->blah();
26 }
27
28 typedef struct spam {
29   virtual ~spam()
30   {
31   }
32   
33    virtual char *blah() {     
34        return (char *) "Spam::blah";
35    }
36 } Spam;
37
38 struct Grok : public Spam {
39    virtual ~Grok() { }
40    virtual char *blah() {
41        return (char *) "Grok::blah";
42    }
43 };
44
45 static char * do_blah2(Spam *s) {
46    return s->blah();
47 }
48 %}
49