VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
rwUUID.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include "vrfutil/vrfutilDefines.h"
13 #include "readerWriter/rwString.h"
15 #include <boost/uuid/uuid.hpp>
16 #include <boost/unordered_map.hpp>
17 #include <boost/unordered_set.hpp>
18 
19 #include <boost/archive/xml_iarchive.hpp>
20 #include <boost/archive/xml_oarchive.hpp>
21 #include <boost/serialization/access.hpp>
22 #include <boost/uuid/uuid_io.hpp>
23 #include <boost/uuid/uuid_serialize.hpp>
24 #include <tbb/recursive_mutex.h>
25 
26 class DtRwUUID;
27 class DtUUID;
28 
31 {
32 public:
33  virtual void uuidChanged() = 0;
34 };
35 
39 {
40 public:
42  virtual DtString markingText() = 0;
43  virtual DtUUIDMarkingTextProvider* clone() const = 0;
44 
45  operator DtString () { return markingText(); };
46 };
47 
50 {
51 public:
54 
55  virtual ~DtMarkingTextStringProvider();
56 
57  virtual void setMarkingText(const DtString& s) { myMarkingText = s; };
58  virtual DtString markingText() { return myMarkingText; };
59 
60  virtual DtUUIDMarkingTextProvider* clone() const;
61 
62 protected:
64 };
65 
71 {
72 public:
73  typedef boost::unordered_map<DtUUID, DtUUIDMarkingTextProvider*> UUIDToMarkingTextMap;
74  typedef boost::unordered_map<DtString, DtUUID> EntityIdentifierToUUIDMap;
75  typedef boost::unordered_map<DtUUID, DtString> UUIDToEntityIdentifierMap;
76  typedef boost::unordered_map<DtString, DtUUID> MarkingTextToUUIDMap;
77  typedef boost::unordered_map<DtUUID, DtUUID> UUIDToUUIDMap;
78  typedef boost::unordered_map<DtString, DtString> MarkingTextToMarkingTextMap;
79  typedef boost::unordered_set<DtUUID*> UUIDsForUpgrade;
80 
82 
84 
86  virtual void clear();
87 
90  virtual void setResolveMarkingTextToUUIDMapping(bool);
91  virtual bool resolveMarkingTextToUUIDMapping() const;
92 
93  virtual void setResolveUUIDToUUIDMapping(bool);
94 
95  virtual bool resolveUUIDToUUIDMapping() const;
96 
98  virtual void resolveUUIDMapping(bool clearWhenDone = false);
99 
102  virtual void addUUIDForUpgrade(DtUUID*);
103  virtual void removeUUIDForUpgrade(DtUUID*);
104 
107  virtual void objectUUIDChanged(const DtUUID& oldUUID, const DtUUID& newUUID);
108 
111  virtual DtUUIDMarkingTextProvider* addMarkingTextToUUIDMapping(const DtUUIDMarkingTextProvider&, const DtUUID&);
112  virtual DtUUIDMarkingTextProvider* uuidToMarkingTextProvider(const DtUUID&) const;
113 
114  virtual void removeUUIDToMarkingTextMapping(const DtUUID&);
115 
117  virtual void addUUIDToUUIDMapping(const DtUUID& old, const DtUUID& newUUID);
118 
120  virtual void addEntityIdentifierToUUIDMapping(const DtString& eid, const DtUUID&);
121  virtual void removeEntityIdentifierMapping(const DtString& eid);
122  virtual const DtUUID& entityIdentifierToUUIDMapping(const DtString& eid) const;
123  virtual const DtString& uuidToEntityIdentifierMapping(const DtUUID& uuid) const;
124 
125  virtual bool hasUUID(const DtUUID&) const;
126 
128  virtual void addMarkingTextToMarkingTextMapping(const DtString& oldMarkingText, const DtString& newMarkingText);
129 
131  virtual DtUUID mapMarkingTextToUUID(const DtString&) const;
132 
134  virtual DtString mapUUIDToMarkingText(const DtUUID&) const;
135 
137  virtual void pushMappingContext();
138 
141  virtual void popMappingContext(bool merge = false);
142 
147  virtual DtString markingText(const DtUUID&, bool* found = 0) const;
148 
149  MarkingTextToUUIDMap& markingTextToUUIDMapForImport(int context = -1);
150  const MarkingTextToUUIDMap& markingTextToUUIDMapForImport(int context = -1) const;
151 
154  MarkingTextToUUIDMap& liveMarkingTextToUUIDMap(int context = -1);
155  const MarkingTextToUUIDMap& liveMarkingTextToUUIDMap(int context = -1) const;
156  virtual void markingTextUpdated(const DtString& oldText, const DtString& newText);
157 
158  UUIDsForUpgrade& uuidsForMarkingTextUpgrade(int context = -1);
159  const UUIDsForUpgrade& uuidsForMarkingTextUpgrade(int context = -1) const;
160 
161  UUIDsForUpgrade& uuidsForUUIDUpgrade(int context = -1);
162  const UUIDsForUpgrade& uuidsForUUIDUpgrade(int context = -1) const;
163 
164  UUIDToMarkingTextMap& uuidToMarkingTextMap(int context = -1);
165  const UUIDToMarkingTextMap& uuidToMarkingTextMap(int context = -1) const;
166 
167  UUIDToUUIDMap& uuidToUUIDMap(int context = -1);
168  const UUIDToUUIDMap& uuidToUUIDMap(int context = -1) const;
169 
170  MarkingTextToMarkingTextMap& markingTextToMarkingTextMap(int context = -1);
171  const MarkingTextToMarkingTextMap& markingTextToMarkingTextMap(int context = -1) const;
172 
173  EntityIdentifierToUUIDMap& entityIdentifierToUUIDMap(int context = -1);
174  const EntityIdentifierToUUIDMap& entityIdentifierToUUIDMap(int context = -1) const;
175 
176  UUIDToEntityIdentifierMap& uuidToEntityIdentifierMap(int context = -1);
177  const UUIDToEntityIdentifierMap& uuidToEntityIdentifierMap(int context = -1) const;
178 
180  MarkingTextToUUIDMap markingTextToUUIDMap() const;
181 
182  virtual void resolveToMarkingTextMapping();
183 
185  virtual void resolveToUUIDMapping(bool clearWhenDone = false);
186 
188  virtual DtUUID upgradeUUID(const DtUUID&) const;
189 
192  virtual bool hasMarkingTextToUUIDMapForImport(const DtString&) const;
193 
194 protected:
196  {
204 
207  };
208 
209  mutable tbb::recursive_mutex myMutex;
210 
211  typedef std::vector<MappingContext> MappingContexts;
214 
217  mutable bool myPushingContext;
218  mutable bool myPoppingContext;
219 };
220 
223 {
224 protected:
225  enum UUIDType
226  {
227  NOTSET = 0,
228  BOOST = 1,
229  STRING = 2,
230  UUIDSTRING = 3
231  };
232 
233 public:
235  DtUUID(DtUUIDOwner* = 0);
236  DtUUID(const DtUUID&, DtUUIDOwner* = 0);
237  DtUUID(const boost::uuids::uuid&, DtUUIDOwner* = 0);
238 
244  explicit DtUUID(const DtString&, DtUUIDOwner* = 0, bool blockMarkingTextLookup = false);
245  explicit DtUUID(const std::string&, DtUUIDOwner* = 0, bool blockMarkingTextLookup = false);
246  explicit DtUUID(const char*, DtUUIDOwner* = 0, bool blockMarkingTextLookup = false);
247 
248  DtUUID& operator=(const DtUUID & orig);
249  DtUUID& operator=(const boost::uuids::uuid & orig);
250  bool operator<(const DtUUID & rhs) const;
251  bool operator>(const DtUUID & rhs) const;
252 
253  virtual ~DtUUID();
254 
256  const char* data() const
257  {
258  return &myData[0];
259  }
260 
261  unsigned int dataSize() const
262  {
263  return sizeof(myData);
264  }
265 
266  void setBuffer(const char*);
267 
269  static bool isVrfUUID(const DtString&);
270 
272  bool isVrfUUID() const;
273 
274  UUIDType uuidType() const;
275 
276  bool isBoostUUID() const;
277 
279  virtual void setUUID(const DtString&, bool blockMarkingTextLookup = false);
280  virtual const DtString& uuidString() const;
281 
283  virtual const char* string() const;
284 
289  static DtString uuidMarking();
290 
292  static DtUUID makeStringUUID(const DtString&);
293 
295  virtual void setMarkingText(const DtString&);
296 
299  virtual void setStringUUID(const DtString&);
300 
302  virtual void generateUUID();
303 
305  virtual void clearUUID();
306 
307  bool operator==(const DtString&) const;
308  bool operator==(const std::string&) const;
309  bool operator==(const char*) const;
310  bool operator==(const DtUUID&) const;
311  bool operator==(const DtRwUUID&) const;
312 
313  bool operator!=(const DtUUID& rhs) const { return !(*this == rhs); };
314  bool operator!=(const DtString& rhs) const { return !(*this == rhs); };
315  bool operator!=(const DtRwUUID& rhs) const { return !(*this == rhs); };
316 
317  virtual bool isValid() const;
318 
319  size_t hashValue() const;
320 
321 #ifdef _DEBUG
322  void updateDebugMarkingText();
323 #endif
324 
325  boost::uuids::uuid uuid() const
326  {
327  return asBoostUUID();
328  }
329 
330  boost::uuids::uuid asBoostUUID() const;
331 
332  static const DtUUID& nullUUID();
333 
335  virtual DtString markingText() const;
336 
338  static DtObjectIdentificationResolver& objectIdentificationResolver();
339 
340  //-------------------------------------------
343 
345  DtString objectType() const;
346 
349 
352  bool deserialize(const DtString& data);
353 
355  static DtAsciiSerializable* creator();
357 
358  static bool isValidBoostUUIDString(const DtString& str);
359 
360 protected:
361  friend class boost::serialization::access;
362 
366  template<class Archive>
367  void serialize(Archive & ar, const unsigned int version)
368  {
369  if (Archive::is_loading::value)
370  {
371  std::string uuidS;
372 
373  ar & BOOST_SERIALIZATION_NVP(uuidS);
374 
375  setUUID(uuidS.c_str());
376  }
377  else
378  {
379  std::string uuidS = uuidString().c_str();
380 
381  ar & BOOST_SERIALIZATION_NVP(uuidS);
382  }
383  }
384 
385 protected:
386  virtual void convertStringToData(const std::string&);
387  virtual boost::uuids::uuid convertToBoostUUID(const DtString&);
388  virtual boost::uuids::uuid convertStringToBoostUUID(const DtString&, bool blockMarkingTextLookup = false);
389  virtual const char* convertStringToStringUUID(const char* t) const;
390 
391 protected:
394  char myData[36];
395 
399 
402 
404 
405 #ifdef _DEBUG
406  DtString myDebugMarkingText;
409 #endif
410 
413 };
414 
420 {
421 public:
423  DtRwUUID();
424  DtRwUUID(const char* name, DtReaderWriterRegistry* const parentRegistry = 0);
425  DtRwUUID(const DtString& name, DtReaderWriterRegistry* const parentRegistry);
426  DtRwUUID(const DtSymbolString& name, DtReaderWriterRegistry* const parentRegistry);
427 
429  DtRwUUID(const DtString& name, const DtRwUUID&, DtReaderWriterRegistry* const parentRegistry);
430  DtRwUUID(const DtSymbolString& name, const DtRwUUID&, DtReaderWriterRegistry* const parentRegistry);
431  DtRwUUID(const DtSymbolString& name, const DtUUID&, DtReaderWriterRegistry* const parentRegistry);
432  DtRwUUID(const DtString& name, const DtUUID&, DtReaderWriterRegistry* const parentRegistry);
433  DtRwUUID(const DtString& name, const char*, DtReaderWriterRegistry* const parentRegistry);
434  DtRwUUID(const DtSymbolString& name, const char*, DtReaderWriterRegistry* const parentRegistry);
435  DtRwUUID(const DtRwUUID&, DtReaderWriterRegistry* const parentRegistry);
436  DtRwUUID(const DtRwUUID&);
437  DtRwUUID(const DtUUID&);
438 
439  virtual ~DtRwUUID();
440 
444  virtual const char* readerWriterType() const;
445 
446  virtual void setMarkingText(const DtString&);
447  virtual DtString markingText() const;
448 
450  static const char* theXmlType();
451 
452  operator const DtUUID& () const { return myUUID; };
453 
454  DtRwUUID& operator=(const DtRwUUID & orig);
455  DtRwUUID& operator=(const DtUUID & orig);
456 
457  bool operator!=(const DtRwUUID & orig) const { return !(*this == orig); };
458  bool operator==(const DtRwUUID & orig) const;
459 
460  bool operator<(const DtRwUUID & rhs) const { return myUUID < rhs; };
461  bool operator>(const DtRwUUID & rhs) const { return myUUID > rhs; };
462 
463  virtual const char* xmlType() const
464  {
465  return theXmlType();
466  }
467 
468  const DtUUID& uuid() const { return myUUID; };
469  DtUUID& uuid() { return myUUID; };
470 
471  virtual void clearUUID();
472  virtual DtString uuidString() const;
473  virtual bool isValid() const;
474  virtual void generateUUID();
475  virtual void setUUID(const DtRwUUID& u);
476  virtual void setUUID(const DtString& uuid);
477  virtual void setStringUUID(const DtString& uuid);
478  bool isVrfUUID() const;
479 
480  const char* data() const;
481 
482  unsigned int dataSize() const;
483  void setBuffer(const char*);
484 
485 #ifdef _DEBUG
486  void updateDebugMarkingText() { myUUID.updateDebugMarkingText(); };
487 #endif
488 
489  virtual DtlObjPtr getData(DtlObjPtr args, const SearchPaths& searchPaths,
490  const DtVariableBindingsList& variableBindings);
491  virtual void getSelf(DtlObjPtr args, const SearchPaths& searchPaths = DtReaderWriter::SearchPaths(),
492  const DtVariableBindingsList& variableBindings = DtVariableBindingsList());
493  virtual void getSelf(const DtEnvironmentSP env, const DtEnvValueSP root,
495  const DtVariableBindingsList& varBindings = DtVariableBindingsList());
496  virtual void getData(const DtEnvironmentSP, const DtEnvValueSP,
497  const SearchPaths& searchPaths = SearchPaths(),
498  const DtVariableBindingsList& bindings = DtVariableBindingsList());
499  virtual void putSelf(std::string& fp, int indentLevel = 0,
500  bool writeUnspecified = false, const DtFilename& path =
501  DtFilename::nullFilename());
502  virtual void putSelf(DtEnvironmentSP env, DtEnvValueSP parent) const;
503  virtual void putData(DtEnvironmentSP, DtEnvValueSP value) const;
504  virtual void putData(std::string& fp, int);
505 
506 
507  virtual DtString prettyPrint() const;
508 
509 protected:
511  virtual void noRwValueSpecified();
512 
515  virtual void uuidChanged();
516 
517 protected:
518  mutable DtUUID myUUID;
519 };
520 
524 {
525 public:
527  DtRwObjectName();
528 
530  DtRwObjectName(const DtString& name, DtReaderWriterRegistry* const parentRegistry = NULL);
531  DtRwObjectName(const DtSymbolString& name, DtReaderWriterRegistry* const parentRegistry = NULL);
532 
534  DtRwObjectName(const DtString& name,
535  const char* fromChars,
536  DtReaderWriterRegistry* const parentRegistry = NULL);
537 
538  DtRwObjectName(const DtSymbolString& name,
539  const char* fromChars,
540  DtReaderWriterRegistry* const parentRegistry = NULL);
541 
542  DtRwObjectName(const DtString& name,
543  const DtString& fromString,
544  DtReaderWriterRegistry* const parentRegistry = NULL);
545 
546  DtRwObjectName(const DtSymbolString& name,
547  const DtString& fromString,
548  DtReaderWriterRegistry* const parentRegistry = NULL);
549 
550  DtRwObjectName(const DtString& name,
551  const DtRwObjectName& fromString,
552  DtReaderWriterRegistry* const parentRegistry = NULL);
553 
554  DtRwObjectName(const DtSymbolString& name,
555  const DtRwObjectName& fromString,
556  DtReaderWriterRegistry* const parentRegistry = NULL);
557 
559  DtRwObjectName(const DtRwObjectName& orig, DtReaderWriterRegistry* const parentRegistry = NULL);
560 
562  DtRwObjectName& operator=(const DtRwObjectName & orig);
563  DtRwObjectName& operator=(const DtUUID & orig);
564 
565  virtual ~DtRwObjectName();
566 
568  static const char* theXmlType();
569 
570  virtual const char* xmlType() const
571  {
572  return theXmlType();
573  }
574 
578  virtual const char* readerWriterType() const;
579 };
580 
581 DT_DLL_vrfutil std::size_t hash_value(DtUUID const& b);
582 DT_DLL_vrfutil std::size_t hash_value(DtString const& b);
DtString myMarkingText
Definition: rwUUID.h:63
bool operator==(const DtReaderWriter &) const
Equivalence operator.
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
bool myResolveMarkingTextToUUIDMapping
Definition: rwUUID.h:215
virtual const char * readerWriterType() const
Used to supply a string type that this reader writer type is.
boost::unordered_map< DtString, DtString > MarkingTextToMarkingTextMap
Definition: rwUUID.h:78
bool operator!=(const DtRwUUID &rhs) const
Definition: rwUUID.h:315
Definition: symbolString.h:20
DtString myLastMarkingText
Used for string call to prevent memory from being lost when the temporary markingText() is returned...
Definition: rwUUID.h:412
virtual const char * xmlType() const
Definition: rwUUID.h:570
boost::unordered_map< DtString, DtUUID > EntityIdentifierToUUIDMap
Definition: rwUUID.h:74
bool myResolveUUIDToUUIDMapping
Definition: rwUUID.h:216
MarkingTextToUUIDMap myMarkingTextToUUIDMap
Definition: rwUUID.h:203
bool myDestructingFlag
Definition: rwUUID.h:213
UUIDToEntityIdentifierMap myUUIDToEntityIdentifierMap
Definition: rwUUID.h:199
boost::unordered_map< DtUUID, DtUUID > UUIDToUUIDMap
Definition: rwUUID.h:77
virtual const char * readerWriterType() const
Used to supply a string type that this reader writer type is.
DT_DLL_readerWriter DtBoost::shared_ptr< DtEnvironment > DtEnvironmentSP
Definition: readerWriter.h:30
Definition: asciiSerializable.h:33
virtual bool deserialize(const DtString &)=0
This function should take the string that was serialized via serialize() and fill this object with th...
virtual DtlObjPtr getData(DtlObjPtr args, const SearchPaths &searchPaths, const DtVariableBindingsList &variableBindings)
DT_DLL_terrainCS bool operator==(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
Definition: readerWriter.h:85
bool operator<(const DtRwUUID &rhs) const
Definition: rwUUID.h:460
virtual const char * xmlType() const
Definition: rwUUID.h:463
Definition: readerWriterRegistry.h:39
virtual DtString serialize()=0
The following characters are reserved and cannot be used in serialization: &#39;|&#39;, &#39;:&#39;.
boost::unordered_map< DtUUID, DtUUIDMarkingTextProvider * > UUIDToMarkingTextMap
Definition: rwUUID.h:73
virtual DtString prettyPrint() const
Routine to return a human readable form of the reader/writer variable.
std::vector< MappingContext > MappingContexts
Definition: rwUUID.h:211
MarkingTextToMarkingTextMap myMarkingTextToMarkingTextMap
Definition: rwUUID.h:201
static DtObjectIdentificationResolver theObjectIdentificationResolver
Definition: rwUUID.h:403
Description: Readable, Writable uuid string.
Definition: rwUUID.h:419
UUIDToUUIDMap myUUIDToUUIDMap
Definition: rwUUID.h:200
bool operator!=(const DtUUID &rhs) const
Definition: rwUUID.h:313
virtual void uuidChanged()=0
const char * data() const
Not this also contains the special marker – the actual UUID starts at byte 1.
Definition: rwUUID.h:256
UUIDsForUpgrade myUUIDsForMarkingTextUpgrade
Definition: rwUUID.h:205
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
bool myPoppingContext
Definition: rwUUID.h:218
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
Optional owner of this UUID. Since the UUID can change when remapped, supply an owner to be notified ...
Definition: rwUUID.h:30
static const char * theXmlType()
The type that is used when archiving to an XML stream.
DtRwUUID & operator=(const DtRwUUID &orig)
bool operator>(const DtRwUUID &rhs) const
Definition: rwUUID.h:461
UUIDToMarkingTextMap myUUIDToMarkingTextMap
Definition: rwUUID.h:197
bool operator>(const DtObjectType &lhs, const DtSimulationModelSetLoader::EntityData &rhs)
Definition: simulationModelSetLoader.h:1236
virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths=SearchPaths(), const DtVariableBindingsList &variableBindings=nullVariableReference())
Top level to read itself from an input stream.
Simple wrapper class that will be used by Lua to indicate to create a scripted vrf object from the su...
Definition: rwUUID.h:523
boost::unordered_set< DtUUID * > UUIDsForUpgrade
Definition: rwUUID.h:79
virtual void putSelf(std::string &fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename())
Top level call to write itself to file.
bool operator!=(const DtRwUUID &orig) const
Definition: rwUUID.h:457
virtual DtString objectType() const =0
Should return the string name of this object.
Simple provider that will give the marking text of the object.
Definition: rwUUID.h:49
UUIDsForUpgrade myUUIDsForUUIDUpgrade
Definition: rwUUID.h:206
DtString myMarkingText
Definition: rwUUID.h:400
std::size_t hash_value(const DtNodeBoundingInfoPtr &p)
needed for boost::unordered
Definition: boundingNodeInfo.h:89
const DtUUID & uuid() const
Definition: rwUUID.h:468
DtUUID myUUID
Definition: rwUUID.h:518
UUIDType
Definition: rwUUID.h:225
virtual void putData(std::string &fp, int indentLevel=0)
Deriving class overrides these to get/put class specific data.
virtual ~DtUUIDMarkingTextProvider()
Definition: rwUUID.h:41
bool myPushingContext
Definition: rwUUID.h:217
EntityIdentifierToUUIDMap myEntityIdentifierToUUIDMap
Definition: rwUUID.h:198
virtual void setMarkingText(const DtString &s)
Definition: rwUUID.h:57
bool operator!=(const DtString &rhs) const
Definition: rwUUID.h:314
DtUUIDOwner * myOwner
Definition: rwUUID.h:401
DtString myUUIDString
If the assignment is not a valid boost UUID then the string UUID is what is used. ...
Definition: rwUUID.h:398
This class will be used to manage UUID lookups.
Definition: rwUUID.h:70
#define DT_DLL_vrfutil
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfutilDefines.h:34
DtUUID & uuid()
Definition: rwUUID.h:469
MarkingTextToUUIDMap myMarkingTextToUUIDMapForImport
Definition: rwUUID.h:202
MappingContexts myMappingContexts
Definition: rwUUID.h:212
const DtReaderWriter & operator=(const DtReaderWriter &orig)
assignment operator
static const char * theXmlType()
The type that is used when archiving to an XML stream.
virtual DtUUIDMarkingTextProvider * clone() const =0
boost::unordered_map< DtUUID, DtString > UUIDToEntityIdentifierMap
Definition: rwUUID.h:75
unsigned int dataSize() const
Definition: rwUUID.h:261
boost::unordered_map< DtString, DtUUID > MarkingTextToUUIDMap
Definition: rwUUID.h:76
void serialize(Archive &ar, const unsigned int version)
When the class Archive corresponds to an output archive, the &amp; operator is defined similar to &lt;&lt;...
Definition: rwUUID.h:367
To allow for faster marking text lookups, the DtUUIDMarkingTextProvider class wraps an object that wi...
Definition: rwUUID.h:38
tbb::recursive_mutex myMutex
Definition: rwUUID.h:209
boost::uuids::uuid uuid() const
Definition: rwUUID.h:325
virtual DtString markingText()
Definition: rwUUID.h:58

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)