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
|