mirror of https://github.com/swig/swig
115 lines
2.3 KiB
OpenEdge ABL
115 lines
2.3 KiB
OpenEdge ABL
%module(directors="1") director_frob;
|
|
#pragma SWIG nowarn=SWIGWARN_TYPEMAP_THREAD_UNSAFE,SWIGWARN_TYPEMAP_DIRECTOROUT_PTR
|
|
|
|
#ifdef SWIGSCILAB
|
|
%rename(cb) coreCallbacks;
|
|
%rename(On3dEngRedrawn) coreCallbacksOn3dEngineRedrawnData;
|
|
%rename (_On3dEngRedrawn) coreCallbacks_On3dEngineRedrawnData;
|
|
#endif
|
|
|
|
%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() {}
|
|
#if !defined(__SUNPRO_CC)
|
|
virtual operator int() { return 0; }
|
|
#endif
|
|
virtual operator int **() const {
|
|
return (int **) 0;
|
|
}
|
|
virtual operator int &() {
|
|
return num;
|
|
}
|
|
virtual operator void *() {
|
|
return (void *) this;
|
|
}
|
|
virtual operator const int *() {
|
|
return #
|
|
}
|
|
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){}
|
|
};
|
|
%}
|
|
|