| %module r_memory_leak |
| |
| %include <std_string.i> |
| |
| %typemap(in) Foo* foo |
| { |
| $1 = new Foo; |
| } |
| %typemap(freearg) Foo* foo |
| { |
| printf(" \" Object deleted\"\n"); |
| delete $1; |
| } |
| %typemap(out) Foo* verify_no_memory_leak |
| { |
| if ($1 == NULL) |
| SWIG_exception_fail(SWIG_RuntimeError, "Let's see how the bindings manage this exception!"); |
| } |
| %typemap(scoerceout) Foo* |
| %{ if (!is.null($result) && !is.logical($result)) {$result <- new("$R_class", ref=$result) ;}; %} |
| |
| %inline %{ |
| #include <string> |
| |
| class Foo { |
| static unsigned count; |
| public: |
| Foo() { ++count; } |
| ~Foo() { --count; } |
| static unsigned get_count() { return count; } |
| }; |
| |
| unsigned Foo::count = 0; |
| |
| static Foo* trigger_internal_swig_exception(const std::string& message, Foo* foo) |
| { |
| return (message == "null") ? NULL : foo; |
| }; |
| |
| %} |