1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
%module smart_pointer_template_const_overload
%warnfilter(SWIGWARN_LANG_OVERLOAD_IGNORED) SmartPointer<FooImplementation>::operator->; // Overloaded method SmartPointer< FooImplementation >::operator ->() ignored
%inline %{
template <class T> class SmartPointer {
T *ptr;
public:
SmartPointer(T *t = 0) : ptr(t) {}
inline const T * operator->() const { return ptr; }
inline T * operator->() { return ptr; }
};
class FooImplementation {
public:
int mingy() { return 0; }
int constmingy() const { return 0; }
static int thingy() { return 0; }
static int svariable;
static const int constsvariable;
int normalvariable;
};
int FooImplementation::svariable = 0;
const int FooImplementation::constsvariable = 2;
void tester() {
SmartPointer<FooImplementation> p;
p->mingy();
p->constmingy();
p->thingy();
int a = p->svariable;
a = p->constsvariable;
a = p->normalvariable;
}
%}
%template(FooSmartPointer) SmartPointer<FooImplementation>;
|