00001 #ifndef neo_ports_ComponentFactory_hh_seen 00002 #define neo_ports_ComponentFactory_hh_seen 00003 namespace neo { 00004 namespace cca { 00005 namespace ports { 00006 00007 00008 //=================================================================== 00009 //=================================================================== 00010 00014 class ComponentFactory : public virtual neo::cca::Port 00015 { 00016 public: 00017 00018 virtual ~ComponentFactory() {} 00019 00024 virtual std::vector< std::string> getComponentClassAliases()= 0; 00025 00028 virtual std::vector< ComponentClassDescription_shared > getAvailableComponentClasses()= 0; 00029 00030 virtual neo::cca::Component * createComponentInstance(const std::string & classAlias)= 0; 00031 00032 virtual neo::cca::Component * createComponentInstance(const std::string & classAlias, neo::cca::TypeMap_shared & properties)= 0; 00033 00034 virtual void destroyComponentInstance(const std::string & componentClassAlias, neo::cca::Component * component)= 0; 00035 00036 }; // end class ComponentFactory 00037 00038 00039 } // end namespace ports 00040 } // end namespace cca 00041 } // end namespace neo 00042 00043 #endif // neo_ports_ComponentFactory_hh_seen