16 #include <boost/uuid/uuid.hpp>
17 #include <boost/unordered_map.hpp>
18 #include <boost/unordered_set.hpp>
20 #include <boost/archive/xml_iarchive.hpp>
21 #include <boost/archive/xml_oarchive.hpp>
22 #include <boost/serialization/access.hpp>
23 #include <boost/uuid/uuid_io.hpp>
24 #include <boost/uuid/uuid_serialize.hpp>
25 #include <boost/signals2.hpp>
26 #include <tbb/recursive_mutex.h>
35 virtual void uuidChanged() = 0;
47 operator DtString () {
return markingText(); };
92 virtual void setResolveMarkingTextToUUIDMapping(
bool);
93 virtual bool resolveMarkingTextToUUIDMapping()
const;
95 virtual void setResolveUUIDToUUIDMapping(
bool);
97 virtual bool resolveUUIDToUUIDMapping()
const;
100 virtual void resolveUUIDMapping(
bool clearWhenDone =
false);
104 virtual bool addUUIDForUpgrade(
DtUUID*);
105 virtual void removeUUIDForUpgrade(
DtUUID*);
109 virtual void objectUUIDChanged(
const DtUUID& oldUUID,
const DtUUID& newUUID);
116 virtual void removeUUIDToMarkingTextMapping(
const DtUUID&);
119 virtual void addUUIDToUUIDMapping(
const DtUUID& old,
const DtUUID& newUUID);
122 virtual void addEntityIdentifierToUUIDMapping(
const DtString& eid,
const DtUUID&);
123 virtual void removeEntityIdentifierMapping(
const DtString& eid);
124 virtual const DtUUID& entityIdentifierToUUIDMapping(
const DtString& eid)
const;
125 virtual const DtString& uuidToEntityIdentifierMapping(
const DtUUID& uuid)
const;
127 virtual bool hasUUID(
const DtUUID&)
const;
130 virtual void addMarkingTextToMarkingTextMapping(
const DtString& oldMarkingText,
const DtString& newMarkingText);
136 virtual bool hasMarkingText(
const DtString&)
const;
142 virtual void pushMappingContext();
146 virtual void popMappingContext(
bool merge =
false);
152 virtual DtString markingText(
const DtUUID&,
bool* found = 0)
const;
161 virtual void markingTextUpdated(
const DtString& oldText,
const DtString& newText);
164 const UUIDsForUpgrade& uuidsForMarkingTextUpgrade(
int context = -1)
const;
187 virtual void resolveToMarkingTextMapping();
190 virtual boost::unordered_map<DtString, DtString> resolveToUUIDMapping(
bool clearWhenDone =
false);
197 virtual bool hasMarkingTextToUUIDMapForImport(
const DtString&)
const;
252 explicit DtUUID(
const std::string&,
DtUUIDOwner* = 0,
bool blockMarkingTextLookup =
false);
253 explicit DtUUID(
const char*,
DtUUIDOwner* = 0,
bool blockMarkingTextLookup =
false);
259 DtUUID& operator=(
const boost::uuids::uuid & orig);
260 bool operator<(
const DtUUID & rhs)
const;
273 return sizeof(myData);
276 void setBuffer(
const char*);
279 static bool isVrfUUID(
const DtString&);
281 bool isBoostUUID()
const;
282 bool isVrfUUID()
const;
284 UUIDType uuidType()
const;
287 virtual void setUUID(
const DtString&,
bool blockMarkingTextLookup =
false);
288 virtual const DtString& uuidString()
const;
300 virtual void setMarkingText(
const DtString&);
304 virtual void setStringUUID(
const DtString&);
307 virtual void generateUUID();
310 virtual void clearUUID();
322 virtual bool isValid()
const;
323 virtual bool isStringUUID()
const;
326 size_t hashValue()
const;
328 boost::uuids::uuid
uuid()
const
330 return asBoostUUID();
333 boost::uuids::uuid asBoostUUID()
const;
335 static const DtUUID& nullUUID();
338 virtual DtString markingText()
const;
341 std::string string()
const;
364 static bool isValidBoostUUIDString(
const DtString& str);
366 virtual size_t calcHashValue()
const;
370 return myAddedForUpgrade;
375 myAddedForUpgrade = b;
379 friend class boost::serialization::access;
384 template<
class Archive>
385 void serialize(Archive & ar,
const unsigned int version)
387 if (Archive::is_loading::value)
391 ar & BOOST_SERIALIZATION_NVP(uuidS);
393 setUUID(uuidS.c_str());
397 std::string uuidS = uuidString().c_str();
399 ar & BOOST_SERIALIZATION_NVP(uuidS);
404 virtual void convertStringToData(
const std::string&);
405 virtual boost::uuids::uuid convertToBoostUUID(
const DtString&);
406 virtual boost::uuids::uuid convertStringToBoostUUID(
const DtString&,
bool blockMarkingTextLookup =
false);
407 virtual const char* convertStringToStringUUID(
const char* t)
const;
458 virtual void setMarkingText(
const DtString&);
459 virtual DtString markingText()
const;
464 operator const DtUUID& ()
const {
return myUUID; };
483 virtual void clearUUID();
484 virtual DtString uuidString()
const;
485 virtual bool isValid()
const;
486 virtual void generateUUID();
487 virtual void setUUID(
const DtRwUUID& u);
488 virtual void setUUID(
const DtString& uuid);
489 virtual void setStringUUID(
const DtString& uuid);
490 bool isVrfUUID()
const;
492 const char* data()
const;
494 unsigned int dataSize()
const;
495 void setBuffer(
const char*);
497 virtual DtlObjPtr
getData(DtlObjPtr args,
const SearchPaths& searchPaths,
507 virtual void putSelf(std::string& fp,
int indentLevel = 0,
508 bool writeUnspecified =
false,
const DtFilename& path =
509 DtFilename::nullFilename());
512 virtual void putData(std::string& fp,
int);
519 virtual void noRwValueSpecified();
543 const char* fromChars,
547 const char* fromChars,
DtString myMarkingText
Definition: rwUUID.h:65
bool operator==(const DtReaderWriter &) const
Equivalence operator.
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
bool myResolveMarkingTextToUUIDMapping
Definition: rwUUID.h:222
virtual const char * readerWriterType() const
Used to supply a string type that this reader writer type is. This can be used in place of dynamic-ca...
boost::unordered_map< DtString, DtString > MarkingTextToMarkingTextMap
Definition: rwUUID.h:80
bool operator!=(const DtRwUUID &rhs) const
Definition: rwUUID.h:320
Definition: symbolString.h:20
virtual const char * xmlType() const
Definition: rwUUID.h:578
boost::unordered_map< DtString, DtUUID > EntityIdentifierToUUIDMap
Definition: rwUUID.h:76
bool myResolveUUIDToUUIDMapping
Definition: rwUUID.h:223
MarkingTextToUUIDMap myMarkingTextToUUIDMap
Definition: rwUUID.h:210
bool myDestructingFlag
Definition: rwUUID.h:220
UUIDToEntityIdentifierMap myUUIDToEntityIdentifierMap
Definition: rwUUID.h:206
boost::unordered_map< DtUUID, DtUUID > UUIDToUUIDMap
Definition: rwUUID.h:79
virtual const char * readerWriterType() const
Used to supply a string type that this reader writer type is. This can be used in place of dynamic-ca...
DT_DLL_readerWriter DtBoost::shared_ptr< DtEnvironment > DtEnvironmentSP
Definition: readerWriter.h:30
bool addedForUpgrade() const
Definition: rwUUID.h:368
Definition: asciiSerializable.h:34
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)
Deriving class overrides these to get/put class specific data.
DT_DLL_terrainCS bool operator==(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
Definition: readerWriter.h:85
bool operator<(const DtRwUUID &rhs) const
Definition: rwUUID.h:472
virtual const char * xmlType() const
Definition: rwUUID.h:475
Definition: readerWriterRegistry.h:39
std::size_t operator()(const DtUUID &k) const
Definition: rwUUID.h:597
virtual DtString serialize()=0
The following characters are reserved and cannot be used in serialization: '|', ':'.
boost::unordered_map< DtUUID, DtUUIDMarkingTextProvider * > UUIDToMarkingTextMap
Definition: rwUUID.h:75
virtual DtString prettyPrint() const
Routine to return a human readable form of the reader/writer variable. Not all reader/writer classes ...
std::vector< MappingContext > MappingContexts
Definition: rwUUID.h:218
MarkingTextToMarkingTextMap myMarkingTextToMarkingTextMap
Definition: rwUUID.h:208
static DtObjectIdentificationResolver theObjectIdentificationResolver
Definition: rwUUID.h:421
Description: Readable, Writable uuid string. Use this class in order to convert from object marking t...
Definition: rwUUID.h:431
UUIDToUUIDMap myUUIDToUUIDMap
Definition: rwUUID.h:207
size_t myHashValue
Definition: rwUUID.h:423
bool operator!=(const DtUUID &rhs) const
Definition: rwUUID.h:318
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:266
UUIDsForUpgrade myUUIDsForMarkingTextUpgrade
Definition: rwUUID.h:212
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
bool myPoppingContext
Definition: rwUUID.h:225
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:32
bool myAddedForUpgrade
Definition: rwUUID.h:424
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:473
UUIDToMarkingTextMap myUUIDToMarkingTextMap
Definition: rwUUID.h:204
size_t hashValue() const
If the hashValue is 0 and this is a valid UUID, this will throw a std::runtime_exception.
bool operator>(const DtObjectType &lhs, const DtSimulationModelSetLoader::EntityData &rhs)
Definition: simulationModelSetLoader.h:1315
virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths=SearchPaths(), const DtVariableBindingsList &variableBindings=nullVariableReference())
Top level to read itself from an input stream. searchPath is passed down to all DtReaderWriter member...
Simple wrapper class that will be used by Lua to indicate to create a scripted vrf object from the su...
Definition: rwUUID.h:531
boost::unordered_set< DtUUID * > UUIDsForUpgrade
Definition: rwUUID.h:81
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. If write unspecified is true, will write entries that are uns...
bool operator!=(const DtRwUUID &orig) const
Definition: rwUUID.h:469
virtual DtString objectType() const =0
Should return the string name of this object. The object name should not be part of the serialization...
Simple provider that will give the marking text of the object.
Definition: rwUUID.h:51
UUIDsForUpgrade myUUIDsForUUIDUpgrade
Definition: rwUUID.h:213
DtString myMarkingText
Definition: rwUUID.h:418
std::size_t hash_value(const DtNodeBoundingInfoPtr &p)
needed for boost::unordered
Definition: boundingNodeInfo.h:91
const DtUUID & uuid() const
Definition: rwUUID.h:480
DtUUID myUUID
Definition: rwUUID.h:526
UUIDType
Definition: rwUUID.h:232
virtual void putData(std::string &fp, int indentLevel=0)
Deriving class overrides these to get/put class specific data.
virtual ~DtUUIDMarkingTextProvider()
Definition: rwUUID.h:43
bool myPushingContext
Definition: rwUUID.h:224
EntityIdentifierToUUIDMap myEntityIdentifierToUUIDMap
Definition: rwUUID.h:205
virtual void setMarkingText(const DtString &s)
Definition: rwUUID.h:59
bool operator!=(const DtString &rhs) const
Definition: rwUUID.h:319
DtUUIDOwner * myOwner
Definition: rwUUID.h:419
DtString myUUIDString
If the assignment is not a valid boost UUID then the string UUID is what is used. ...
Definition: rwUUID.h:416
This class will be used to manage UUID lookups. It will contain a list of sub-lists that can be used ...
Definition: rwUUID.h:72
#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:481
MarkingTextToUUIDMap myMarkingTextToUUIDMapForImport
Definition: rwUUID.h:209
MappingContexts myMappingContexts
Definition: rwUUID.h:219
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
void setAddedForUpgrade(bool b)
Definition: rwUUID.h:373
boost::unordered_map< DtUUID, DtString > UUIDToEntityIdentifierMap
Definition: rwUUID.h:77
unsigned int dataSize() const
Definition: rwUUID.h:271
boost::unordered_map< DtString, DtUUID > MarkingTextToUUIDMap
Definition: rwUUID.h:78
void serialize(Archive &ar, const unsigned int version)
When the class Archive corresponds to an output archive, the & operator is defined similar to <<...
Definition: rwUUID.h:385
To allow for faster marking text lookups, the DtUUIDMarkingTextProvider class wraps an object that wi...
Definition: rwUUID.h:40
boost::signals2::signal< void(const DtUUID &oldUUID, const DtUUID &newUUID)> signal_uuidUpgradedTo
Definition: rwUUID.h:199
tbb::recursive_mutex myMutex
Definition: rwUUID.h:216
boost::uuids::uuid uuid() const
Definition: rwUUID.h:328
virtual DtString markingText()
Definition: rwUUID.h:60