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