NAP
modulemanager.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 // Local Includes
8 #include "projectinfo.h"
9 #include "modulecache.h"
10 
11 // External Includes
12 #include <utility/module.h>
13 #include <utility/errorstate.h>
14 #include <rtti/typeinfo.h>
15 #include <assert.h>
16 
17 namespace nap
18 {
19  // Forward Declares
20  class Core;
21 
25  class NAPAPI ModuleManager final
26  {
27  friend class Core;
28  public:
29  // Constructor
30  ModuleManager() = default;
31 
32  // Copy is not allowed
33  ModuleManager(ModuleManager&) = delete;
34  ModuleManager& operator=(const ModuleManager&) = delete;
35  ModuleManager(ModuleManager&&) = delete;
36  ModuleManager& operator=(ModuleManager&&) = delete;
37 
44  bool loadModules(const ProjectInfo& projectInfo, utility::ErrorState& error);
45 
49  const std::vector<const Module*>& getModules() const { return mModules; }
50 
56  const Module* findModule(const std::string& moduleName) const;
57 
63  const Module* findModule(const nap::rtti::TypeInfo& serviceType) const;
64 
69  template<typename T>
70  const Module* findModule() const { return findModule(RTTI_OF(T)); }
71 
72  private:
73  std::vector<const nap::Module*> mModules;
74 
75  };
76 }
nap::ModuleManager::getModules
const std::vector< const Module * > & getModules() const
Definition: modulemanager.h:49
nap::utility::ErrorState
Definition: errorstate.h:19
nap::Core
Definition: core.h:82
nap::ModuleManager::findModule
const Module * findModule() const
Definition: modulemanager.h:70
nap::ModuleManager
Definition: modulemanager.h:25
nap
Definition: templateapp.h:17
nap::rtti::TypeInfo
rttr::type TypeInfo
Definition: typeinfo.h:141
nap::ProjectInfo
Definition: projectinfo.h:53
nap::Module
Definition: modulecache.h:26