git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5175 626c5289-ae23-0410-ae9c-e8d60b6d4f22
80 lines
1 KiB
OpenEdge ABL
80 lines
1 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; }
|
|
};
|
|
}
|
|
|
|
%define PTR_DEF(o)
|
|
typedef one::Ptr<o> o ## _ptr;
|
|
%template(o ## _ptr) one::Ptr<o>;
|
|
%enddef
|
|
|
|
namespace one
|
|
{
|
|
class Obj1
|
|
{
|
|
public:
|
|
Obj1() {}
|
|
void donothing() {}
|
|
};
|
|
|
|
PTR_DEF(Obj1)
|
|
}
|
|
|
|
namespace two
|
|
{
|
|
class Obj2
|
|
{
|
|
public:
|
|
Obj2() {}
|
|
void donothing() {}
|
|
};
|
|
|
|
PTR_DEF(Obj2)
|
|
}
|
|
|