More director tests
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@9103 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
5ea73416b5
commit
3143fa70f7
2 changed files with 188 additions and 0 deletions
102
SWIG/Examples/test-suite/director_classes.i
Normal file
102
SWIG/Examples/test-suite/director_classes.i
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
// Tests primitives
|
||||
// Note: C# module has a large runtime test
|
||||
|
||||
%module(directors="1") director_classes
|
||||
|
||||
%feature("director") Base;
|
||||
%feature("director") Derived;
|
||||
|
||||
%include "std_string.i"
|
||||
|
||||
%inline %{
|
||||
#include <cstdio>
|
||||
#include <iostream>
|
||||
|
||||
|
||||
// Use for debugging
|
||||
bool PrintDebug = false;
|
||||
|
||||
|
||||
struct DoubleHolder
|
||||
{
|
||||
DoubleHolder(double v = 0.0) : val(v) {}
|
||||
double val;
|
||||
};
|
||||
|
||||
class Base {
|
||||
protected:
|
||||
double m_dd;
|
||||
public:
|
||||
|
||||
Base(double dd) : m_dd(dd) {}
|
||||
virtual ~Base() {}
|
||||
|
||||
virtual DoubleHolder Val(DoubleHolder x) { if (PrintDebug) std::cout << "Base - Val(" << x.val << ")" << std::endl; return x; }
|
||||
virtual DoubleHolder& Ref(DoubleHolder& x) { if (PrintDebug) std::cout << "Base - Ref(" << x.val << ")" << std::endl; return x; }
|
||||
virtual DoubleHolder* Ptr(DoubleHolder* x) { if (PrintDebug) std::cout << "Base - Ptr(" << x->val << ")" << std::endl; return x; }
|
||||
|
||||
virtual std::string FullyOverloaded(int x) { if (PrintDebug) std::cout << "Base - FullyOverloaded(int " << x << ")" << std::endl; return "Base::FullyOverloaded(int)"; }
|
||||
virtual std::string FullyOverloaded(bool x) { if (PrintDebug) std::cout << "Base - FullyOverloaded(bool " << x << ")" << std::endl; return "Base::FullyOverloaded(bool)"; }
|
||||
|
||||
virtual std::string SemiOverloaded(int x) { if (PrintDebug) std::cout << "Base - SemiOverloaded(int " << x << ")" << std::endl; return "Base::SemiOverloaded(int)"; }
|
||||
virtual std::string SemiOverloaded(bool x) { if (PrintDebug) std::cout << "Base - SemiOverloaded(bool " << x << ")" << std::endl; return "Base::SemiOverloaded(bool)"; }
|
||||
|
||||
virtual std::string DefaultParms(int x, double y = 1.1) {
|
||||
if (PrintDebug) std::cout << "Base - DefaultParms(" << x << ", " << y << ")" << std::endl;
|
||||
std::string ret("Base::DefaultParms(int");
|
||||
if (y!=1.1)
|
||||
ret = ret + std::string(", double");
|
||||
ret = ret + std::string(")");
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
|
||||
class Derived : public Base {
|
||||
public:
|
||||
Derived(double dd) : Base(dd) {}
|
||||
virtual ~Derived() {}
|
||||
|
||||
virtual DoubleHolder Val(DoubleHolder x) { if (PrintDebug) std::cout << "Derived - Val(" << x.val << ")" << std::endl; return x; }
|
||||
virtual DoubleHolder& Ref(DoubleHolder& x) { if (PrintDebug) std::cout << "Derived - Ref(" << x.val << ")" << std::endl; return x; }
|
||||
virtual DoubleHolder* Ptr(DoubleHolder* x) { if (PrintDebug) std::cout << "Derived - Ptr(" << x->val << ")" << std::endl; return x; }
|
||||
|
||||
virtual std::string FullyOverloaded(int x) { if (PrintDebug) std::cout << "Derived - FullyOverloaded(int " << x << ")" << std::endl; return "Derived::FullyOverloaded(int)"; }
|
||||
virtual std::string FullyOverloaded(bool x) { if (PrintDebug) std::cout << "Derived - FullyOverloaded(bool " << x << ")" << std::endl; return "Derived::FullyOverloaded(bool)"; }
|
||||
|
||||
virtual std::string SemiOverloaded(int x) { if (PrintDebug) std::cout << "Derived - SemiOverloaded(int " << x << ")" << std::endl; return "Derived::SemiOverloaded(int)"; }
|
||||
// No SemiOverloaded(bool x)
|
||||
|
||||
virtual std::string DefaultParms(int x, double y = 1.1) {
|
||||
if (PrintDebug) std::cout << "Derived - DefaultParms(" << x << ", " << y << ")" << std::endl;
|
||||
std::string ret("Derived::DefaultParms(int");
|
||||
if (y!=1.1)
|
||||
ret = ret + std::string(", double");
|
||||
ret = ret + std::string(")");
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class Caller {
|
||||
private:
|
||||
Base *m_base;
|
||||
void delBase() { delete m_base; m_base = 0; }
|
||||
public:
|
||||
Caller(): m_base(0) {}
|
||||
~Caller() { delBase(); }
|
||||
void set(Base *b) { delBase(); m_base = b; }
|
||||
void reset() { m_base = 0; }
|
||||
|
||||
DoubleHolder ValCall(DoubleHolder x) { return m_base->Val(x); }
|
||||
DoubleHolder& RefCall(DoubleHolder& x) { return m_base->Ref(x); }
|
||||
DoubleHolder* PtrCall(DoubleHolder* x) { return m_base->Ptr(x); }
|
||||
std::string FullyOverloadedCall(int x) { return m_base->FullyOverloaded(x); }
|
||||
std::string FullyOverloadedCall(bool x) { return m_base->FullyOverloaded(x); }
|
||||
std::string SemiOverloadedCall(int x) { return m_base->SemiOverloaded(x); }
|
||||
std::string SemiOverloadedCall(bool x) { return m_base->SemiOverloaded(x); }
|
||||
std::string DefaultParmsCall(int x) { return m_base->DefaultParms(x); }
|
||||
std::string DefaultParmsCall(int x, double y) { return m_base->DefaultParms(x, y); }
|
||||
};
|
||||
|
||||
%}
|
||||
|
||||
86
SWIG/Examples/test-suite/director_primitives.i
Normal file
86
SWIG/Examples/test-suite/director_primitives.i
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
// Tests classes passed by value, pointer and reference
|
||||
// Note: C# module has a large runtime test
|
||||
|
||||
%module(directors="1") director_primitives
|
||||
|
||||
%feature("director") Base;
|
||||
%feature("director") Derived;
|
||||
|
||||
%include "std_string.i"
|
||||
|
||||
%inline %{
|
||||
#include <cstdio>
|
||||
#include <iostream>
|
||||
|
||||
|
||||
// Use for debugging
|
||||
bool PrintDebug = false;
|
||||
|
||||
enum HShadowMode
|
||||
{
|
||||
HShadowNone = 1,
|
||||
HShadowSoft = 2,
|
||||
HShadowHard = 3
|
||||
};
|
||||
|
||||
class Base {
|
||||
protected:
|
||||
double m_dd;
|
||||
public:
|
||||
|
||||
Base(double dd) : m_dd(dd) {}
|
||||
virtual ~Base() {}
|
||||
|
||||
virtual void NoParmsMethod() { if (PrintDebug) std::cout << "Base - NoParmsMethod()" << std::endl; }
|
||||
virtual bool BoolMethod(bool x) { if (PrintDebug) std::cout << "Base - BoolMethod(" << x << ")" << std::endl; return x; }
|
||||
virtual int IntMethod(int x) { if (PrintDebug) std::cout << "Base - IntMethod(" << x << ")" << std::endl; return x; }
|
||||
virtual unsigned int UIntMethod(unsigned int x) { if (PrintDebug) std::cout << "Base - UIntMethod(" << x << ")" << std::endl; return x; }
|
||||
virtual float FloatMethod(float x) { if (PrintDebug) std::cout << "Base - FloatMethod(" << x << ")" << std::endl; return x; }
|
||||
virtual char * CharPtrMethod(char * x) { if (PrintDebug) std::cout << "Base - CharPtrMethod(" << x << ")" << std::endl; return x; }
|
||||
virtual const char * ConstCharPtrMethod(const char * x) { if (PrintDebug) std::cout << "Base - ConstCharPtrMethod(" << x << ")" << std::endl; return x; }
|
||||
virtual HShadowMode EnumMethod(HShadowMode x) { if (PrintDebug) std::cout << "Base - EnumMethod(" << x << ")" << std::endl; return x; }
|
||||
virtual void ManyParmsMethod(bool b, int i, unsigned int u, float f, char * c, const char * cc, HShadowMode h) { if (PrintDebug) std::cout << "Base - ManyParmsMethod(" << b << ", " << i << ", " << u << ", " << f << ", " << c << ", " << cc << ", " << h << ")" << std::endl; }
|
||||
virtual void NotOverriddenMethod() { if (PrintDebug) std::cout << "Base - NotOverriddenMethod()" << std::endl; }
|
||||
};
|
||||
|
||||
class Derived : public Base {
|
||||
public:
|
||||
Derived(double dd) : Base(dd) {}
|
||||
virtual ~Derived() {}
|
||||
|
||||
virtual void NoParmsMethod() { if (PrintDebug) std::cout << "Derived - NoParmsMethod()" << std::endl; }
|
||||
virtual bool BoolMethod(bool x) { if (PrintDebug) std::cout << "Derived - BoolMethod(" << x << ")" << std::endl; return x; }
|
||||
virtual int IntMethod(int x) { if (PrintDebug) std::cout << "Derived - IntMethod(" << x << ")" << std::endl; return x; }
|
||||
virtual unsigned int UIntMethod(unsigned int x) { if (PrintDebug) std::cout << "Derived - UIntMethod(" << x << ")" << std::endl; return x; }
|
||||
virtual float FloatMethod(float x) { if (PrintDebug) std::cout << "Derived - FloatMethod(" << x << ")" << std::endl; return x; }
|
||||
virtual char * CharPtrMethod(char * x) { if (PrintDebug) std::cout << "Derived - CharPtrMethod(" << x << ")" << std::endl; return x; }
|
||||
virtual const char * ConstCharPtrMethod(const char * x) { if (PrintDebug) std::cout << "Derived - ConstCharPtrMethod(" << x << ")" << std::endl; return x; }
|
||||
virtual HShadowMode EnumMethod(HShadowMode x) { if (PrintDebug) std::cout << "Derived - EnumMethod(" << x << ")" << std::endl; return x; }
|
||||
virtual void ManyParmsMethod(bool b, int i, unsigned int u, float f, char * c, const char * cc, HShadowMode h) { if (PrintDebug) std::cout << "Derived - ManyParmsMethod(" << b << ", " << i << ", " << u << ", " << f << ", " << c << ", " << cc << ", " << h << ")" << std::endl; }
|
||||
};
|
||||
|
||||
|
||||
class Caller {
|
||||
private:
|
||||
Base *m_base;
|
||||
void delBase() { delete m_base; m_base = 0; }
|
||||
public:
|
||||
Caller(): m_base(0) {}
|
||||
~Caller() { delBase(); }
|
||||
void set(Base *b) { delBase(); m_base = b; }
|
||||
void reset() { m_base = 0; }
|
||||
|
||||
void NoParmsMethodCall() { m_base->NoParmsMethod(); }
|
||||
bool BoolMethodCall(bool x) { return m_base->BoolMethod(x); }
|
||||
int IntMethodCall(int x) { return m_base->IntMethod(x); }
|
||||
unsigned int UIntMethodCall(unsigned int x) { return m_base->UIntMethod(x); }
|
||||
float FloatMethodCall(float x) { return m_base->FloatMethod(x); }
|
||||
char * CharPtrMethodCall(char * x) { return m_base->CharPtrMethod(x); }
|
||||
const char * ConstCharPtrMethodCall(const char * x) { return m_base->ConstCharPtrMethod(x); }
|
||||
HShadowMode EnumMethodCall(HShadowMode x) { return m_base->EnumMethod(x); }
|
||||
virtual void ManyParmsMethodCall(bool b, int i, unsigned int u, float f, char * c, const char * cc, HShadowMode h) { return m_base->ManyParmsMethod(b, i, u, f, c, cc, h); }
|
||||
virtual void NotOverriddenMethodCall() { m_base->NotOverriddenMethod(); }
|
||||
};
|
||||
|
||||
%}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue