|
OpenWalnut
1.4.0
|
Class able to create a new copy of an arbitrary module. More...
#include <WModuleFactory.h>
Public Types | |
| typedef boost::shared_ptr < WModuleFactory > | SPtr |
| Shared pointer to a WModule. More... | |
| typedef boost::shared_ptr < const WModuleFactory > | ConstSPtr |
| Shared pointer to a const WModule. More... | |
| typedef std::set < boost::shared_ptr< WModule > > | PrototypeContainerType |
| For shortening: a type defining a shared set of WModule pointers. More... | |
| typedef std::set < boost::shared_ptr< WModule > >::const_iterator | PrototypeContainerConstIteratorType |
| Const iterator for the prototype set. More... | |
| typedef std::set < boost::shared_ptr< WModule > >::iterator | PrototypeContainerIteratorType |
| Iterator for the prototype set. More... | |
| typedef WSharedAssociativeContainer < PrototypeContainerType > | PrototypeSharedContainerType |
| The alias for a shared container. More... | |
Public Member Functions | |
| virtual | ~WModuleFactory () |
| Destructor. More... | |
| void | load () |
| Loads the modules and creates prototypes. More... | |
| boost::shared_ptr< WModule > | create (boost::shared_ptr< WModule > prototype, std::string uuid="") |
| Create a new and initialized module using the specified prototype. More... | |
| const boost::shared_ptr< WModule > | isPrototypeAvailable (std::string name) |
| Searches a prototype by name. More... | |
| const boost::shared_ptr< WModule > | getPrototypeByName (std::string name) |
| Finds a prototype using the specified name. More... | |
| const boost::shared_ptr< WModule > | getPrototypeByInstance (boost::shared_ptr< WModule > instance) |
| Finds a prototype using an instance of a module. More... | |
| std::vector< WModule::ConstSPtr > | getPrototypesByType (MODULE_TYPE type) |
| Finds a prototype using an type. More... | |
| PrototypeSharedContainerType::ReadTicket | getPrototypes () const |
| This method gives read access to the list of all prototypes. More... | |
| WCombinerTypes::WCompatiblesList | getCompatiblePrototypes (boost::shared_ptr< WModule > module=boost::shared_ptr< WModule >()) |
| Returns a set of module combiners with module combinations compatible with the specified one. More... | |
| WCombinerTypes::WCompatiblesList | getAllPrototypes () |
| Creates a list of WApplyCombiner for all modules known by the factory. More... | |
Static Public Member Functions | |
| static SPtr | getModuleFactory () |
| Returns instance of the module factory to use to create modules. More... | |
| static boost::shared_ptr < WModuleLoader > | getModuleLoader () |
| Returns instance of the module loader. More... | |
| template<typename T > | |
| static bool | isA (boost::shared_ptr< WModule > module) |
| Checks whether the first instance can be casted to the second one. More... | |
| static void | initializeModule (boost::shared_ptr< WModule > module) |
| This method uses a newly created instance of WModule and initializes it properly. More... | |
| static bool | isPrototype (boost::shared_ptr< WModule > module) |
| Checks whether the specified module is a prototype or an instantiated module. More... | |
| static WModule::SPtr | findByUUID (std::string uuid) |
| Find a module instance by UUID. More... | |
Protected Member Functions | |
| WModuleFactory () | |
| Constructors are protected because this is a Singleton. More... | |
| bool | checkPrototype (boost::shared_ptr< WModule > module, PrototypeSharedContainerType::ReadTicket ticket) |
| Checks whether the specified module is a prototype or an instantiated module. More... | |
Protected Attributes | |
| PrototypeSharedContainerType | m_prototypes |
| The module prototypes available. More... | |
Private Types | |
| typedef std::map< std::string, boost::weak_ptr< WModule > > | UuidModuleMap |
| Mapping between a UUID and a module. More... | |
Private Attributes | |
| WModuleLoader::SPtr | m_moduleLoader |
| Loader class managing dynamically loaded modules in OpenWalnut. More... | |
| WSharedAssociativeContainer < UuidModuleMap > | m_uuidModuleMap |
| Keep track of uuids of each created module. More... | |
Static Private Attributes | |
| static boost::shared_ptr < WModuleFactory > | m_instance = boost::shared_ptr< WModuleFactory >() |
| Singleton instance of WModuleFactory. More... | |
Friends | |
| class | WModuleFactoryTest |
Class able to create a new copy of an arbitrary module.
It uses the Factory and Prototype design pattern.
Definition at line 45 of file WModuleFactory.h.
| typedef boost::shared_ptr< const WModuleFactory > WModuleFactory::ConstSPtr |
Shared pointer to a const WModule.
Definition at line 57 of file WModuleFactory.h.
| typedef std::set< boost::shared_ptr< WModule > >::const_iterator WModuleFactory::PrototypeContainerConstIteratorType |
Const iterator for the prototype set.
Definition at line 67 of file WModuleFactory.h.
| typedef std::set< boost::shared_ptr< WModule > >::iterator WModuleFactory::PrototypeContainerIteratorType |
Iterator for the prototype set.
Definition at line 72 of file WModuleFactory.h.
| typedef std::set< boost::shared_ptr< WModule > > WModuleFactory::PrototypeContainerType |
For shortening: a type defining a shared set of WModule pointers.
Definition at line 62 of file WModuleFactory.h.
| typedef WSharedAssociativeContainer< PrototypeContainerType > WModuleFactory::PrototypeSharedContainerType |
The alias for a shared container.
Definition at line 77 of file WModuleFactory.h.
| typedef boost::shared_ptr< WModuleFactory > WModuleFactory::SPtr |
Shared pointer to a WModule.
Definition at line 52 of file WModuleFactory.h.
|
private |
Mapping between a UUID and a module.
Definition at line 253 of file WModuleFactory.h.
|
virtual |
Destructor.
Definition at line 50 of file WModuleFactory.cpp.
|
protected |
Constructors are protected because this is a Singleton.
Definition at line 43 of file WModuleFactory.cpp.
Referenced by getModuleFactory().
|
protected |
Checks whether the specified module is a prototype or an instantiated module.
Use isPrototype if no ticket acquired yet.
| module | the module to check |
| ticket | ticket which already has read lock. |
Definition at line 105 of file WModuleFactory.cpp.
Referenced by create().
| boost::shared_ptr< WModule > WModuleFactory::create | ( | boost::shared_ptr< WModule > | prototype, |
| std::string | uuid = "" |
||
| ) |
Create a new and initialized module using the specified prototype.
| prototype | the prototype to clone. |
| uuid | the uuid to use for the created module. If you specify an empty string (default), a uuid will be created. This parameter is useful for the project loader. |
Definition at line 110 of file WModuleFactory.cpp.
References checkPrototype(), wlog::debug(), WSharedObject< T >::getReadTicket(), initializeModule(), WSharedAssociativeContainer< T >::insert(), m_prototypes, and m_uuidModuleMap.
|
static |
Find a module instance by UUID.
| uuid | the uuid to search for. |
Definition at line 306 of file WModuleFactory.cpp.
References getModuleFactory(), and WSharedObject< T >::getReadTicket().
Referenced by WModule::findByUUID().
| WCombinerTypes::WCompatiblesList WModuleFactory::getAllPrototypes | ( | ) |
Creates a list of WApplyCombiner for all modules known by the factory.
Definition at line 276 of file WModuleFactory.cpp.
References WSharedObject< T >::getReadTicket(), and m_prototypes.
| WCombinerTypes::WCompatiblesList WModuleFactory::getCompatiblePrototypes | ( | boost::shared_ptr< WModule > | module = boost::shared_ptr< WModule >() | ) |
Returns a set of module combiners with module combinations compatible with the specified one.
| module | the module to find the compatibles for. |
Definition at line 218 of file WModuleFactory.cpp.
References WSharedObject< T >::getReadTicket(), and m_prototypes.
|
static |
Returns instance of the module factory to use to create modules.
Definition at line 144 of file WModuleFactory.cpp.
References m_instance, and WModuleFactory().
Referenced by WApplyCombiner::apply(), WModuleContainer::applyModule(), WModuleContainer::createAndAdd(), WModuleContainerWrapper::createDataModule(), findByUUID(), getModuleLoader(), WKernel::init(), WPrototypeRequirement::isComplied(), isPrototype(), WModuleProjectFileCombiner::parse(), and WBatchLoader::threadMain().
|
static |
Returns instance of the module loader.
Definition at line 55 of file WModuleFactory.cpp.
References getModuleFactory().
Referenced by WKernel::threadMain().
| const boost::shared_ptr< WModule > WModuleFactory::getPrototypeByInstance | ( | boost::shared_ptr< WModule > | instance | ) |
Finds a prototype using an instance of a module.
This uses the type_info to find a proper prototype.
| instance | the instance to use. |
| WPrototypeUnknown | if prototype can not be found. |
Definition at line 188 of file WModuleFactory.cpp.
References getPrototypeByName().
| const boost::shared_ptr< WModule > WModuleFactory::getPrototypeByName | ( | std::string | name | ) |
Finds a prototype using the specified name.
| name | the name. |
Definition at line 175 of file WModuleFactory.cpp.
References isPrototypeAvailable().
Referenced by getPrototypeByInstance().
| WModuleFactory::PrototypeSharedContainerType::ReadTicket WModuleFactory::getPrototypes | ( | ) | const |
This method gives read access to the list of all prototypes.
Definition at line 213 of file WModuleFactory.cpp.
References WSharedObject< T >::getReadTicket(), and m_prototypes.
| std::vector< WModule::ConstSPtr > WModuleFactory::getPrototypesByType | ( | MODULE_TYPE | type | ) |
Finds a prototype using an type.
| type | the type of module. |
Definition at line 193 of file WModuleFactory.cpp.
References WSharedObject< T >::getReadTicket(), and m_prototypes.
|
static |
This method uses a newly created instance of WModule and initializes it properly.
After using this method, the module is properly initialized and ready to be used.
| module | the module to initialize. |
Definition at line 139 of file WModuleFactory.cpp.
|
static |
Checks whether the first instance can be casted to the second one.
| module | the module to check. |
Definition at line 262 of file WModuleFactory.h.
|
static |
Checks whether the specified module is a prototype or an instantiated module.
| module | the module to check |
Definition at line 98 of file WModuleFactory.cpp.
References getModuleFactory().
Referenced by WApplyCombiner::apply().
| const boost::shared_ptr< WModule > WModuleFactory::isPrototypeAvailable | ( | std::string | name | ) |
Searches a prototype by name.
It returns the prototype, or a NULL pointer if it is not found. The difference to getPrototypeByName() is, that an unavailable prototype does not throw an exception. This is nice for checking whether a prototype exists or not.
| name | name of the prototype to search |
Definition at line 155 of file WModuleFactory.cpp.
References WSharedObject< T >::getReadTicket(), and m_prototypes.
Referenced by getPrototypeByName().
| void WModuleFactory::load | ( | ) |
Loads the modules and creates prototypes.
Definition at line 60 of file WModuleFactory.cpp.
References WLogger::addLogMessage(), WLogger::getLogger(), WSharedObject< T >::getWriteTicket(), initializeModule(), m_moduleLoader, and m_prototypes.
|
staticprivate |
Singleton instance of WModuleFactory.
Definition at line 248 of file WModuleFactory.h.
Referenced by getModuleFactory().
|
private |
Loader class managing dynamically loaded modules in OpenWalnut.
Definition at line 243 of file WModuleFactory.h.
Referenced by load().
|
protected |
The module prototypes available.
Definition at line 227 of file WModuleFactory.h.
Referenced by create(), getAllPrototypes(), getCompatiblePrototypes(), getPrototypes(), getPrototypesByType(), isPrototypeAvailable(), and load().
|
private |
Keep track of uuids of each created module.
This is needed to find module pointers using uuid.
Definition at line 258 of file WModuleFactory.h.
Referenced by create().
1.8.7