/trunk/Examples/test-suite/extend_placement.i
Swig | 107 lines | 83 code | 24 blank | 0 comment | 0 complexity | 319eefb2e08fb1a9119d3bbc07e791fd MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- %module extend_placement
- // Tests placement of %extend directives
- // Before the class
- %extend Foo {
- Foo(int a) { return new Foo(); }
- ~Foo() { delete $self;}
- int spam(int x) { return x; }
- int spam(int x, int y) { return x + y ; }
- int spam(int x, int y,int z) { return x + y ; }
- int spam(Foo f, double d = 10.0) { return 0; }
- };
- %inline %{
- class Foo {
- public:
- Foo(){}
- #ifdef SWIG
- %extend { Foo(int a, int b) { return new Foo(); } }
- #endif
- int spam() { return 1; }
- int spam(const char* c) { return 2; }
- };
- %}
- // After the class
- %inline %{
- class Bar {
- public:
- Bar() { }
- int spam() { return 1; }
- int spam(const char* c) { return 2; }
- };
- %}
- %extend Bar {
- Bar(int a) { return new Bar(); }
- ~Bar() { delete $self;}
- int spam() { return 1}
- int spam(int x) { return x; }
- int spam(int x, int y) { return x + y ; }
- int spam(int x, int y,int z) { return x + y ; }
- int spam(Bar b, double d = 10.0) { return 0; }
- };
- // testing templates
- // Before the class
- %extend FooT {
- FooT(int a) { return new FooT<T>(); }
- ~FooT() { delete $self;}
- int spam(int x) { return x; }
- int spam(int x, int y) { return x + y ; }
- int spam(int x, int y,int z) { return x + y ; }
- int spam(Foo f, double d = 10.0) { return 0; }
- };
- %inline %{
- template<class T>
- class FooT {
- public:
- FooT(){}
- #ifdef SWIG
- %extend { FooT(int a, int b) { return new FooT<T>(); } }
- #endif
- int spam() { return 1; }
- int spam(const char* c) { return 2; }
- };
- %}
- %template(FooTi) FooT<int>;
- // After the class
- %inline %{
- template<class T>
- class BarT {
- public:
- BarT() { }
- int spam() { return 1; }
- int spam(const char* c) { return 2; }
- };
- %}
- %extend BarT {
- BarT(int a) { return new BarT<T>(); }
- ~BarT() { delete $self;}
- int spam() { return 1}
- int spam(int x) { return x; }
- int spam(int x, int y) { return x + y ; }
- int spam(int x, int y,int z) { return x + y ; }
- int spam(Bar b, double d = 10.0) { return 0; }
- };
- %template(BarTi) BarT<int>;