Wolframe, 0.0.3

moduleDirectory.hpp
Go to the documentation of this file.
1 /************************************************************************
2 
3  Copyright (C) 2011 - 2014 Project Wolframe.
4  All rights reserved.
5 
6  This file is part of Project Wolframe.
7 
8  Commercial Usage
9  Licensees holding valid Project Wolframe Commercial licenses may
10  use this file in accordance with the Project Wolframe
11  Commercial License Agreement provided with the Software or,
12  alternatively, in accordance with the terms contained
13  in a written agreement between the licensee and Project Wolframe.
14 
15  GNU General Public License Usage
16  Alternatively, you can redistribute this file and/or modify it
17  under the terms of the GNU General Public License as published by
18  the Free Software Foundation, either version 3 of the License, or
19  (at your option) any later version.
20 
21  Wolframe is distributed in the hope that it will be useful,
22  but WITHOUT ANY WARRANTY; without even the implied warranty of
23  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24  GNU General Public License for more details.
25 
26  You should have received a copy of the GNU General Public License
27  along with Wolframe. If not, see <http://www.gnu.org/licenses/>.
28 
29  If you have questions regarding the use of this file, please contact
30  Project Wolframe.
31 
32 ************************************************************************/
35 
36 #ifndef _MODULE_DIRECTORY_HPP_INCLUDED
37 #define _MODULE_DIRECTORY_HPP_INCLUDED
38 
39 #include <string>
40 #include <list>
42 
43 namespace _Wolframe {
44 namespace module {
45 
49 {
50 public:
53  explicit ModulesDirectory( const std::string& confDir_)
54  :m_confDir(confDir_){}
56 
58  bool addBuilder( ConfiguredBuilder* builder );
59 
61  bool addBuilder( SimpleBuilder* builder );
62 
66  ConfiguredBuilder* getBuilder( const std::string& section, const std::string& keyword ) const;
67 
69  ConfiguredBuilder* getBuilder( const std::string& objectClassName ) const;
70 
71  typedef std::list<SimpleBuilder*>::const_iterator simpleBuilder_iterator;
72  typedef std::list<ConfiguredBuilder*>::const_iterator configuredBuilder_iterator;
73 
78 
83  std::vector<std::pair<std::string,std::string> > getConfigurableSectionKeywords( ObjectConstructorBase::ObjectType objtype ) const;
84 
89  std::string getAbsoluteModulePath( const std::string& moduleName, const std::string& configuredDirectory, bool useDefaultModuleDir=true) const;
90 
93  bool loadModules( const std::list<std::string>& modFiles);
94 
95 private:
96  std::string m_confDir;
97  std::list< ConfiguredBuilder* > m_cfgdBuilder;
98  std::list< SimpleBuilder* > m_simpleBuilder;
99 };
100 
101 }} // namespace _Wolframe::module
102 
103 #endif // _MODULE_DIRECTORY_HPP_INCLUDED
Builder for objects with configuration.
Definition: moduleInterface.hpp:83
ModulesDirectory(const std::string &confDir_)
Constructor.
Definition: moduleDirectory.hpp:53
configuredBuilder_iterator configuredBuilderObjectsBegin() const
Definition: moduleDirectory.hpp:76
simpleBuilder_iterator simpleBuilderObjectsBegin() const
Definition: moduleDirectory.hpp:74
The modules directory used by the constructors of the providers to build themselves.
Definition: moduleDirectory.hpp:48
ObjectType
Definition: constructor.hpp:47
ConfiguredBuilder * getBuilder(const std::string &section, const std::string &keyword) const
Get the builder for the configuration section, keyword pair.
Basic interface classes that to build objects and the Wolframe module interface.
std::list< SimpleBuilder * >::const_iterator simpleBuilder_iterator
Definition: moduleDirectory.hpp:71
Base class for builders of objects without configuration.
Definition: moduleInterface.hpp:63
simpleBuilder_iterator simpleBuilderObjectsEnd() const
Definition: moduleDirectory.hpp:75
bool loadModules(const std::list< std::string > &modFiles)
Load the list of modules specified by their absolute path.
std::list< ConfiguredBuilder * >::const_iterator configuredBuilder_iterator
Definition: moduleDirectory.hpp:72
std::string getAbsoluteModulePath(const std::string &moduleName, const std::string &configuredDirectory, bool useDefaultModuleDir=true) const
Get the absolute path of a module.
std::vector< std::pair< std::string, std::string > > getConfigurableSectionKeywords(ObjectConstructorBase::ObjectType objtype) const
Get a selected list of configurable objects loaded as tuple (section,keyword)
std::list< SimpleBuilder * > m_simpleBuilder
list of simple builders
Definition: moduleDirectory.hpp:98
bool addBuilder(ConfiguredBuilder *builder)
Add a configured builder to the directory.
std::string m_confDir
configuration directory needed as base for calculating the absolute path of a module ...
Definition: moduleDirectory.hpp:96
configuredBuilder_iterator configuredBuilderObjectsEnd() const
Definition: moduleDirectory.hpp:77
std::list< ConfiguredBuilder * > m_cfgdBuilder
list of configurable builders
Definition: moduleDirectory.hpp:97