VR-Forces 4.10 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 
16 #include <boost/serialization/version.hpp>
17 #include <boost/unordered_map.hpp>
18 #include <boost/thread/recursive_mutex.hpp>
19 
20 #include <matrix/vlVector.h>
21 #include <map>
22 
23 
24 
25 namespace makArchives
26 {
27  class DtModelDefinitionRecord;
28 }
29 
30 namespace makVrv
31 {
32  class DtVirtualBaseClass;
33 
39  {
40  public:
41 
42  //Global public empty string.
43  static const std::string theEmptyString;
44 
45  typedef std::map<std::string, std::string> ParameterMap;
46 
51  DtModelDefinition(const std::string& modelName = "");
52 
55 
57  DtModelDefinition(const std::string& modelName, const DtModelDefinition& copy);
58 
60  virtual ~DtModelDefinition();
61 
64  DtModelDefinition& operator=(const DtModelDefinition&);
65 
68  bool operator==(const DtModelDefinition&) const;
69 
72  bool operator!=(const DtModelDefinition&) const;
73 
75  virtual void getRecord(makArchives::DtModelDefinitionRecord& rec);
76 
78  virtual void setFromRecord(const makArchives::DtModelDefinitionRecord& rec);
79 
92 
96  void clearCache();
97 
100  DtVirtualBaseClass* findCachedData(const std::string& name) const;
101 
105  void setCachedData(const std::string& name, DtVirtualBaseClass* data);
106 
108  inline void deleteCachedData(const std::string& name)
109  {
110  setCachedData(name, 0);
111  }
112 
118  void setParameter(const std::string& parameterName,
119  const std::string& parameterValue);
120 
125  bool clearParameter(const std::string& parameterName);
126 
131  const std::string& parameter(const std::string& parameterName) const;
132 
139  const std::string* findParameter(const std::string& parameterName) const;
140 
144  std::string* findParameter(const std::string& parameterName);
145 
147  const ParameterMap& parameters() const;
148 
150  const std::string& name() const;
151 
153  const std::string& fileName() const;
154 
156  const std::string& schema() const;
157 
160  const std::vector<std::string>& listOfSharedFiles() const;
161 
164  void addToListOfSharedFiles(const std::string& sharedFile);
165 
167  void setSchema(const std::string& schemaStr);
168 
170  void setFileName(const std::string& fileNameStr);
171 
173  void setPersistent(bool persistent);
174 
176  bool persistent() const;
177 
179  bool modified() const;
180  void setModified(bool);
181 
182  bool duplicate() const;
183  void setDuplicate(bool);
184 
186  const void getVectorParameter(const std::string& parameterName, DtVector& parameterVector) const;
187 
189  //void addKeyWord( const std::string& keyword);
190 
192  //void removeKeyWord( const std::string& keyword);
193 
195  //const std::set<std::string>& keyWords() const;
196 
200  //bool hasKeyWords(const std::set<std::string>&) const;
201 
203  boost::recursive_mutex& modelLoadingMutex();
204 
205  protected:
206 
207  static std::string cleanName(const std::string& name);
208 
210  {
211  public:
212  template <typename Archive>
213  void serialize(Archive& ar, unsigned int version)
214  {
216  }
217  };
218 
219  typedef boost::unordered_map<std::string, DtVirtualBaseClass*> CacheMap;
220 
221  template <typename Archive>
222  void _serialize(Archive& ar, unsigned int version)
223  {
224  ar & DT_SERIALIZE_MEMBER(myName);
225 
226  //If not initial version.
227  if (version > 1)
228  {
229  ar& DT_SERIALIZE_MEMBER(mySchema);
230  }
231  ar & DT_SERIALIZE_MEMBER(myParameters);
232 
233  if (version > 2)
234  {
235  ar & DT_SERIALIZE_MEMBER(myKeywords);
236  }
237 
238  //We're no longer modified if we save or load.
239  myModifiedFlag = false;
240  }
241 
242  std::string myName;
243  std::string myFileName;
244 
245  std::string mySchema;
246  std::vector<std::string> myListOfSharedFiles;
248 
250 
256 
257  boost::recursive_mutex myModelLoadingMutex;
258 
259  };
260 }
261 
boost::recursive_mutex myModelLoadingMutex
Definition: DtModelDefinition.h:257
bool myDuplicateFlag
Definition: DtModelDefinition.h:255
#define DT_DECLARE_PORTABLE_serialize_FUNCTIONS
Definition: DtSerialize.h:129
Virtual base class.
Definition: DtVirtualBaseClass.h:19
BOOST_CLASS_VERSION(makArchives::DtDiGuySettingsRecord, 3)
std::string myFileName
Definition: DtModelDefinition.h:243
#define DT_SERIALIZE_BASE(BASE_CLASS)
Serialize the base class implementation.
Definition: DtSerialize.h:161
The DtKeyword mixin is a mixin class (add funcionality by inheritence) for adding generic keywords to...
Definition: DtKeywordMixin.h:23
bool myPersistentFlag
Definition: DtModelDefinition.h:253
bool myModifiedFlag
Definition: DtModelDefinition.h:254
A model definition Interaction any number of named parameters, and also can be used to store cached d...
Definition: DtModelDefinition.h:38
A DtModelDefinitionRecord will serialize a terrain patch model definition.
Definition: DtModelDefinitionRecord.h:20
std::string myName
Definition: DtModelDefinition.h:242
SerializableParameterMap myParameters
Definition: DtModelDefinition.h:247
#define DT_DECLARE_serialize_FUNCTIONS
Declare all the serialize functions to use.
Definition: DtSerialize.h:120
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Definition: DtModelDefinition.h:209
boost::unordered_map< std::string, DtVirtualBaseClass * > CacheMap
Definition: DtModelDefinition.h:219
void _serialize(Archive &ar, unsigned int version)
Definition: DtModelDefinition.h:222
std::vector< std::string > myListOfSharedFiles
Definition: DtModelDefinition.h:246
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:43
Mixin that provides set of keywords functionality.
std::string mySchema
Definition: DtModelDefinition.h:245
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:158
CacheMap myRuntimeCache
std::set&lt;std::string&gt; myKeywords;
Definition: DtModelDefinition.h:252
void serialize(Archive &ar, unsigned int version)
Definition: DtModelDefinition.h:213
void deleteCachedData(const std::string &name)
Helper function for deleting cache.
Definition: DtModelDefinition.h:108
std::map< std::string, std::string > ParameterMap
Definition: DtModelDefinition.h:45
Contains DLL export macros.

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)