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