| %module iadd |
| |
| %include attribute.i |
| class Foo; |
| %attribute_ref(test::Foo, test::A& , AsA); |
| %attribute_ref(test::Foo, long, AsLong); |
| |
| |
| %inline %{ |
| struct B { |
| int x; |
| B(const int x) : x(x) {} |
| |
| B& get_me() |
| { |
| return *this; |
| } |
| |
| B& operator+=(const B& a) { |
| x += a.x; |
| return *this; |
| } |
| }; |
| |
| |
| |
| namespace test { |
| |
| struct A { |
| int x; |
| A(const int x) : x(x) {} |
| |
| A& get_me() |
| { |
| return *this; |
| } |
| |
| A operator+=(const A& a) { |
| x += a.x; |
| return *this; |
| } |
| }; |
| |
| |
| class Foo { |
| public: |
| Foo(): _a(new A(5)), _n(new long) {} |
| ~Foo() { delete _a; delete _n; _a = NULL; _n = NULL; } |
| |
| A & AsA() const { return *_a; } |
| long& AsLong() const { return *_n; } |
| private: |
| A *_a; |
| long *_n; |
| }; |
| } |
| |
| %} |