| %module extend |
| |
| #ifdef SWIGOCAML |
| %warnfilter(SWIGWARN_PARSE_KEYWORD) method; |
| #endif |
| |
| %extend Base { |
| ~Base() { |
| delete $self; |
| } |
| static int zeroVal() { |
| return 0; |
| } |
| virtual int currentValue() { |
| return $self->value; |
| } |
| int extendmethod(int v) { |
| int ret = $self->method(v); |
| return ret * 2; |
| } |
| }; |
| |
| %inline %{ |
| struct Base { |
| Base(int v = 0) : value(v) {} |
| int value; |
| virtual int method(int v) { |
| return v; |
| } |
| #if !defined(SWIG) |
| virtual ~Base() {} |
| #endif |
| }; |
| struct Derived : Base { |
| double actualval; |
| }; |
| %} |
| |
| %{ |
| double extendval = 0; |
| double Derived_extendval_get(Derived *self) { |
| return self->actualval * 100; |
| } |
| void Derived_extendval_set(Derived *self, double d) { |
| self->actualval = d/100; |
| } |
| %} |
| |
| %extend Derived { |
| Derived(int v) { |
| Derived *$self = new Derived(); |
| $self->value = v*2; |
| return $self; |
| } |
| virtual int method(int v) { |
| int ret = $self->Base::method(v); |
| return ret * 2; |
| } |
| double extendval; |
| } |