From: Charlie S. <cf...@sa...> - 2006-08-30 06:15:07
|
Or look at %factory in the CHANGES files - its part of the unified type map library. Charlie William S Fulton wrote: > James Bigler wrote: >> Is it possible to define a typemap for polymorphic classes such that if >> you are supposed to return a base class you can return the actual class: >> >> class Parent { >> }; >> >> class GoodChild: public Parent { >> }; >> >> class BadChild: public Parent { >> }; >> >> >> %typemap(out) Parent* { >> GoodChild* result = dynamic_cast<GoodChild*>($1); >> if (result) { >> // Wrap result in a swigged GoodChild >> $result = SWIG_NewPointerObj(SWIG_as_voidptr(result), >> SWIGTYPE_p_GoodChild, SWIG_POINTER_NEW | 0 ); >> } >> BadChild* result = dynamic_cast<GoodChild*>($1); >> if (result) { >> // Wrap result in a swigged BadChild >> $result = SWIG_NewPointerObj(SWIG_as_voidptr(result), >> SWIGTYPE_p_BadChild, SWIG_POINTER_NEW | 0 ); >> } >> // Don't know the type so return the base pointer >> $result = $1; >> } >> >> Parent* foo(int type) { >> if (type == GOOD) { >> return new GoodChild(); >> else >> return new BadChild(); >> } >> > > Read about DYNAMIC_CAST in the CHANGES file. > > William > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 |