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 
10 #include "vrfutil/vrfutilDefines.h"
11 #include "vrfutil/uuid.h"
12 #include <boost/unordered_map.hpp>
13 #include <boost/unordered_set.hpp>
14 
15 #include <boost/archive/xml_iarchive.hpp>
16 #include <boost/archive/xml_oarchive.hpp>
17 #include <boost/serialization/access.hpp>
18 #include <boost/uuid/uuid_io.hpp>
19 #include <boost/uuid/uuid_serialize.hpp>
20 #include <boost/signals2.hpp>
21 #include <tbb/recursive_mutex.h>
22 
23 #include <vlutil/vlUuid.h>
24 
30 {
31 public:
32  typedef boost::unordered_map<DtUUID, DtUUIDMarkingTextProvider*> UUIDToMarkingTextMap;
33  typedef boost::unordered_map<DtString, DtUUID> EntityIdentifierToUUIDMap;
34  typedef boost::unordered_map<DtUUID, DtString> UUIDToEntityIdentifierMap;
35  typedef boost::unordered_map<DtString, DtUUID> MarkingTextToUUIDMap;
36  typedef boost::unordered_map<DtUUID, DtUUID> UUIDToUUIDMap;
37  typedef boost::unordered_map<DtString, DtString> MarkingTextToMarkingTextMap;
38  typedef boost::unordered_set<DtUUID*> UUIDsForUpgrade;
39 
41 
43 
45  virtual void clear();
46 
49  virtual void setResolveMarkingTextToUUIDMapping(bool);
50  virtual bool resolveMarkingTextToUUIDMapping() const;
51 
52  virtual void setResolveUUIDToUUIDMapping(bool);
53 
54  virtual bool resolveUUIDToUUIDMapping() const;
55 
57  virtual void resolveUUIDMapping(bool clearWhenDone = false);
58 
61  virtual bool addUUIDForUpgrade(DtUUID*);
62  virtual void removeUUIDForUpgrade(DtUUID*);
63 
66  virtual void objectUUIDChanged(const DtUUID& oldUUID, const DtUUID& newUUID);
67 
71  virtual void objectNameChanged(const DtString& oldName, const DtString& newName, const DtUUID& newNameUUID);
72 
75  virtual DtUUIDMarkingTextProvider* addMarkingTextToUUIDMapping(const DtUUIDMarkingTextProvider&, const DtUUID&);
76  virtual DtUUIDMarkingTextProvider* uuidToMarkingTextProvider(const DtUUID&) const;
77 
78  virtual void removeUUIDToMarkingTextMapping(const DtUUID&);
79 
81  virtual void addUUIDToUUIDMapping(const DtUUID& old, const DtUUID& newUUID);
82 
84  virtual void addEntityIdentifierToUUIDMapping(const DtString& eid, const DtUUID&);
85  virtual void removeEntityIdentifierMapping(const DtString& eid);
86  virtual const DtUUID& entityIdentifierToUUIDMapping(const DtString& eid) const;
87  virtual const DtString& uuidToEntityIdentifierMapping(const DtUUID& uuid) const;
88 
89  virtual bool hasUUID(const DtUUID&) const;
90 
92  virtual void addMarkingTextToMarkingTextMapping(const DtString& oldMarkingText, const DtString& newMarkingText);
93 
95  virtual DtUUID mapMarkingTextToUUID(const DtString&) const;
96 
98  virtual bool hasMarkingText(const DtString&) const;
99 
101  virtual DtString mapUUIDToMarkingText(const DtUUID&) const;
102 
104  virtual void pushMappingContext();
105 
108  virtual void popMappingContext(bool merge = false);
109 
114  virtual DtString markingText(const DtUUID&, bool* found = nullptr) const;
115 
116  MarkingTextToUUIDMap& markingTextToUUIDMapForImport(int context = -1);
117  const MarkingTextToUUIDMap& markingTextToUUIDMapForImport(int context = -1) const;
118 
121  MarkingTextToUUIDMap& liveMarkingTextToUUIDMap(int context = -1);
122  const MarkingTextToUUIDMap& liveMarkingTextToUUIDMap(int context = -1) const;
123  virtual void markingTextUpdated(const DtString& oldText, const DtString& newText);
124 
125  UUIDsForUpgrade& uuidsForMarkingTextUpgrade(int context = -1);
126  const UUIDsForUpgrade& uuidsForMarkingTextUpgrade(int context = -1) const;
127 
128  UUIDsForUpgrade& uuidsForUUIDUpgrade(int context = -1);
129  const UUIDsForUpgrade& uuidsForUUIDUpgrade(int context = -1) const;
130 
131  UUIDToMarkingTextMap& uuidToMarkingTextMap(int context = -1);
132  const UUIDToMarkingTextMap& uuidToMarkingTextMap(int context = -1) const;
133 
134  UUIDToUUIDMap& uuidToUUIDMap(int context = -1);
135  const UUIDToUUIDMap& uuidToUUIDMap(int context = -1) const;
136 
137  MarkingTextToMarkingTextMap& markingTextToMarkingTextMap(int context = -1);
138  const MarkingTextToMarkingTextMap& markingTextToMarkingTextMap(int context = -1) const;
139 
140  EntityIdentifierToUUIDMap& entityIdentifierToUUIDMap(int context = -1);
141  const EntityIdentifierToUUIDMap& entityIdentifierToUUIDMap(int context = -1) const;
142 
143  UUIDToEntityIdentifierMap& uuidToEntityIdentifierMap(int context = -1);
144  const UUIDToEntityIdentifierMap& uuidToEntityIdentifierMap(int context = -1) const;
145 
147  MarkingTextToUUIDMap markingTextToUUIDMap() const;
148 
149  virtual void resolveToMarkingTextMapping();
150 
152  virtual boost::unordered_map<DtString, DtString> resolveToUUIDMapping(bool clearWhenDone = false);
153 
155  virtual DtUUID upgradeUUID(const DtUUID&) const;
156 
159  virtual bool hasMarkingTextToUUIDMapForImport(const DtString&) const;
160 
161  boost::signals2::signal<void (const DtUUID& oldUUID, const DtUUID& newUUID)> signal_uuidUpgradedTo;
162 
163 protected:
165  {
173 
176  };
177 
178  mutable tbb::recursive_mutex myMutex;
179 
180  typedef std::vector<MappingContext> MappingContexts;
183 
186  mutable bool myPushingContext;
187  mutable bool myPoppingContext;
188 };
189 
UUID is a unique ID wrapper class.
Definition: uuid.h:59
bool myResolveMarkingTextToUUIDMapping
Definition: objectIdentificationResolver.h:184
Definition: objectIdentificationResolver.h:164
boost::unordered_map< DtString, DtString > MarkingTextToMarkingTextMap
Definition: objectIdentificationResolver.h:37
boost::unordered_map< DtString, DtUUID > EntityIdentifierToUUIDMap
Definition: objectIdentificationResolver.h:33
bool myResolveUUIDToUUIDMapping
Definition: objectIdentificationResolver.h:185
MarkingTextToUUIDMap myMarkingTextToUUIDMap
Definition: objectIdentificationResolver.h:172
bool myDestructingFlag
Definition: objectIdentificationResolver.h:182
UUIDToEntityIdentifierMap myUUIDToEntityIdentifierMap
Definition: objectIdentificationResolver.h:168
boost::unordered_map< DtUUID, DtUUID > UUIDToUUIDMap
Definition: objectIdentificationResolver.h:36
Contains the DtUUID class declaration.
boost::unordered_map< DtUUID, DtUUIDMarkingTextProvider * > UUIDToMarkingTextMap
Definition: objectIdentificationResolver.h:32
std::vector< MappingContext > MappingContexts
Definition: objectIdentificationResolver.h:180
MarkingTextToMarkingTextMap myMarkingTextToMarkingTextMap
Definition: objectIdentificationResolver.h:170
UUIDToUUIDMap myUUIDToUUIDMap
Definition: objectIdentificationResolver.h:169
UUIDsForUpgrade myUUIDsForMarkingTextUpgrade
Definition: objectIdentificationResolver.h:174
bool myPoppingContext
Definition: objectIdentificationResolver.h:187
UUIDToMarkingTextMap myUUIDToMarkingTextMap
Definition: objectIdentificationResolver.h:166
boost::unordered_set< DtUUID * > UUIDsForUpgrade
Definition: objectIdentificationResolver.h:38
UUIDsForUpgrade myUUIDsForUUIDUpgrade
Definition: objectIdentificationResolver.h:175
bool myPushingContext
Definition: objectIdentificationResolver.h:186
EntityIdentifierToUUIDMap myEntityIdentifierToUUIDMap
Definition: objectIdentificationResolver.h:167
Definition: objectIdentificationResolver.h:29
#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:171
MappingContexts myMappingContexts
Definition: objectIdentificationResolver.h:181
boost::unordered_map< DtUUID, DtString > UUIDToEntityIdentifierMap
Definition: objectIdentificationResolver.h:34
boost::unordered_map< DtString, DtUUID > MarkingTextToUUIDMap
Definition: objectIdentificationResolver.h:35
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:161
tbb::recursive_mutex myMutex
Definition: objectIdentificationResolver.h:178

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)