X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/ae21e8d6ad32d0bf3517127aef5cd8129b7507aa..f88b8e1e0e34f1e25e86468ca271a89af4872eab:/include/stg/resetable.h diff --git a/include/stg/resetable.h b/include/stg/resetable.h index c78d0247..e7914efd 100644 --- a/include/stg/resetable.h +++ b/include/stg/resetable.h @@ -16,19 +16,7 @@ public: typedef T value_type; RESETABLE() : value(), is_set(false) {} - RESETABLE(const T & v) : value(v), is_set(true) {} - - RESETABLE(const RESETABLE & rvalue) - : value(rvalue.value), - is_set(rvalue.is_set) - {} - - RESETABLE & operator=(const RESETABLE & rhs) - { - value = rhs.value; - is_set = rhs.is_set; - return *this; - } + explicit RESETABLE(const T & v) : value(v), is_set(true) {} RESETABLE & operator=(const T & rhs) { @@ -42,6 +30,19 @@ public: const T & data() const throw() { return value; } bool empty() const throw() { return !is_set; } void reset() throw() { is_set = false; } + void splice(const RESETABLE & rhs) + { + if (rhs.is_set) + { + value = rhs.value; + is_set = true; + } + } + void maybeSet(value_type& dest) const + { + if (is_set) + dest = value; + } private: value_type value;