blob: d490de535c4bd73ff203c5cf630ce2c687656622 [file] [log] [blame]
%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;
};
%}