mirror of https://github.com/swig/swig
79 lines
1.4 KiB
OpenEdge ABL
79 lines
1.4 KiB
OpenEdge ABL
%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
|
|
|
|
%{
|
|
#include <stdlib.h>
|
|
%}
|
|
|
|
%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;
|
|
}
|
|
};
|
|
%}
|