VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
objectIdentificationResolver.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2022 MAK Technologies, Inc.
3  * All rights reserved.
4  ****************************************************************************/
5 
7 
8 #pragma once
9 
11 #include <vrfutil/uuid.h>
12 #include <vrfutil/vrfutilDefines.h>
13 
15 #include <vlutil/vlUuid.h>
16 
18 #include <unordered_set>
19 #include <tuple>
20 
22 #include <boost/archive/xml_iarchive.hpp>
23 #include <boost/archive/xml_oarchive.hpp>
24 #include <boost/serialization/access.hpp>
25 #include <boost/uuid/uuid_io.hpp>
26 #include <boost/uuid/uuid_serialize.hpp>
27 #include <boost/unordered_map.hpp>
28 #include <boost/signals2.hpp>
29 
30 #include <mutex>
31 
32 
38 {
39 public:
40  typedef boost::unordered_map<DtUUID, DtUUIDMarkingTextProvider*> UUIDToMarkingTextMap;
41  typedef boost::unordered_map<DtString, DtUUID> EntityIdentifierToUUIDMap;
42  typedef boost::unordered_map<DtUUID, DtString> UUIDToEntityIdentifierMap;
43  typedef boost::unordered_map<DtString, DtUUID> MarkingTextToUUIDMap;
44  typedef boost::unordered_map<DtUUID, DtUUID> UUIDToUUIDMap;
45  typedef boost::unordered_map<DtString, DtString> MarkingTextToMarkingTextMap;
46  typedef std::unordered_set<DtUUID*> UUIDsForUpgrade;
47 
49 
51 
53  virtual void clear();
54 
57  virtual void setResolveMarkingTextToUUIDMapping(bool);
58  virtual bool resolveMarkingTextToUUIDMapping() const;
59 
60  virtual void setResolveUUIDToUUIDMapping(bool);
61 
62  virtual bool resolveUUIDToUUIDMapping() const;
63 
65  virtual void resolveUUIDMapping(bool clearWhenDone = false);
66 
69  virtual bool addUUIDForUpgrade(DtUUID*);
70  virtual void removeUUIDForUpgrade(DtUUID*);
71 
74  virtual void objectUUIDChanged(const DtUUID& oldUUID, const DtUUID& newUUID);
75 
79  virtual void objectNameChanged(const DtString& oldName, const DtString& newName, const DtUUID& newNameUUID);
80 
83  virtual DtUUIDMarkingTextProvider* addMarkingTextToUUIDMapping(const DtUUIDMarkingTextProvider&, const DtUUID&);
84  virtual DtUUIDMarkingTextProvider* uuidToMarkingTextProvider(const DtUUID&) const;
85 
86  virtual void removeUUIDToMarkingTextMapping(const DtUUID&);
87 
89  virtual void addUUIDToUUIDMapping(const DtUUID& old, const DtUUID& newUUID);
90 
92  virtual void addEntityIdentifierToUUIDMapping(const DtString& eid, const DtUUID&);
93  virtual void removeEntityIdentifierMapping(const DtString& eid);
94  virtual const DtUUID& entityIdentifierToUUIDMapping(const DtString& eid) const;
95  virtual const DtString& uuidToEntityIdentifierMapping(const DtUUID& uuid) const;
96 
97  virtual bool hasUUID(const DtUUID&) const;
98 
100  virtual void addMarkingTextToMarkingTextMapping(const DtString& oldMarkingText, const DtString& newMarkingText);
101 
103  virtual DtUUID mapMarkingTextToUUID(const DtString&) const;
104 
106  virtual bool hasMarkingText(const DtString&) const;
107 
109  virtual DtString mapUUIDToMarkingText(const DtUUID&) const;
110 
112  virtual void pushMappingContext();
113 
116  virtual void popMappingContext(bool merge = false);
117 
122  virtual DtString markingText(const DtUUID&, bool* found = nullptr) const;
123 
124  MarkingTextToUUIDMap& markingTextToUUIDMapForImport(int context = -1);
125  const MarkingTextToUUIDMap& markingTextToUUIDMapForImport(int context = -1) const;
126 
129  MarkingTextToUUIDMap& liveMarkingTextToUUIDMap(int context = -1);
130  const MarkingTextToUUIDMap& liveMarkingTextToUUIDMap(int context = -1) const;
131  virtual void markingTextUpdated(const DtString& oldText, const DtString& newText);
132 
133  UUIDsForUpgrade& uuidsForMarkingTextUpgrade(int context = -1);
134  const UUIDsForUpgrade& uuidsForMarkingTextUpgrade(int context = -1) const;
135 
136  UUIDsForUpgrade& uuidsForUUIDUpgrade(int context = -1);
137  const UUIDsForUpgrade& uuidsForUUIDUpgrade(int context = -1) const;
138 
139  UUIDToMarkingTextMap& uuidToMarkingTextMap(int context = -1);
140  const UUIDToMarkingTextMap& uuidToMarkingTextMap(int context = -1) const;
141 
142  UUIDToUUIDMap& uuidToUUIDMap(int context = -1);
143  const UUIDToUUIDMap& uuidToUUIDMap(int context = -1) const;
144 
145  MarkingTextToMarkingTextMap& markingTextToMarkingTextMap(int context = -1);
146  const MarkingTextToMarkingTextMap& markingTextToMarkingTextMap(int context = -1) const;
147 
148  EntityIdentifierToUUIDMap& entityIdentifierToUUIDMap(int context = -1);
149  const EntityIdentifierToUUIDMap& entityIdentifierToUUIDMap(int context = -1) const;
150 
151  UUIDToEntityIdentifierMap& uuidToEntityIdentifierMap(int context = -1);
152  const UUIDToEntityIdentifierMap& uuidToEntityIdentifierMap(int context = -1) const;
153 
155  MarkingTextToUUIDMap markingTextToUUIDMap() const;
156 
157  virtual void resolveToMarkingTextMapping();
158 
160  virtual boost::unordered_map<DtString, DtString> resolveToUUIDMapping(bool clearWhenDone = false);
161 
163  virtual DtUUID upgradeUUID(const DtUUID&) const;
164 
167  virtual bool hasMarkingTextToUUIDMapForImport(const DtString&) const;
168 
169  boost::signals2::signal<void (const DtUUID& oldUUID, const DtUUID& newUUID)> signal_uuidUpgradedTo;
170 
171 protected:
173  {
181 
184  };
185 
186  mutable std::recursive_mutex myMutex;
187 
188  typedef std::vector<MappingContext> MappingContexts;
191 
194  mutable bool myPushingContext;
195  mutable bool myPoppingContext;
196 };
197 
UUID is a unique ID wrapper class.
Definition: uuid.h:59
bool myResolveMarkingTextToUUIDMapping
Definition: objectIdentificationResolver.h:192
Definition: objectIdentificationResolver.h:172
boost::unordered_map< DtString, DtString > MarkingTextToMarkingTextMap
Definition: objectIdentificationResolver.h:45
boost::unordered_map< DtString, DtUUID > EntityIdentifierToUUIDMap
Definition: objectIdentificationResolver.h:41
bool myResolveUUIDToUUIDMapping
Definition: objectIdentificationResolver.h:193
MarkingTextToUUIDMap myMarkingTextToUUIDMap
Definition: objectIdentificationResolver.h:180
bool myDestructingFlag
Definition: objectIdentificationResolver.h:190
UUIDToEntityIdentifierMap myUUIDToEntityIdentifierMap
Definition: objectIdentificationResolver.h:176
boost::unordered_map< DtUUID, DtUUID > UUIDToUUIDMap
Definition: objectIdentificationResolver.h:44
Contains the DtUUID class declaration.
boost::unordered_map< DtUUID, DtUUIDMarkingTextProvider * > UUIDToMarkingTextMap
Definition: objectIdentificationResolver.h:40
std::vector< MappingContext > MappingContexts
Definition: objectIdentificationResolver.h:188
MarkingTextToMarkingTextMap myMarkingTextToMarkingTextMap
Definition: objectIdentificationResolver.h:178
UUIDToUUIDMap myUUIDToUUIDMap
Definition: objectIdentificationResolver.h:177
UUIDsForUpgrade myUUIDsForMarkingTextUpgrade
Definition: objectIdentificationResolver.h:182
bool myPoppingContext
Definition: objectIdentificationResolver.h:195
UUIDToMarkingTextMap myUUIDToMarkingTextMap
Definition: objectIdentificationResolver.h:174
UUIDsForUpgrade myUUIDsForUUIDUpgrade
Definition: objectIdentificationResolver.h:183
std::recursive_mutex myMutex
Definition: objectIdentificationResolver.h:186
bool myPushingContext
Definition: objectIdentificationResolver.h:194
EntityIdentifierToUUIDMap myEntityIdentifierToUUIDMap
Definition: objectIdentificationResolver.h:175
std::unordered_set< DtUUID * > UUIDsForUpgrade
Definition: objectIdentificationResolver.h:46
Definition: objectIdentificationResolver.h:37
#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
MarkingTextToUUIDMap myMarkingTextToUUIDMapForImport
Definition: objectIdentificationResolver.h:179
MappingContexts myMappingContexts
Definition: objectIdentificationResolver.h:189
boost::unordered_map< DtUUID, DtString > UUIDToEntityIdentifierMap
Definition: objectIdentificationResolver.h:42
boost::unordered_map< DtString, DtUUID > MarkingTextToUUIDMap
Definition: objectIdentificationResolver.h:43
To allow for faster marking text lookups, the DtUUIDMarkingTextProvider class wraps an object that wi...
Definition: uuid.h:30
boost::signals2::signal< void(const DtUUID &oldUUID, const DtUUID &newUUID)> signal_uuidUpgradedTo
Definition: objectIdentificationResolver.h:169

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)