15 #include <boost/uuid/uuid.hpp>
16 #include <boost/unordered_map.hpp>
17 #include <boost/unordered_set.hpp>
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>
33 virtual void uuidChanged() = 0;
45 operator DtString () {
return markingText(); };
90 virtual void setResolveMarkingTextToUUIDMapping(
bool);
91 virtual bool resolveMarkingTextToUUIDMapping()
const;
93 virtual void setResolveUUIDToUUIDMapping(
bool);
95 virtual bool resolveUUIDToUUIDMapping()
const;
98 virtual void resolveUUIDMapping(
bool clearWhenDone =
false);
102 virtual void addUUIDForUpgrade(
DtUUID*);
103 virtual void removeUUIDForUpgrade(
DtUUID*);
107 virtual void objectUUIDChanged(
const DtUUID& oldUUID,
const DtUUID& newUUID);
114 virtual void removeUUIDToMarkingTextMapping(
const DtUUID&);
117 virtual void addUUIDToUUIDMapping(
const DtUUID& old,
const DtUUID& newUUID);
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;
125 virtual bool hasUUID(
const DtUUID&)
const;
128 virtual void addMarkingTextToMarkingTextMapping(
const DtString& oldMarkingText,
const DtString& newMarkingText);
137 virtual void pushMappingContext();
141 virtual void popMappingContext(
bool merge =
false);
147 virtual DtString markingText(
const DtUUID&,
bool* found = 0)
const;
156 virtual void markingTextUpdated(
const DtString& oldText,
const DtString& newText);
159 const UUIDsForUpgrade& uuidsForMarkingTextUpgrade(
int context = -1)
const;
182 virtual void resolveToMarkingTextMapping();
185 virtual void resolveToUUIDMapping(
bool clearWhenDone =
false);
192 virtual bool hasMarkingTextToUUIDMapForImport(
const DtString&)
const;
245 explicit DtUUID(
const std::string&,
DtUUIDOwner* = 0,
bool blockMarkingTextLookup =
false);
246 explicit DtUUID(
const char*,
DtUUIDOwner* = 0,
bool blockMarkingTextLookup =
false);
249 DtUUID& operator=(
const boost::uuids::uuid & orig);
250 bool operator<(
const DtUUID & rhs)
const;
263 return sizeof(myData);
266 void setBuffer(
const char*);
269 static bool isVrfUUID(
const DtString&);
272 bool isVrfUUID()
const;
274 UUIDType uuidType()
const;
276 bool isBoostUUID()
const;
279 virtual void setUUID(
const DtString&,
bool blockMarkingTextLookup =
false);
280 virtual const DtString& uuidString()
const;
283 virtual const char* string()
const;
295 virtual void setMarkingText(
const DtString&);
299 virtual void setStringUUID(
const DtString&);
302 virtual void generateUUID();
305 virtual void clearUUID();
317 virtual bool isValid()
const;
319 size_t hashValue()
const;
322 void updateDebugMarkingText();
325 boost::uuids::uuid
uuid()
const
327 return asBoostUUID();
330 boost::uuids::uuid asBoostUUID()
const;
332 static const DtUUID& nullUUID();
335 virtual DtString markingText()
const;
358 static bool isValidBoostUUIDString(
const DtString& str);
361 friend class boost::serialization::access;
366 template<
class Archive>
367 void serialize(Archive & ar,
const unsigned int version)
369 if (Archive::is_loading::value)
373 ar & BOOST_SERIALIZATION_NVP(uuidS);
375 setUUID(uuidS.c_str());
379 std::string uuidS = uuidString().c_str();
381 ar & BOOST_SERIALIZATION_NVP(uuidS);
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;
446 virtual void setMarkingText(
const DtString&);
447 virtual DtString markingText()
const;
452 operator const DtUUID& ()
const {
return myUUID; };
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;
480 const char* data()
const;
482 unsigned int dataSize()
const;
483 void setBuffer(
const char*);
486 void updateDebugMarkingText() { myUUID.updateDebugMarkingText(); };
489 virtual DtlObjPtr
getData(DtlObjPtr args,
const SearchPaths& searchPaths,
499 virtual void putSelf(std::string& fp,
int indentLevel = 0,
500 bool writeUnspecified =
false,
const DtFilename& path =
501 DtFilename::nullFilename());
504 virtual void putData(std::string& fp,
int);
511 virtual void noRwValueSpecified();
535 const char* fromChars,
539 const char* fromChars,
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: '|', ':'.
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 & operator is defined similar to <<...
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