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/spin_rw_mutex.h>
33 virtual void uuidChanged() = 0;
45 operator DtString () {
return markingText(); };
86 virtual void setResolveMarkingTextToUUIDMapping(
bool);
87 virtual bool resolveMarkingTextToUUIDMapping()
const;
89 virtual void setResolveUUIDToUUIDMapping(
bool);
91 virtual bool resolveUUIDToUUIDMapping()
const;
94 virtual void resolveUUIDMapping(
bool clearWhenDone =
false);
98 virtual void addUUIDForUpgrade(
DtUUID*);
99 virtual void removeUUIDForUpgrade(
DtUUID*);
106 virtual void setMultiThreaded(
bool);
107 virtual bool multiThreaded()
const;
108 virtual void objectUUIDChanged(
const DtUUID& oldUUID,
const DtUUID& newUUID);
113 virtual void removeUUIDToMarkingTextMapping(
const DtUUID&);
116 virtual void addUUIDToUUIDMapping(
const DtUUID& old,
const DtUUID& newUUID);
119 virtual void addEntityIdentifierToUUIDMapping(
const DtString& eid,
const DtUUID&);
120 virtual void removeEntityIdentifierMapping(
const DtString& eid);
121 virtual DtUUID entityIdentifierToUUIDMapping(
const DtString& eid)
const;
123 virtual bool hasUUID(
const DtUUID&)
const;
126 virtual void addMarkingTextToMarkingTextMapping(
const DtString& oldMarkingText,
const DtString& newMarkingText);
135 virtual void pushMappingContext();
139 virtual void popMappingContext(
bool merge =
false);
145 virtual DtString markingText(
const DtUUID&,
bool* found = 0)
const;
151 const UUIDsForUpgrade& uuidsForMarkingTextUpgrade(
int context = -1)
const;
171 virtual void resolveToMarkingTextMapping();
174 virtual void resolveToUUIDMapping(
bool clearWhenDone =
false);
181 virtual bool hasMarkingTextToUUIDMapForImport(
const DtString&)
const;
224 DtUUID(
const std::string&,
DtUUIDOwner* = 0,
bool blockMarkingTextLookup =
false);
228 DtUUID& operator=(
const boost::uuids::uuid & orig);
229 bool operator<(
const DtUUID & rhs)
const;
235 static bool isVrfUUID(
const DtString&);
238 virtual void setUUID(
const DtString&,
bool blockMarkingTextLookup =
false);
239 virtual const DtString& uuidString()
const;
242 virtual const char* string()
const;
254 virtual void setMarkingText(
const DtString&);
258 virtual void setStringUUID(
const DtString&);
261 virtual void generateUUID();
264 virtual void clearUUID();
273 virtual bool isValid()
const;
275 size_t hashValue()
const;
278 void updateDebugMarkingText();
281 bool isVrfUUID()
const
286 boost::uuids::uuid uuid()
const
294 virtual DtString markingText()
const;
317 friend class boost::serialization::access;
322 template<
class Archive>
323 void serialize(Archive & ar,
const unsigned int version)
325 if (Archive::is_loading::value)
329 ar & BOOST_SERIALIZATION_NVP(uuidS);
331 setUUID(uuidS.c_str());
335 std::string uuidS = uuidString().c_str();
337 ar & BOOST_SERIALIZATION_NVP(uuidS);
342 virtual boost::uuids::uuid convertToVrfUUID(
const DtString&);
343 virtual boost::uuids::uuid convertStringToBoostUUID(
const DtString&,
bool blockMarkingTextLookup =
false);
344 virtual const char* convertStringToStringUUID(
const char* t)
const;
398 virtual void setMarkingText(
const DtString&);
399 virtual DtString markingText()
const;
404 operator const DtUUID& ()
const {
return myUUID; };
420 virtual void clearUUID();
421 virtual DtString uuidString()
const;
422 virtual bool isValid()
const;
423 virtual void generateUUID();
424 virtual void setUUID(
const DtRwUUID& u);
425 virtual void setUUID(
const DtString& uuid);
426 virtual void setStringUUID(
const DtString& uuid);
427 virtual bool isVrfUUID()
const;
430 void updateDebugMarkingText() { myUUID.updateDebugMarkingText(); };
433 virtual DtlObjPtr
getData(DtlObjPtr args,
const SearchPaths& searchPaths,
443 virtual void putSelf(std::string& fp,
int indentLevel = 0,
444 bool writeUnspecified =
false,
const DtFilename& path =
445 DtFilename::nullFilename());
448 virtual void putData(std::string& fp,
int);
452 virtual void noRwValueSpecified();
476 const char* fromChars,
480 const char* fromChars,