/tags/rel-1-3-29/SWIG/Examples/test-suite/director_abstract.i
Swig | 200 lines | 133 code | 58 blank | 9 comment | 0 complexity | db8e8c2d335923d1a133b58102311277 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- %module(directors="1") director_abstract
- %{
- #include <string>
- class Foo {
- public:
- virtual ~Foo() {}
- virtual std::string ping() = 0;
- virtual std::string pong() { return "Foo::pong();" + ping(); }
- };
- %}
- %include <std_string.i>
- %feature("director") Foo;
- class Foo {
- public:
- virtual ~Foo() {}
- virtual std::string ping() = 0;
- virtual std::string pong() { return "Foo::pong();" + ping(); }
- };
- %feature("director");
- %inline %{
- class Example0
- {
- protected:
- int xsize, ysize;
-
- public:
-
- Example0(int x, int y)
- : xsize(x), ysize(y) { }
- Example0() { }
- public:
- virtual ~Example0() {}
-
- int GetXSize() const { return xsize; }
-
- // pure virtual methods that must be overridden
- virtual int Color(unsigned char r, unsigned char g, unsigned char b)
- {
- return 0;
- }
-
- static int get_color(Example0 *ptr, unsigned char r,
- unsigned char g, unsigned char b) {
- return ptr->Color(r, g, b);
- }
- };
- class Example1
- {
- protected:
- int xsize, ysize;
-
- protected:
- /* this shouldn't be emitted, unless 'dirprot' is used, since they
- is already a public constructor */
-
- Example1(int x, int y)
- : xsize(x), ysize(y) { }
- public:
- Example1() { }
- public:
- virtual ~Example1() {}
-
- int GetXSize() const { return xsize; }
-
- // pure virtual methods that must be overridden
- virtual int Color(unsigned char r, unsigned char g, unsigned char b) = 0;
- static int get_color(Example1 *ptr, unsigned char r,
- unsigned char g, unsigned char b) {
- return ptr->Color(r, g, b);
- }
-
- };
- class Example2
- {
- protected:
- int xsize, ysize;
- protected:
- /* there is no default constructor, hence, all protected constructors
- should be emitted */
- Example2(int x)
- {
- }
- Example2(int x, int y)
- : xsize(x), ysize(y) { }
- public:
- virtual ~Example2() {}
- int GetXSize() const { return xsize; }
- // pure virtual methods that must be overridden
- virtual int Color(unsigned char r, unsigned char g, unsigned char b) = 0;
- static int get_color(Example2 *ptr, unsigned char r,
- unsigned char g, unsigned char b) {
- return ptr->Color(r, g, b);
- }
- };
- class Example4
- {
- protected:
- int xsize, ysize;
- protected:
- Example4()
- {
- }
- /* this is not emitted, unless dirprot is used */
- Example4(int x, int y)
- : xsize(x), ysize(y) { }
- public:
- virtual ~Example4() {}
- int GetXSize() const { return xsize; }
- // pure virtual methods that must be overridden
- virtual int Color(unsigned char r, unsigned char g, unsigned char b) = 0;
- static int get_color(Example4 *ptr, unsigned char r,
- unsigned char g, unsigned char b) {
- return ptr->Color(r, g, b);
- }
- };
- namespace ns
- {
- template <class T>
- class Example3
- {
- protected:
- /* the default constructor is always emitter, even when protected,
- having another public constructor, and 'dirprot' is not used.
- This is just for Java compatibility */
- Example3()
- {
- }
- /* this is no emitted, unless dirprot mode is used */
- Example3(int x) { }
- public:
-
- Example3(int x, int y) { }
- virtual ~Example3() {}
-
- // pure virtual methods that must be overridden
- virtual int Color(unsigned char r, unsigned char g, unsigned char b) = 0;
- static int get_color(Example3 *ptr, unsigned char r,
- unsigned char g, unsigned char b) {
- return ptr->Color(r, g, b);
- }
- };
- }
- %}
- %template(Example3_i) ns::Example3<int>;
- %inline %{
- struct A{
- virtual ~A() {}
- friend int g(A* obj);
- protected:
- A(const A&){}
- virtual int f() = 0;
- };
-
- int g(A* obj) {return 1;}
- %}