Hi Manu, You right :-).
I think in the introspection concept implemented by Marco Jez, If you use a getCompatibleConstructor(...) or other low-level method in osgIntrospection, you have to know the API as same as you write your code without introspection. David 2007/12/13, Emmanuel Roche < [EMAIL PROTECTED]>: > > Hi there ! > > in the osgIntropsection framework, we use getCompatibleConstructor(...) or > getCompatibleMethod(...), etc... to get a function considering the > parameters offered. But it this process do the framework take into account > the possible implicit parameter constructions ? > > I tried to check the sources, and as far as I understand, everything would > happen in the function if it was the case (for example for the implicit > convertion of a "const char*" object to "std::string"): > > bool Reflection::accum_conv_path(const Type& source, const Type& dest, > ConverterList& conv, std::vector<const Type* > &chain, CastType castType) > { > // break unwanted loops > if (std::find( chain.begin(), chain.end(), &source) != chain.end()) > return false; > > // store the type being processed to avoid loops > chain.push_back(&source); > > // search a converter from "source" > StaticData::ConverterMapMap::const_iterator i = > getOrCreateStaticData().convmap.find(&source); > if (i == getOrCreateStaticData().convmap.end()) > return false; > > // search a converter to "dest" > const StaticData::ConverterMap& cmap = i->second; > StaticData::ConverterMap::const_iterator j = cmap.find(&dest); > if (j != cmap.end() && (j->second->getCastType() == castType)) > { > conv.push_back(j->second); > return true; > } > > // search a undirect converter from "source" to ... to "dest" > for (j=cmap.begin(); j!=cmap.end(); ++j) > { > if ((j->second->getCastType() == castType) && > accum_conv_path(*j->first, dest, conv, chain, castType)) > { > conv.push_front(j->second); > return true; > } > } > > return false; > } > > ... but I can't see anything concerning the type constructors here, so I > guess that to call a function you need to pass the exact type of parameter > needed (with an exception for the derived classes, and inheritance system), > for example: > > with the function void myfunc(std::string arg1, osg::Node* obj) > > the reflection framework would find a compatible method with the arguments > : { std::string("test") , and osg::Group* myGroup } but it won't find > anything with the pair { "test", osg::Node* myNode }... Am I wrong ?? > > regards, > > Manu. > > > _______________________________________________ > osg-users mailing list > osg-users@lists.openscenegraph.org > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > >
_______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org