summaryrefslogtreecommitdiffstats
path: root/libraries/logic/DefaultVariable.h
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/logic/DefaultVariable.h')
-rw-r--r--libraries/logic/DefaultVariable.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/libraries/logic/DefaultVariable.h b/libraries/logic/DefaultVariable.h
new file mode 100644
index 00000000..38d7ecc2
--- /dev/null
+++ b/libraries/logic/DefaultVariable.h
@@ -0,0 +1,35 @@
+#pragma once
+
+template <typename T>
+class DefaultVariable
+{
+public:
+ DefaultVariable(const T & value)
+ {
+ defaultValue = value;
+ }
+ DefaultVariable<T> & operator =(const T & value)
+ {
+ currentValue = value;
+ is_default = currentValue == defaultValue;
+ is_explicit = true;
+ return *this;
+ }
+ operator const T &() const
+ {
+ return is_default ? defaultValue : currentValue;
+ }
+ bool isDefault() const
+ {
+ return is_default;
+ }
+ bool isExplicit() const
+ {
+ return is_explicit;
+ }
+private:
+ T currentValue;
+ T defaultValue;
+ bool is_default = true;
+ bool is_explicit = false;
+};