WSF
WsfPluginManager.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11#ifndef WSFPLUGINMANAGER_HPP
12#define WSFPLUGINMANAGER_HPP
13
14#include "wsf_export.h"
15
16#include <list>
17#include <memory>
18#include <string>
19#include <utility>
20
21class UtInput;
22#include "UtPluginManager.hpp"
23class WsfObject;
24class WsfApplication;
25
26#define WSF_PLUGIN_DEFINE_VERSION \
27 extern "C" \
28 { \
29 UT_PLUGIN_EXPORT void WSF_PluginVersion(UtPluginVersion* aOutVersion) \
30 { \
31 *aOutVersion = UT_PLUGIN_VERSION_CREATE; \
32 } \
33 }
34
38
39class WSF_EXPORT WsfPluginManager : public UtPluginManager
40{
41public:
42 WsfPluginManager(WsfApplication& aApplication);
43 ~WsfPluginManager() override;
44
45 using VersionFuncPtr = void (*)(UtPluginVersion& aOutVersion);
46 using SetupFuncPtr = void (*)(WsfApplication& aApplicationPtr);
47 using CompleteFuncPtr = void (*)(WsfApplication& aApplicationPtr);
48
49 void AddPluginSearchPath(const std::string& aPluginPath, bool aRecursive = true);
50
51 void LoadPlugins();
52
53 bool LoadPluginInitialize(UtDynamicLibrary* aLibraryPtr, const std::string& aPluginFilename) override;
54
55 void PrintLoadedPlugins();
56
57private:
58 WsfPluginManager(const WsfPluginManager& aSrc) = delete; // Prevent use of operator= by declaring, but not defining.
59
60 using PluginSearchPath = std::pair<std::string, bool>;
61 using PluginSearchPaths = std::list<PluginSearchPath>;
62
63 const bool cLOAD_PLUGINS;
64
65 WsfApplication* mApplicationPtr;
66 bool mLoaded;
67 PluginSearchPaths mPluginSearchPaths;
68};
69
70#endif
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfApplication.hpp:45
Definition WsfObject.hpp:40
void(*)(UtPluginVersion &aOutVersion) VersionFuncPtr
Definition WsfPluginManager.hpp:45
void LoadPlugins()
Definition WsfPluginManager.cpp:72
void(*)(WsfApplication &aApplicationPtr) SetupFuncPtr
Definition WsfPluginManager.hpp:46
void(*)(WsfApplication &aApplicationPtr) CompleteFuncPtr
Definition WsfPluginManager.hpp:47
void AddPluginSearchPath(const std::string &aPluginPath, bool aRecursive=true)
Definition WsfPluginManager.cpp:66
WsfPluginManager(WsfApplication &aApplication)
Definition WsfPluginManager.cpp:32
void PrintLoadedPlugins()
Definition WsfPluginManager.cpp:151
bool LoadPluginInitialize(UtDynamicLibrary *aLibraryPtr, const std::string &aPluginFilename) override
Definition WsfPluginManager.cpp:105
Copyrights Multiple, All Rights Reserved