blob: 75a137b73fefb5dd41ab1bceba28c8ea851959d7 [file] [log] [blame]
%module smart_pointer_const_overload
%warnfilter(SWIGWARN_LANG_OVERLOAD_IGNORED) Bar::operator->; // Overloaded method Bar::operator ->() ignored
%warnfilter(SWIGWARN_LANG_OVERLOAD_IGNORED) Bar2::operator->; // Overloaded method Bar2::operator ->() ignored
%inline %{
int CONST_ACCESS = 1;
int MUTABLE_ACCESS = 2;
int *new_int(int ivalue) {
int *i = (int *) malloc(sizeof(ivalue));
*i = ivalue;
return i;
}
int get_int(int *i) {
return *i;
}
void set_int(int *i, int ivalue) {
*i = ivalue;
}
void delete_int(int *i) {
free(i);
}
struct Foo {
int x;
int * const xp;
const int y;
const int *yp;
int access;
Foo() : x(0), xp(&x), y(0), yp(&y), access(0) { }
int getx() const { return x; }
void setx(int x_) { x = x_; }
static void statMethod() {}
};
%}
%extend Foo {
int getx2() const { return self->x; }
void setx2(int x_) { self->x = x_; }
};
%inline %{
class Bar {
Foo *f;
public:
Bar(Foo *f) : f(f) { }
const Foo *operator->() const {
f->access = CONST_ACCESS;
return f;
}
Foo *operator->() {
f->access = MUTABLE_ACCESS;
return f;
}
};
class Bar2 {
Foo *f;
public:
Bar2(Foo *f) : f(f) { }
Foo *operator->() {
f->access = MUTABLE_ACCESS;
return f;
}
const Foo *operator->() const {
f->access = CONST_ACCESS;
return f;
}
};
%}