VR-Forces 4.0.4 Class Documentation
include/vrfcgf/vrfPluginManager.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 2006 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: vrfPluginManager.h,v $ $Revision: 1.10 $ $State: Exp $
00007 *********************************************************************/
00008 
00011 
00012 #ifndef DTVRFPLUGINMANAGER_H_
00013 #define DTVRFPLUGINMANAGER_H_
00014 
00015 #include <mtl/lispEnv.h>
00016 #include <vector>
00017 
00018 #include "vrfcgf/vrfPluginExtension.h"
00019 
00020 class DtDynamicLibrary;
00021 class DtVrfMessageInterface;
00022 class DtIfPluginDataRequest;
00023 class DtSimMessage;
00024 
00034 
00035 #include "vrfcgf/vrfcgfDefines.h"
00036 
00037 class DT_DLL_vrfcgf DtVrfPlugin
00038 {
00039 public:
00040    DtVrfPlugin(const DtString &libName, 
00041               bool addPlatExt = true,
00042                bool useLazyEval = true);
00043 
00044    virtual ~DtVrfPlugin();
00045 
00047    virtual bool init();
00048 
00050    virtual bool checkVersion(const DtString& curVersion);
00051 
00052    virtual bool initializePlugin(DtCgf*);
00053    virtual bool postInitializePlugin(DtCgf*);
00054    virtual void unloadPlugin();
00055 
00056    const DtVrfPluginInformation& pluginInformation() const;
00057 
00059    virtual void pluginInformation(std::string&) const;
00060 
00061 public:
00062    virtual bool isValid() const;
00063    virtual DtString libraryName() const;
00064    virtual const char *error() const;
00065 
00066 protected:
00067    DtVrfPluginInformation myPluginInformation;
00068    DtInitializeVrfPluginFcn  myInitializePlugin;
00069    DtPostInitializeVrfPluginFcn  myPostInitializePlugin;
00070    DtPluginInformationFcn        myPluginInformationFcn;
00071    DtVrfUnloadPluginFcn myUnloadPlugin;
00072    DtDynamicLibrary* myDynamicLibrary;
00073 };
00074 
00075 class DT_DLL_vrfcgf DtVrfPluginManager
00076 {
00077 public:
00078   
00079    DtVrfPluginManager();
00080 
00082    virtual ~DtVrfPluginManager();
00083 
00084    const std::vector<DtVrfPlugin*>& plugins() const;
00085 
00086 public:
00088    virtual bool init();
00089 
00091    virtual DtVrfPlugin* loadPlugin(const DtString&, DtCgf*);
00092 
00094    virtual void postInitializePlugins(DtCgf*);
00095 
00099    void setLoadIfVersionMismatch(bool);
00100    bool loadIfVersionMismatch() const;
00101 
00103    virtual void setVrfMessageInterface(DtVrfMessageInterface*);
00104 
00105 protected:
00106 
00108    static void pluginInformationRequestCallback(DtSimMessage* msg, void* usr);
00109    virtual void processPluginInformationRequest(const DtIfPluginDataRequest& rsp);
00110 
00111 protected:
00113    virtual DtVrfPlugin* loadPlugin(const DtString&);
00114    virtual void initializePlugin(DtVrfPlugin*, DtCgf*);
00115 
00116    virtual void unloadPlugins();
00117 
00118 protected:
00119    std::vector<DtVrfPlugin*> myPlugins;
00120    bool                      myLoadIfVersionMismatch;
00121    DtVrfMessageInterface*    myVrfMessageInterface;
00122 };
00123 
00124 inline const std::vector<DtVrfPlugin*>& DtVrfPluginManager::plugins() const
00125 {
00126    return myPlugins;
00127 }
00128 
00129 inline const DtVrfPluginInformation& DtVrfPlugin::pluginInformation() const
00130 {
00131    return myPluginInformation;
00132 }
00133 
00134 inline void DtVrfPluginManager::setLoadIfVersionMismatch(bool b)
00135 {
00136    myLoadIfVersionMismatch = b;
00137 }
00138 
00139 inline bool DtVrfPluginManager::loadIfVersionMismatch() const
00140 {
00141    return myLoadIfVersionMismatch;
00142 }
00143 
00144 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)