VR-Forces 4.0.4 Class Documentation
include/vrvCore/DtModelDefinition.h
Go to the documentation of this file.
00001 /****************************************************************************** 
00002 ** Copyright (c) 2010 MAK Technologies, Inc. 
00003 ** All rights reserved. 
00004 ******************************************************************************/ 
00005 /****************************************************************************** 
00006 ** $RCSfile: DtModelDefinition.h,v $ $Revision: 1.17 $ $State: Exp $ 
00007 ******************************************************************************/ 
00008  
00012  
00013 #ifndef DtModelDefinition_H_ 
00014 #define DtModelDefinition_H_ 
00015  
00016 #include <vrvCore/vrvCore.h> 
00017 #include <makArchives/DtSerialize.h>
00018 #include <vrvUtil/DtKeywordMixin.h>
00019 #include <makArchives/DtModelDefinitionRecord.h>
00020 
00021 #include <boost/serialization/version.hpp>
00022 #include <boost/serialization/set.hpp>
00023 #include <boost/serialization/map.hpp>
00024 #include <boost/unordered_map.hpp>
00025 #include <map>
00026 #include <string>
00027 #include <set>
00028  
00029 namespace makVrv 
00030 { 
00031    class DtVirtualBaseClass;
00032 
00037    class DT_DLL_VRVCORE DtModelDefinition : public DtKeywordMixin
00038    {
00039    public:
00040 
00041       //Global public empty string.
00042       static const std::string theEmptyString;
00043 
00044       typedef std::map<std::string,std::string> ParameterMap;
00045 
00050       DtModelDefinition(const std::string& modelName = "");
00051       
00053       DtModelDefinition(const DtModelDefinition& copy);
00054 
00056       DtModelDefinition(const std::string& modelName,const DtModelDefinition& copy);
00057       
00059       ~DtModelDefinition();
00060 
00063       DtModelDefinition& operator=(const DtModelDefinition&);
00064 
00066       virtual void getRecord(makArchives::DtModelDefinitionRecord& rec);
00067 
00069       virtual void setFromRecord(const makArchives::DtModelDefinitionRecord& rec);
00070       
00081       DT_DECLARE_serialize_FUNCTIONS
00082       DT_DECLARE_PORTABLE_serialize_FUNCTIONS
00083 
00087       void clearCache();
00088 
00091       DtVirtualBaseClass* findCachedData(const std::string& name);
00092 
00096       void setCachedData(const std::string& name,DtVirtualBaseClass* data);
00097 
00099       inline void deleteCachedData(const std::string& name)
00100       {
00101          setCachedData(name,0);
00102       }
00103 
00109       void setParameter(const std::string& parameterName,
00110          const std::string& parameterValue);
00111 
00116       bool clearParameter(const std::string& parameterName);
00117 
00122       const std::string& parameter(const std::string& parameterName) const;
00123 
00130       const std::string* findParameter(const std::string& parameterName) const;
00131 
00135       std::string* findParameter(const std::string& parameterName);
00136 
00138       const ParameterMap& parameters() const;
00139 
00141       const std::string& name() const;
00142 
00144       const std::string& schema() const;
00145 
00147       void setSchema(const std::string& schemaStr);
00148 
00150       void setPersistent(bool persistent);
00151 
00153       bool persistent() const;
00154 
00156       bool modified() const;
00157       void setModified(bool);
00158 
00160       //void addKeyWord( const std::string& keyword);
00161 
00163       //void removeKeyWord( const std::string& keyword);
00164 
00166       //const std::set<std::string>& keyWords() const;
00167 
00171       //bool hasKeyWords(const std::set<std::string>&) const;
00172       
00173    protected:
00174 
00175       static std::string cleanName(const std::string& name);
00176       
00177       class SerializableParameterMap : public ParameterMap
00178       {
00179       public:
00180          template <typename Archive>
00181          void serialize(Archive& ar,unsigned int version)
00182          {
00183             ar & DT_SERIALIZE_BASE(ParameterMap);
00184          }
00185       };
00186 
00187       typedef boost::unordered_map<std::string,DtVirtualBaseClass*> CacheMap;
00188 
00189       template <typename Archive>
00190       void _serialize(Archive& ar,unsigned int version)
00191       {
00192          ar & DT_SERIALIZE_MEMBER(myName);
00193 
00194          //If not initial version.
00195          if(version > 1)
00196          {
00197             ar& DT_SERIALIZE_MEMBER(mySchema);
00198          }
00199          ar & DT_SERIALIZE_MEMBER(myParameters);
00200 
00201          if(version > 2)
00202          {
00203             ar & DT_SERIALIZE_MEMBER(myKeywords);
00204          }
00205 
00206          //We're no longer modified if we save or load.
00207          myModifiedFlag = false;
00208       }
00209      
00210       std::string myName;
00211       std::string mySchema;
00212       SerializableParameterMap myParameters;      
00213 
00215 
00217       CacheMap myRuntimeCache;
00218       bool myPersistentFlag;
00219       bool myModifiedFlag;      
00220    };
00221 }
00222 
00223 BOOST_CLASS_VERSION(makVrv::DtModelDefinition,3)
00224  
00225 #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)