summaryrefslogtreecommitdiff
path: root/trunk/Examples/test-suite/default_constructor.i
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/Examples/test-suite/default_constructor.i')
-rw-r--r--trunk/Examples/test-suite/default_constructor.i170
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;
+ }
+ }
+};
+
+
+