mirror of https://github.com/swig/swig
89 lines
4.4 KiB
OpenEdge ABL
89 lines
4.4 KiB
OpenEdge ABL
// Tests primitives
|
|
// Note: C# module has a large runtime test
|
|
|
|
#pragma SWIG nowarn=SWIGWARN_TYPEMAP_THREAD_UNSAFE,SWIGWARN_TYPEMAP_DIRECTOROUT_PTR
|
|
|
|
%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) {}
|
|
virtual ~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(); }
|
|
};
|
|
|
|
%}
|
|
|