PageRenderTime 48ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/trunk/Examples/test-suite/extend.i

#
Swig | 53 lines | 49 code | 4 blank | 0 comment | 0 complexity | 33abc5dff56d4738ac09bc5f23f35097 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. %module extend
  2. %extend Base {
  3. ~Base() {
  4. delete $self;
  5. }
  6. static int zeroVal() {
  7. return 0;
  8. }
  9. virtual int currentValue() {
  10. return $self->value;
  11. }
  12. int extendmethod(int v) {
  13. int ret = $self->method(v);
  14. return ret * 2;
  15. }
  16. };
  17. %inline %{
  18. struct Base {
  19. Base(int v = 0) : value(v) {}
  20. int value;
  21. virtual int method(int v) {
  22. return v;
  23. }
  24. };
  25. struct Derived : Base {
  26. double actualval;
  27. };
  28. %}
  29. %{
  30. double extendval = 0;
  31. double Derived_extendval_get(Derived *self) {
  32. return self->actualval * 100;
  33. }
  34. void Derived_extendval_set(Derived *self, double d) {
  35. self->actualval = d/100;
  36. }
  37. %}
  38. %extend Derived {
  39. Derived(int v) {
  40. Derived *$self = new Derived();
  41. $self->value = v*2;
  42. return $self;
  43. }
  44. virtual int method(int v) {
  45. int ret = $self->Base::method(v);
  46. return ret * 2;
  47. }
  48. double extendval;
  49. }