diff options
Diffstat (limited to 'trunk/Examples/test-suite/default_constructor.i')
-rw-r--r-- | trunk/Examples/test-suite/default_constructor.i | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/trunk/Examples/test-suite/default_constructor.i b/trunk/Examples/test-suite/default_constructor.i new file mode 100644 index 000000000..ff22c7834 --- /dev/null +++ b/trunk/Examples/test-suite/default_constructor.i @@ -0,0 +1,170 @@ +// This module tests default constructor generation under a +// number of different conditions + +%module(ruby_minherit="1") default_constructor + +%warnfilter(SWIGWARN_JAVA_MULTIPLE_INHERITANCE, + SWIGWARN_CSHARP_MULTIPLE_INHERITANCE, + SWIGWARN_PHP_MULTIPLE_INHERITANCE) EB; /* C#, Java, PHP multiple inheritance */ + +%warnfilter(SWIGWARN_JAVA_MULTIPLE_INHERITANCE, + SWIGWARN_CSHARP_MULTIPLE_INHERITANCE, + SWIGWARN_PHP_MULTIPLE_INHERITANCE) AD; /* C#, Java, PHP multiple inheritance */ + +%warnfilter(SWIGWARN_LANG_FRIEND_IGNORE) F; /* friend function */ + +%delobject F::destroy; +%delobject G::destroy; + +%inline %{ + +/* A class with a public default constructor */ +class A { +public: + A() { }; +}; + +/* This class should get default constructor/destructors */ +class AA : public A { +}; + +/* A class with a public constructor, but not default */ + +class B { +private: + B() { } +public: + B(int x, int y) { } +}; + +/* This class should get no default constructor, but a destructor */ +class BB : public B { +}; + +/* A class with a protected constructor */ +class C { +protected: + C() { }; +public: +}; + +/* This class does get a default constructor/destructor */ +class CC : public C { +}; + + +/* A class with a private constructor */ +class D { +private: + D() { }; +public: + void foo() { }; +}; + +/* This class does not get a default constructor */ +class DD: public D { + +}; + +/* No default constructor. A is okay, but D is not */ +class AD: public A, public D { + +}; + +/* This class has a default constructor because of optional arguments */ +class E { +public: + E(int x = 0, int y = 0) { } +}; + +/* This should get a default constructor */ +class EE : public E { +}; + +/* This class should not get a default constructor. B doesn't have one */ + +class EB : public E, public B { + +}; + +/* A class with a private destructor */ + +class F { +private: + ~F() { } +public: + void foo(int, int) { } + friend void bar(F *); + void destroy() { delete this; } + +}; + +void bar(F *) { } + +#if defined(_MSC_VER) + #pragma warning(disable: 4624) // : destructor could not be generated because a base class destructor is inaccessible +#endif +class FFF : public F { +}; +#if defined(_MSC_VER) + #pragma warning(default: 4624) // : destructor could not be generated because a base class destructor is inaccessible +#endif + +/* A class with a protected destructor */ +class G { +protected: + ~G() { } + +public: + static void destroy(G *g) { delete g; } +}; + +class GG : public G { +}; + +template <class T> +class HH_T +{ + + +public: + + HH_T(int i,int j) + { + } + + +protected: + HH_T(); + +}; + + +%} + + +%template(HH) HH_T<int>; + + +%{ + class OSRSpatialReferenceShadow { + private: + OSRSpatialReferenceShadow(); + public: + }; +%} + +typedef void OSRSpatialReferenceShadow; + +class OSRSpatialReferenceShadow { +private: +public: + %extend { + OSRSpatialReferenceShadow( char const * wkt = "" ) { + return 0; + } + } +}; + + + |