blob: cf555eb6631830b4f71daf5b8cd84a23668865cf [file] [log] [blame]
%module(directors="1") director_frob;
#pragma SWIG nowarn=SWIGWARN_TYPEMAP_THREAD_UNSAFE,SWIGWARN_TYPEMAP_DIRECTOROUT_PTR
%header %{
#include <iostream>
%}
%feature("director");
%feature("nodirector") Bravo::abs_method(); // ok
%feature("director") Charlie::abs_method(); // ok
%feature("nodirector") Delta::abs_method(); // ok
%inline %{
struct Alpha
{
virtual ~Alpha() { };
virtual const char* abs_method() = 0;
};
struct Bravo : Alpha
{
const char* abs_method()
{
return "Bravo::abs_method()";
}
};
struct Charlie : Bravo
{
const char* abs_method()
{
return "Charlie::abs_method()";
}
};
struct Delta : Charlie
{
};
%}
%rename(OpInt) operator int();
%rename(OpIntStarStarConst) operator int **() const;
%rename(OpIntAmp) operator int &();
%rename(OpIntStar) operator void *();
%rename(OpConstIntIntStar) operator const int *();
%inline %{
class Ops {
public:
Ops() : num(0) {}
virtual ~Ops() {}
virtual operator int() { return 0; }
virtual operator int **() const {
return (int **) 0;
}
virtual operator int &() {
return num;
}
virtual operator void *() {
return (void *) this;
}
virtual operator const int *() {
return &num;
}
private:
int num;
};
struct Prims {
virtual ~Prims() {}
virtual unsigned long long ull(unsigned long long i, unsigned long long j) { return i + j; }
unsigned long long callull(int i, int j) { return ull(i, j); }
};
%}
// The similarity of the director class name and other symbol names were causing a problem in the code generation
%feature("director") coreCallbacks;
%inline %{
class corePoint3d {};
struct coreCallbacks_On3dEngineRedrawnData
{
corePoint3d _eye;
corePoint3d _at;
};
struct coreCallbacksOn3dEngineRedrawnData
{
corePoint3d _eye;
corePoint3d _at;
};
class coreCallbacks
{
public:
coreCallbacks(void) {}
virtual ~coreCallbacks(void) {}
virtual void On3dEngineRedrawn(const coreCallbacks_On3dEngineRedrawnData& data){}
virtual void On3dEngineRedrawn2(const coreCallbacksOn3dEngineRedrawnData& data){}
};
%}