mirror of https://github.com/swig/swig
80 lines
1.0 KiB
OpenEdge ABL
80 lines
1.0 KiB
OpenEdge ABL
|
|
%module smart_pointer_namespace2
|
|
%{
|
|
namespace one
|
|
{
|
|
template <typename T>
|
|
class Ptr
|
|
{
|
|
T* p;
|
|
public:
|
|
Ptr(T *tp) : p(tp) {}
|
|
~Ptr() { };
|
|
T* operator->() { return p; }
|
|
};
|
|
}
|
|
namespace one
|
|
{
|
|
class Obj1
|
|
{
|
|
public:
|
|
Obj1() {}
|
|
void donothing() {}
|
|
};
|
|
typedef one::Ptr<Obj1> Obj1_ptr;
|
|
}
|
|
|
|
namespace two
|
|
{
|
|
class Obj2
|
|
{
|
|
public:
|
|
Obj2() {}
|
|
void donothing() {}
|
|
};
|
|
typedef one::Ptr<Obj2> Obj2_ptr;
|
|
}
|
|
%}
|
|
|
|
namespace one
|
|
{
|
|
template <typename T>
|
|
class Ptr
|
|
{
|
|
T* p;
|
|
public:
|
|
Ptr(T *tp) : p(tp) {}
|
|
~Ptr() { };
|
|
T* operator->() { return p; }
|
|
};
|
|
}
|
|
|
|
namespace one
|
|
{
|
|
class Obj1
|
|
{
|
|
public:
|
|
Obj1() {}
|
|
void donothing() {}
|
|
};
|
|
|
|
typedef one::Ptr<Obj1> Obj1_ptr;
|
|
%template(Obj1_ptr) one::Ptr<Obj1>;
|
|
}
|
|
|
|
namespace two
|
|
{
|
|
class Obj2
|
|
{
|
|
public:
|
|
Obj2() {}
|
|
void donothing() {}
|
|
};
|
|
|
|
typedef one::Ptr<Obj2> Obj2_ptr;
|
|
}
|
|
|
|
using two::Obj2;
|
|
%template(Obj2_ptr) one::Ptr<Obj2>;
|
|
|