VR-Forces 4.0.4 Class Documentation
include/vrvCore/DtModelDefinitionManager.h
Go to the documentation of this file.
00001 /****************************************************************************** 
00002 ** Copyright (c) 2010 MAK Technologies, Inc. 
00003 ** All rights reserved. 
00004 ******************************************************************************/ 
00005 /****************************************************************************** 
00006 ** $RCSfile: DtModelDefinitionManager.h,v $ $Revision: 1.16 $ $State: Exp $ 
00007 ******************************************************************************/ 
00008  
00011  
00012 #pragma once
00013  
00014 #include <vrvCore/vrvCore.h> 
00015 #include <vrvCore/DtModelDefinition.h>
00016 #include <vrvUtil/DtVirtualBaseClass.h>
00017 #include <vrvCore/DtSettingsBackupManager.h>
00018 #include <vrvCore/DtSettingsBackup.h>
00019 #include <string>
00020 #include <boost/signal.hpp>
00021 
00022 namespace makVrv 
00023 { 
00024    class DtDe;
00025    class DtModelDefinitionManagerSignaler;
00026    class DtModelDefinitionBackup;
00027    class DtModelDefinitionManager;
00028 
00032    class DT_DLL_VRVCORE DtModelDefinitionManagerBackup : public DtSettingsBackup
00033    {
00034    public:
00035       DtModelDefinitionManagerBackup(DtModelDefinitionManager& manager, DtDe& de);
00036       virtual ~DtModelDefinitionManagerBackup();
00037 
00038    protected:
00041       virtual void restore(const DtSettingsBackup* from);
00042 
00045       virtual std::string backupClassType() const;
00046       virtual std::string backupName() const;
00047 
00050       virtual DtSettingsBackup* create() const;
00051 
00054       virtual void write(boost::archive::xml_oarchive& ar);
00055 
00058       virtual void read(boost::archive::xml_iarchive& ar);
00059 
00060       const DtModelDefinitionManager* restoredManager() const
00061       {
00062          return myRestoredManager;
00063       }
00064 
00065    protected:
00066       DtModelDefinitionManager&  mySourceManager;
00067       DtDe&                      myDe;
00068       DtModelDefinitionManager*  myRestoredManager;
00069    };
00070 
00075    class DT_DLL_VRVCORE DtModelDefinitionManager
00076    { 
00077    public:
00078       friend class DtModelDefinitionManagerCreator;
00079 
00080       typedef std::map<std::string,DtModelDefinition> DefinitionMap;
00081 
00083       virtual ~DtModelDefinitionManager();
00084 
00086       virtual void loadDefinitions();
00087 
00089       virtual void saveDefinitions();
00090       virtual void saveDefinitions(const std::string&);
00091 
00095       virtual void addDefinition(const DtModelDefinition& definition, bool autoSave = true);
00096       
00100       virtual void destroyDefinition(const DtModelDefinition& def);
00101 
00105       DtModelDefinition* findDefinition(const std::string& modelName) const;
00106 
00108       const DefinitionMap& definitions() const;
00109       DefinitionMap& definitions();
00110 
00112       const std::string& modelFilename() const;
00113 
00115       void setModelFilename(const std::string& extension);
00116 
00118       bool modelInstancingEnabled() const;
00119 
00121       void setModelInstancingEnabled(bool enabled);
00122 
00124       void clearModelInstancingCache();
00125 
00127       void clear();
00128 
00132       virtual void merge(const DtModelDefinitionManager&);
00133 
00139       virtual bool loadModelDefinitions(const std::string& filename, bool merge = true);
00140       
00145       virtual bool loadModelDefinition(const std::string& filename);
00146 
00149       virtual bool exportToFile(const std::vector<std::string>& defs, const std::string& filename) const;
00150 
00152       virtual bool schemaInUse(const std::string&) const;
00153 
00155       virtual bool schemaInUse(const std::string&, std::vector<std::string>&) const;
00156 
00158       virtual void backup();
00159 
00160       const DtSettingsBackup* settingsBackup() const
00161       {
00162          return myBackup;
00163       }
00164 
00165       DtSettingsBackup* settingsBackup()
00166       {
00167          return myBackup;
00168       }
00169 
00171       virtual DtModelDefinitionManager& operator=(const DtModelDefinitionManager&);
00172 
00174       void setAutoSave(bool b)
00175       {
00176          myAutoSave = b;
00177       }
00178 
00179       bool autoSave() const
00180       {
00181          return myAutoSave;
00182       }
00183 
00185       virtual void removeNonPersistentItems();
00186 
00187    protected:
00188 
00189       friend class DtModelDefinitionManagerBackup;
00190 
00192       DtModelDefinitionManager(DtDe&);
00193       DtModelDefinitionManager(const DtModelDefinitionManager&);
00194 
00195    protected:
00196       friend class boost::serialization::access;
00197 
00198       template <typename Archive>
00199       void serialize(Archive& ar,unsigned int version)
00200       {
00201          ar & BOOST_SERIALIZATION_NVP(myDefinitions);
00202       }
00203 
00204    protected:
00205       
00206       DtDe& myDe;
00207       DefinitionMap myDefinitions;
00208       std::string myModelFileName;
00209       bool        myAutoSave;
00210 
00211       bool myModelInstancingFlag;
00212       DtModelDefinitionManagerSignaler& mySignaler;
00213       DtModelDefinitionManagerBackup* myBackup;
00214    }; 
00215 
00218    class DT_DLL_VRVCORE DtModelDefinitionManagerSignaler : public DtVirtualBaseClass
00219    {
00220    public:
00221 
00223       static DtModelDefinitionManagerSignaler& instance(DtDe& de);
00224 
00226       virtual ~DtModelDefinitionManagerSignaler();
00227 
00229       boost::signal<void ()> signal_modelDefinitionManagerReset;
00230 
00232       boost::signal<void (const DtModelDefinition&)> signal_modelDefinitionAdded;
00233 
00235       boost::signal<void (const DtModelDefinition&)> signal_modelDefinitionToBeRemoved;
00236 
00237    protected:
00238 
00239       DtModelDefinitionManagerSignaler();
00240 
00241    };
00242 
00245    class DT_DLL_VRVCORE DtModelDefinitionManagerCreator : public DtVirtualBaseClass
00246    {
00247    public:
00249       DtModelDefinitionManagerCreator();
00250 
00252       virtual ~DtModelDefinitionManagerCreator();
00253 
00257       static DtModelDefinitionManagerCreator& instance(DtDe& de);
00258 
00260       virtual DtModelDefinitionManager* create(DtDe&);
00261    };
00262 } 
00263 
00264 BOOST_CLASS_VERSION(makVrv::DtModelDefinitionManager, 1)
00265  

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)