VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtModelDefinition.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
14 #include <vrvUtil/DtKeywordMixin.h>
15 #include <boost/serialization/version.hpp>
16 #include <boost/unordered_map.hpp>
17 #include <matrix/vlVector.h>
18 #include <map>
19 
20 namespace makArchives
21 {
22  class DtModelDefinitionRecord;
23 }
24 
25 namespace makVrv
26 {
27  class DtVirtualBaseClass;
28 
34  {
35  public:
36 
37  //Global public empty string.
38  static const std::string theEmptyString;
39 
40  typedef std::map<std::string, std::string> ParameterMap;
41 
46  DtModelDefinition(const std::string& modelName = "");
47 
50 
52  DtModelDefinition(const std::string& modelName, const DtModelDefinition& copy);
53 
55  virtual ~DtModelDefinition();
56 
59  DtModelDefinition& operator=(const DtModelDefinition&);
60 
63  bool operator==(const DtModelDefinition&) const;
64 
67  bool operator!=(const DtModelDefinition&) const;
68 
70  virtual void getRecord(makArchives::DtModelDefinitionRecord& rec);
71 
73  virtual void setFromRecord(const makArchives::DtModelDefinitionRecord& rec);
74 
87 
91  void clearCache();
92 
95  DtVirtualBaseClass* findCachedData(const std::string& name);
96 
100  void setCachedData(const std::string& name, DtVirtualBaseClass* data);
101 
103  inline void deleteCachedData(const std::string& name)
104  {
105  setCachedData(name, 0);
106  }
107 
113  void setParameter(const std::string& parameterName,
114  const std::string& parameterValue);
115 
120  bool clearParameter(const std::string& parameterName);
121 
126  const std::string& parameter(const std::string& parameterName) const;
127 
134  const std::string* findParameter(const std::string& parameterName) const;
135 
139  std::string* findParameter(const std::string& parameterName);
140 
142  const ParameterMap& parameters() const;
143 
145  const std::string& name() const;
146 
148  const std::string& fileName() const;
149 
151  const std::string& schema() const;
152 
155  const std::vector<std::string>& listOfSharedFiles() const;
156 
159  void addToListOfSharedFiles(const std::string& sharedFile);
160 
162  void setSchema(const std::string& schemaStr);
163 
165  void setFileName(const std::string& fileNameStr);
166 
168  void setPersistent(bool persistent);
169 
171  bool persistent() const;
172 
174  bool modified() const;
175  void setModified(bool);
176 
177  bool duplicate() const;
178  void setDuplicate(bool);
179 
181  const void getVectorParameter(const std::string& parameterName, DtVector& parameterVector) const;
182 
184  //void addKeyWord( const std::string& keyword);
185 
187  //void removeKeyWord( const std::string& keyword);
188 
190  //const std::set<std::string>& keyWords() const;
191 
195  //bool hasKeyWords(const std::set<std::string>&) const;
196 
197  protected:
198 
199  static std::string cleanName(const std::string& name);
200 
202  {
203  public:
204  template <typename Archive>
205  void serialize(Archive& ar, unsigned int version)
206  {
208  }
209  };
210 
211  typedef boost::unordered_map<std::string, DtVirtualBaseClass*> CacheMap;
212 
213  template <typename Archive>
214  void _serialize(Archive& ar, unsigned int version)
215  {
216  ar & DT_SERIALIZE_MEMBER(myName);
217 
218  //If not initial version.
219  if (version > 1)
220  {
221  ar& DT_SERIALIZE_MEMBER(mySchema);
222  }
223  ar & DT_SERIALIZE_MEMBER(myParameters);
224 
225  if (version > 2)
226  {
227  ar & DT_SERIALIZE_MEMBER(myKeywords);
228  }
229 
230  //We're no longer modified if we save or load.
231  myModifiedFlag = false;
232  }
233 
234  std::string myName;
235  std::string myFileName;
236 
237  std::string mySchema;
238  std::vector<std::string> myListOfSharedFiles;
240 
242 
248 
249  };
250 }
251 
bool myDuplicateFlag
Definition: DtModelDefinition.h:247
#define DT_DECLARE_PORTABLE_serialize_FUNCTIONS
Definition: DtSerialize.h:132
Virtual base class.
Definition: DtVirtualBaseClass.h:22
std::string myFileName
Definition: DtModelDefinition.h:235
#define DT_SERIALIZE_BASE(BASE_CLASS)
Serialize the base class implementation.
Definition: DtSerialize.h:164
The DtKeyword mixin is a mixin class (add funcionality by inheritence) for adding generic keywords to...
Definition: DtKeywordMixin.h:26
bool myPersistentFlag
Definition: DtModelDefinition.h:245
bool myModifiedFlag
Definition: DtModelDefinition.h:246
BOOST_CLASS_VERSION(makArchives::DtDiGuySettingsRecord, 2)
A model definition Interaction any number of named parameters, and also can be used to store cached d...
Definition: DtModelDefinition.h:33
A DtModelDefinitionRecord will serialize a terrain patch model definition.
Definition: DtModelDefinitionRecord.h:20
std::string myName
Definition: DtModelDefinition.h:234
SerializableParameterMap myParameters
Definition: DtModelDefinition.h:239
#define DT_DECLARE_serialize_FUNCTIONS
Declare all the serialize functions to use.
Definition: DtSerialize.h:123
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Definition: DtModelDefinition.h:201
boost::unordered_map< std::string, DtVirtualBaseClass * > CacheMap
Definition: DtModelDefinition.h:211
void _serialize(Archive &ar, unsigned int version)
Definition: DtModelDefinition.h:214
std::vector< std::string > myListOfSharedFiles
Definition: DtModelDefinition.h:238
bool operator==(const DtTextureAtlasIndexParser::StringOrFloatAttrib &lhs, const DtTextureAtlasIndexParser::StringOrFloatAttrib &rhs)
needed for search comparison code
Definition: DtTextureAtlasIndexParser.h:153
static const std::string theEmptyString
Definition: DtModelDefinition.h:38
Mixin that provides set of keywords functionality.
std::string mySchema
Definition: DtModelDefinition.h:237
DT_DLL_terrainCS bool operator!=(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
#define DT_SERIALIZE_MEMBER(NAME)
Serialize a Member whose name starts with &#39;my&#39; If your member does not have that name, use Dt_SERIALIZE.
Definition: DtSerialize.h:161
CacheMap myRuntimeCache
std::set&lt;std::string&gt; myKeywords;
Definition: DtModelDefinition.h:244
void serialize(Archive &ar, unsigned int version)
Definition: DtModelDefinition.h:205
void deleteCachedData(const std::string &name)
Helper function for deleting cache.
Definition: DtModelDefinition.h:103
std::map< std::string, std::string > ParameterMap
Definition: DtModelDefinition.h:40
Contains DLL export macros.

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)