1899
|
1 /*
|
|
2 A modification of factory.swg from the generic UTL library.
|
|
3 */
|
|
4
|
|
5 %include <typemaps/swigmacros.swg>
|
|
6
|
|
7 %define %_factory_dispatch(Type)
|
|
8 if (!dcast) {
|
|
9 Type *dobj = dynamic_cast<Type *>($1);
|
|
10 if (dobj) {
|
|
11 dcast = 1;
|
|
12 SWIG_NewPointerObj(L, dobj, $descriptor(Type *), $owner); SWIG_arg++;
|
|
13 }
|
|
14 }%enddef
|
|
15
|
|
16 %define %factory(Method,Types...)
|
|
17 %typemap(out) Method {
|
|
18 int dcast = 0;
|
|
19 %formacro(%_factory_dispatch, Types)
|
|
20 if (!dcast) {
|
|
21 SWIG_NewPointerObj(L, $1, $descriptor, $owner); SWIG_arg++;
|
|
22 }
|
|
23 }%enddef
|