VR-Forces 5.0.2 Developer's Guide
 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) 2021 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 
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 
198  boost::recursive_mutex& modelLoadingMutex();
199 
201  virtual bool replaceParameter(const std::string& findWhat, const std::string& replaceWith);
202 
203  protected:
204 
205  static std::string cleanName(const std::string& name);
206 
208  {
209  public:
210  template <typename Archive>
211  void serialize(Archive& ar, unsigned int version)
212  {
214  }
215  };
216 
217  typedef boost::unordered_map<std::string, DtVirtualBaseClass*> CacheMap;
218 
219  template <typename Archive>
220  void _serialize(Archive& ar, unsigned int version)
221  {
222  ar & DT_SERIALIZE_MEMBER(myName);
223 
224  //If not initial version.
225  if (version > 1)
226  {
227  ar& DT_SERIALIZE_MEMBER(mySchema);
228  }
229  ar & DT_SERIALIZE_MEMBER(myParameters);
230 
231  if (version > 2)
232  {
233  ar & DT_SERIALIZE_MEMBER(myKeywords);
234  }
235 
236  //We're no longer modified if we save or load.
237  myModifiedFlag = false;
238  }
239 
240  std::string myName;
241  std::string myFileName;
242 
243  std::string mySchema;
244  std::vector<std::string> myListOfSharedFiles;
246 
248 
254 
255  boost::recursive_mutex myModelLoadingMutex;
256 
257  };
258 }
259 
boost::recursive_mutex myModelLoadingMutex
Definition: DtModelDefinition.h:255
bool myDuplicateFlag
Definition: DtModelDefinition.h:253
#define DT_DECLARE_PORTABLE_serialize_FUNCTIONS
Definition: DtSerialize.h:129
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
BOOST_CLASS_VERSION(makArchives::DtDiGuySettingsRecord, 3)
std::string myFileName
Definition: DtModelDefinition.h:241
#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:251
bool myModifiedFlag
Definition: DtModelDefinition.h:252
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:240
SerializableParameterMap myParameters
Definition: DtModelDefinition.h:245
#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:207
boost::unordered_map< std::string, DtVirtualBaseClass * > CacheMap
Definition: DtModelDefinition.h:217
void _serialize(Archive &ar, unsigned int version)
Definition: DtModelDefinition.h:220
std::vector< std::string > myListOfSharedFiles
Definition: DtModelDefinition.h:244
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:243
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:250
void serialize(Archive &ar, unsigned int version)
Definition: DtModelDefinition.h:211
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 Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)