VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfPluginManager.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2019 MAK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
8 #pragma once
9 
10 #include <mtl/mtlEnvironment.h>
11 #include <vector>
12 
14 
15 class DtDynamicLibrary;
18 class DtSimMessage;
20 
30 
31 #include "vrfcgf/vrfcgfDefines.h"
32 
34 {
35 public:
36  DtVrfPlugin(const DtString &libName,
37  bool addPlatExt = true,
38  bool useLazyEval = true);
39 
40  virtual ~DtVrfPlugin();
41 
43  virtual bool init();
44 
46  virtual bool checkVersion(const DtString& curVersion);
47 
48  virtual bool initializePlugin(DtCgf*);
49  virtual void initializePlugin(DtApplicationSettings&);
50  virtual bool postInitializePlugin(DtCgf*);
51  virtual void unloadPlugin();
52 
53  const DtVrfPluginInformation& pluginInformation() const;
54 
56  virtual void pluginInformation(std::string&) const;
57 
58 public:
59  virtual bool isValid() const;
60  virtual DtString libraryName() const;
61  virtual const char *error() const;
62 
63 protected:
70  DtDynamicLibrary* myDynamicLibrary;
71 };
72 
74 {
75 public:
76 
78 
80  virtual ~DtVrfPluginManager();
81 
82  const std::map<DtFilename, DtVrfPlugin*>& plugins() const;
83 
84 public:
86  virtual bool init();
87 
89  virtual DtVrfPlugin* loadPlugin(const DtString&, DtCgf*);
90 
92  virtual DtVrfPlugin* loadPlugin(const DtString&, DtApplicationSettings&);
93 
95  virtual void postInitializePlugins(DtCgf*);
96 
100  void setLoadIfVersionMismatch(bool);
101  bool loadIfVersionMismatch() const;
102 
104  virtual void setVrfMessageInterface(DtVrfMessageInterface*);
105 
106 protected:
107 
109  static void pluginInformationRequestCallback(DtSimMessage* msg, void* usr);
110  virtual void processPluginInformationRequest(const DtIfPluginDataRequest& rsp);
111 
112 protected:
114  virtual DtVrfPlugin* loadPlugin(const DtString&);
115  virtual void initializePlugin(DtVrfPlugin*, DtCgf*);
116  virtual void initializePlugin(DtVrfPlugin*, DtApplicationSettings&);
117 
118  virtual void unloadPlugins();
119 
120 protected:
121  std::map<DtFilename, DtVrfPlugin*> myPlugins;
124 };
125 
126 inline const std::map<DtFilename, DtVrfPlugin*>& DtVrfPluginManager::plugins() const
127 {
128  return myPlugins;
129 }
130 
132 {
133  return myPluginInformation;
134 }
135 
137 {
139 }
140 
142 {
144 }
const DtVrfPluginInformation & pluginInformation() const
Definition: vrfPluginManager.h:131
bool loadIfVersionMismatch() const
Definition: vrfPluginManager.h:141
DtInitializeVrfPluginFcn myInitializePlugin
Definition: vrfPluginManager.h:66
bool(* DtPostInitializeVrfPluginFcn)(DtCgf *cgf)
Definition: vrfPluginExtension.h:44
DtDynamicLibrary * myDynamicLibrary
Definition: vrfPluginManager.h:70
DtVrfMessageInterface * myVrfMessageInterface
Definition: vrfPluginManager.h:123
void(* DtVrfUnloadPluginFcn)()
Definition: vrfPluginExtension.h:45
void setLoadIfVersionMismatch(bool)
Set to true if plugins should be loaded regardless of whether or not there is a version mismatch...
Definition: vrfPluginManager.h:136
The plugin manager will load external loadable objects in order to provide additional functionality t...
Definition: vrfPluginManager.h:33
void(* DtInitializeVrfSettingsFcn)(DtApplicationSettings &)
Definition: vrfPluginExtension.h:46
const std::map< DtFilename, DtVrfPlugin * > & plugins() const
Definition: vrfPluginManager.h:126
DtVrfUnloadPluginFcn myUnloadPlugin
Definition: vrfPluginManager.h:69
This information is strictly optional and only the name and version will be printed to the log file...
Definition: vrfPluginInformation.h:19
File: simMsg.h.
Definition: simMessage.h:35
bool myLoadIfVersionMismatch
Definition: vrfPluginManager.h:122
Definition: vrfPluginManager.h:73
Content-Type: DtIfPluginDataRequest.
Definition: ifPluginDataRequest.h:22
Definition: asyncJobServer.h:39
DtInitializeVrfSettingsFcn myInitializeSettings
Definition: vrfPluginManager.h:65
bool(* DtInitializeVrfPluginFcn)(DtCgf *cgf)
Definition: vrfPluginExtension.h:43
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
std::map< DtFilename, DtVrfPlugin * > myPlugins
Definition: vrfPluginManager.h:121
DtPostInitializeVrfPluginFcn myPostInitializePlugin
Definition: vrfPluginManager.h:67
void(* DtPluginInformationFcn)(DtVrfPluginInformation &)
If the DtPluginInformation function is defined in your plugin, make sure to export it as it is not ex...
Definition: vrfPluginInformation.h:37
DtPluginInformationFcn myPluginInformationFcn
Definition: vrfPluginManager.h:68
DtVrfPluginInformation myPluginInformation
Definition: vrfPluginManager.h:64
An instance of DtCgf is an object representing a CGF (Computer Generated Forces). ...
Definition: cgf.h:115
#define DT_DLL_vrfcgf
This file is used to determine how to build.
Definition: vrfcgfDefines.h:25
Definition: vrfMessageInterface.h:46

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)