| /* | |
| A modification of factory.swg from the generic UTL library. | |
| */ | |
| %include <typemaps/swigmacros.swg> | |
| %define %_factory_dispatch(Type) | |
| if (!dcast) { | |
| Type *dobj = dynamic_cast<Type *>($1); | |
| if (dobj) { | |
| dcast = 1; | |
| SWIG_NewPointerObj(L, dobj, $descriptor(Type *), $owner); SWIG_arg++; | |
| } | |
| }%enddef | |
| %define %factory(Method,Types...) | |
| %typemap(out) Method { | |
| int dcast = 0; | |
| %formacro(%_factory_dispatch, Types) | |
| if (!dcast) { | |
| SWIG_NewPointerObj(L, $1, $descriptor, $owner); SWIG_arg++; | |
| } | |
| }%enddef |