VR-Forces 5.0.1 Developer's Guide
 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;
19 class DtApplicationSettings;
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(DtCgf*);
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 
98  virtual void unloadPlugins(DtCgf*);
99 
103  void setLoadIfVersionMismatch(bool);
104  bool loadIfVersionMismatch() const;
105 
107  virtual void setVrfMessageInterface(DtVrfMessageInterface*);
108 
109 protected:
110 
112  static void pluginInformationRequestCallback(DtSimMessage* msg, void* usr);
113  virtual void processPluginInformationRequest(const DtIfPluginDataRequest& rsp);
114 
115 protected:
117  virtual DtVrfPlugin* loadPlugin(const DtString&);
118  virtual void initializePlugin(DtVrfPlugin*, DtCgf*);
119  virtual void initializePlugin(DtVrfPlugin*, DtApplicationSettings&);
120 
121 protected:
122  std::map<DtFilename, DtVrfPlugin*> myPlugins;
125 };
126 
127 inline const std::map<DtFilename, DtVrfPlugin*>& DtVrfPluginManager::plugins() const
128 {
129  return myPlugins;
130 }
131 
133 {
134  return myPluginInformation;
135 }
136 
138 {
140 }
141 
143 {
145 }
const DtVrfPluginInformation & pluginInformation() const
Definition: vrfPluginManager.h:132
void(* DtVrfUnloadPluginFcn)(DtCgf *cgf)
Definition: vrfPluginExtension.h:45
bool loadIfVersionMismatch() const
Definition: vrfPluginManager.h:142
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:124
void setLoadIfVersionMismatch(bool)
Set to true if plugins should be loaded regardless of whether or not there is a version mismatch...
Definition: vrfPluginManager.h:137
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:127
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:20
File: simMsg.h.
Definition: simMessage.h:35
bool myLoadIfVersionMismatch
Definition: vrfPluginManager.h:123
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:122
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:39
DtPluginInformationFcn myPluginInformationFcn
Definition: vrfPluginManager.h:68
DtVrfPluginInformation myPluginInformation
Definition: vrfPluginManager.h:64
The top level class of a VR-Forces Simulation Engine, representing a Computer Generated Forces instan...
Definition: cgf.h:143
#define DT_DLL_vrfcgf
This file is used to determine how to build.
Definition: vrfcgfDefines.h:25
Definition: vrfMessageInterface.h:40

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)