mirror of https://github.com/swig/swig
41 lines
833 B
OpenEdge ABL
41 lines
833 B
OpenEdge ABL
%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;
|
|
};
|
|
|
|
%}
|