From: Robert L. <rle...@us...> - 2007-03-19 08:11:38
|
Update of /cvsroot/ccmtools/ccmtools/src/templates/CppLocalTemplates In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv9053/src/templates/CppLocalTemplates Modified Files: MHomeDef Log Message: static method 'find_by_name' for each home adapter Index: MHomeDef =================================================================== RCS file: /cvsroot/ccmtools/ccmtools/src/templates/CppLocalTemplates/MHomeDef,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** MHomeDef 17 Jan 2007 17:47:09 -0000 1.24 --- MHomeDef 19 Mar 2007 08:11:34 -0000 1.25 *************** *** 74,77 **** --- 74,81 ---- %(Identifier)s(::Components::AssemblyFactory::SmartPtr assembly_factory); virtual ~%(Identifier)s(); + + /// calling the home finder + static SmartPtr find_by_name(const std::string& name) + throw(::Components::HomeNotFound); %(MFactoryDefAdapterPrototypeV)s *************** *** 162,165 **** --- 166,186 ---- } + %(Identifier)s::SmartPtr %(Identifier)s::find_by_name(const std::string& name) + throw(::Components::HomeNotFound) + { + ::Components::HomeFinder* finder = ::Components::HomeFinder::Instance(); + assert(finder); + ::Components::CCMHome::SmartPtr sp = finder->find_home_by_name(name); + %(Identifier)s* hp = dynamic_cast< %(Identifier)s*>(sp.ptr()); + if(!hp) + { + std::string msg("home \""); + msg += name; + msg += "\" is not of type %(Identifier)s"; + throw ::Components::HomeNotFound(msg); + } + return SmartPtr(hp); + } + %(MFactoryDefAdapterDefinition)s |