mirror of https://github.com/swig/swig
110 lines
2.0 KiB
OpenEdge ABL
110 lines
2.0 KiB
OpenEdge ABL
%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
|
|
|
|
%warnfilter(SWIGWARN_PARSE_REDEFINED) BarT<int>::spam();
|
|
|
|
%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>;
|