1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
// This module tests default constructor generation under a
// number of different conditions
%module(ruby_minherit="1") default_constructor
%warnfilter(813,833) EB; /* C#, Java multiple inheritance */
%warnfilter(813,833) AD; /* C#, Java multiple inheritance */
%warnfilter(510) F; /* friend function */
%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 bar(F *) { }
class FFF : public F {
};
/* A class with a protected destructor */
class G {
protected:
~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>;
|