From: William F. <wsf...@us...> - 2006-11-13 22:32:45
|
Update of /cvsroot/swig/SWIG/Examples/test-suite In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv5938/Examples/test-suite Modified Files: common.mk Added Files: extend.i Log Message: More %extend tests - especially derived classes and $self tests Index: common.mk =================================================================== RCS file: /cvsroot/swig/SWIG/Examples/test-suite/common.mk,v retrieving revision 1.195 retrieving revision 1.196 diff -C2 -d -r1.195 -r1.196 *** common.mk 24 Oct 2006 20:50:38 -0000 1.195 --- common.mk 13 Nov 2006 22:32:41 -0000 1.196 *************** *** 153,156 **** --- 153,157 ---- exception_order \ exception_partial_info \ + extend \ extend_default \ extend_placement \ --- NEW FILE: extend.i --- %module extend %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) { } }; 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; } |