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;
236 explicit DtUUID(
const std::string&,
DtUUIDOwner* = 0,
bool blockMarkingTextLookup =
false);
237 explicit DtUUID(
const char*,
DtUUIDOwner* = 0,
bool blockMarkingTextLookup =
false);
240 DtUUID& operator=(
const boost::uuids::uuid & orig);
241 bool operator<(
const DtUUID & rhs)
const;
247 static bool isVrfUUID(
const DtString&);
250 virtual void setUUID(
const DtString&,
bool blockMarkingTextLookup =
false);
251 virtual const DtString& uuidString()
const;
254 virtual const char* string()
const;
266 virtual void setMarkingText(
const DtString&);
270 virtual void setStringUUID(
const DtString&);
273 virtual void generateUUID();
276 virtual void clearUUID();
288 virtual bool isValid()
const;
290 size_t hashValue()
const;
293 void updateDebugMarkingText();
296 bool isVrfUUID()
const
301 boost::uuids::uuid uuid()
const
306 static const DtUUID& nullUUID();
309 virtual DtString markingText()
const;
333 friend class boost::serialization::access;
338 template<
class Archive>
339 void serialize(Archive & ar,
const unsigned int version)
341 if (Archive::is_loading::value)
345 ar & BOOST_SERIALIZATION_NVP(uuidS);
347 setUUID(uuidS.c_str());
351 std::string uuidS = uuidString().c_str();
353 ar & BOOST_SERIALIZATION_NVP(uuidS);
358 virtual boost::uuids::uuid convertToVrfUUID(
const DtString&);
359 virtual boost::uuids::uuid convertStringToBoostUUID(
const DtString&,
bool blockMarkingTextLookup =
false);
360 virtual const char* convertStringToStringUUID(
const char* t)
const;
417 virtual void setMarkingText(
const DtString&);
418 virtual DtString markingText()
const;
423 operator const DtUUID& ()
const {
return myUUID; };
442 virtual void clearUUID();
443 virtual DtString uuidString()
const;
444 virtual bool isValid()
const;
445 virtual void generateUUID();
446 virtual void setUUID(
const DtRwUUID& u);
447 virtual void setUUID(
const DtString& uuid);
448 virtual void setStringUUID(
const DtString& uuid);
449 virtual bool isVrfUUID()
const;
452 void updateDebugMarkingText() { myUUID.updateDebugMarkingText(); };
455 virtual DtlObjPtr
getData(DtlObjPtr args,
const SearchPaths& searchPaths,
465 virtual void putSelf(std::string& fp,
int indentLevel = 0,
466 bool writeUnspecified =
false,
const DtFilename& path =
467 DtFilename::nullFilename());
470 virtual void putData(std::string& fp,
int);
474 virtual void noRwValueSpecified();
498 const char* fromChars,
502 const char* fromChars,