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 DtString uuidString()
const;
242 virtual const char* string()
const;
251 virtual void setMarkingText(
const DtString&);
255 virtual void setStringUUID(
const DtString&);
258 virtual void generateUUID();
261 virtual void clearUUID();
270 virtual bool isValid()
const;
272 size_t hashValue()
const;
275 void updateDebugMarkingText();
278 bool isVrfUUID()
const
283 boost::uuids::uuid uuid()
const
291 virtual DtString markingText()
const;
314 friend class boost::serialization::access;
319 template<
class Archive>
320 void serialize(Archive & ar,
const unsigned int version)
322 if (Archive::is_loading::value)
326 ar & BOOST_SERIALIZATION_NVP(uuidS);
328 setUUID(uuidS.c_str());
332 std::string uuidS = uuidString().c_str();
334 ar & BOOST_SERIALIZATION_NVP(uuidS);
339 virtual boost::uuids::uuid convertToVrfUUID(
const DtString&);
340 virtual boost::uuids::uuid convertStringToBoostUUID(
const DtString&,
bool blockMarkingTextLookup =
false);
341 virtual const char* convertStringToStringUUID(
const char* t)
const;
395 virtual void setMarkingText(
const DtString&);
396 virtual DtString markingText()
const;
401 operator const DtUUID& ()
const {
return myUUID; };
417 virtual void clearUUID();
418 virtual DtString uuidString()
const;
419 virtual bool isValid()
const;
420 virtual void generateUUID();
421 virtual void setUUID(
const DtRwUUID& u);
422 virtual void setUUID(
const DtString& uuid);
423 virtual void setStringUUID(
const DtString& uuid);
424 virtual bool isVrfUUID()
const;
427 void updateDebugMarkingText() { myUUID.updateDebugMarkingText(); };
430 virtual DtlObjPtr
getData(DtlObjPtr args,
const SearchPaths& searchPaths,
440 virtual void putSelf(FILE* fp,
int indentLevel = 0,
441 bool writeUnspecified =
false,
const DtFilename& path =
442 DtFilename::nullFilename());
445 virtual void putData(FILE* fp,
int);
449 virtual void noRwValueSpecified();
473 const char* fromChars,
477 const char* fromChars,