OpenLexocad  27.1
GlobalId_Policy.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <Base/String.h>
4 
5 namespace Base
6 {
7 class LX_BASE_EXPORT GlobalId_Policy
8 {
9 public:
12  enum Policy
13  {
14  COPY, // A copy of the object is created with a new GlobalId
15  REPLACE, // The object with this GlobalId is replaced
16  REJECT // No replacement and no copying is done. The operation is rejected.
17  };
18 
19  GlobalId_Policy() { on_GUID_conflict = GlobalId_Policy::REJECT; }
20 
21  GlobalId_Policy(GlobalId_Policy::Policy aPolicy) : on_GUID_conflict(aPolicy) {}
22 
23 
24  bool saveSettingsForThisSession = false;
26 };
27 
28 template <typename T>
30 {
31 public:
32  GlobalId_Policy_scoped(T* aDoc, const GlobalId_Policy& aPolicy, const Base::String& aSuffix = L"") : doc(aDoc), scoped_policy(aPolicy), suffix(aSuffix)
33  {
34  if (suffix == L"")
35  {
36  old_policy = doc->getGuidPolicy();
37  doc->setGuidPolicy(scoped_policy);
38  }
39  else
40  {
41  bool ok = doc->getGuidPolicy(suffix, old_policy);
42  if (ok)
43  doc->setGuidPolicy(suffix, scoped_policy);
44  }
45  }
47  {
48  // Setting old policy
49  if (suffix == L"")
50  doc->setGuidPolicy(old_policy);
51  else
52  doc->setGuidPolicy(suffix, old_policy);
53  }
54 
55  T* doc;
59 };
60 } // namespace Base
T * doc
Definition: GlobalId_Policy.h:55
GlobalId_Policy scoped_policy
Definition: GlobalId_Policy.h:56
Definition: GlobalId_Policy.h:15
A Utf-16 (windows) or ucs4 (unix) encoded string class.
Definition: String.h:23
GlobalId_Policy::Policy on_GUID_conflict
Definition: GlobalId_Policy.h:25
Definition: GlobalId_Policy.h:16
GlobalId_Policy(GlobalId_Policy::Policy aPolicy)
Definition: GlobalId_Policy.h:21
Definition: GlobalId_Policy.h:7
GlobalId_Policy()
Definition: GlobalId_Policy.h:19
Definition: GlobalId_Policy.h:14
~GlobalId_Policy_scoped()
Definition: GlobalId_Policy.h:46
GlobalId_Policy_scoped(T *aDoc, const GlobalId_Policy &aPolicy, const Base::String &aSuffix=L"")
Definition: GlobalId_Policy.h:32
Definition: AbstractXMLReader.h:5
Base::String suffix
Definition: GlobalId_Policy.h:58
GlobalId_Policy old_policy
Definition: GlobalId_Policy.h:57
Policy
Definition: GlobalId_Policy.h:12
Definition: GlobalId_Policy.h:29