%module typemap_documentation // A place for checking that documented typemaps are working. // The UTL languages are the only ones that are consistent enough to support these generic typemap functions. // These are in the Typemaps.html chapter. %inline %{ class Foo { public: int x; }; class Bar { public: int y; }; %} #if defined(SWIGUTL) %typemap(in) Foo * { if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &$1, $1_descriptor, 0))) { SWIG_exception_fail(SWIG_TypeError, "in method '$symname', expecting type Foo"); } } #endif %inline %{ int GrabVal(Foo *f) { return f->x; } %} #if defined(SWIGUTL) %typemap(in) Foo * { if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &$1, $1_descriptor, 0))) { Bar *temp; if (!SWIG_IsOK(SWIG_ConvertPtr($input, (void **) &temp, $descriptor(Bar *), 0))) { SWIG_exception_fail(SWIG_TypeError, "in method '$symname', expecting type Foo or Bar"); } $1 = (Foo *)temp; } } #endif %inline %{ int GrabValFooBar(Foo *f) { return f->x; } %}