X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/9701b7ab4dc4cd709ad4dcaa750fc0021f15e231..04d7ddb9da330539a3026cd26b4ba6d0ee82a395:/include/stg/resetable.h?ds=sidebyside diff --git a/include/stg/resetable.h b/include/stg/resetable.h index d31bffda..f3cecac8 100644 --- a/include/stg/resetable.h +++ b/include/stg/resetable.h @@ -17,82 +17,54 @@ #include -template +template class RESETABLE { - template - friend std::ostream & operator<<(std::ostream & o, RESETABLE v); public: - typedef varT value_type; + typedef T value_type; - //------------------------------------------------------------------------- - RESETABLE() - : value(), - is_set(false) - { - } - //------------------------------------------------------------------------- - RESETABLE(const RESETABLE & rvalue) + RESETABLE() : value(), is_set(false) {} + + RESETABLE(const RESETABLE & rvalue) : value(rvalue.value), is_set(rvalue.is_set) - { - } - //------------------------------------------------------------------------- - RESETABLE(const value_type& val) - : value(val), - is_set(true) - { - } - //------------------------------------------------------------------------- + {} + + RESETABLE(const value_type& val) : value(val), is_set(true) {} + RESETABLE & operator=(const RESETABLE & rvalue) { value = rvalue.value; is_set = rvalue.is_set; return *this; } - //------------------------------------------------------------------------- - RESETABLE & operator= (const value_type& rhs) + + RESETABLE & operator=(const value_type& rhs) { value = rhs; is_set = true; return *this; } - //------------------------------------------------------------------------- - const value_type& const_data() const throw() - { - return value; - } - //------------------------------------------------------------------------- - value_type& data() throw() - { - return value; - } - //------------------------------------------------------------------------- - operator const value_type&() const throw() - { - return value; - } - //------------------------------------------------------------------------- - bool res_empty() const throw() - { - return !is_set; - } - //------------------------------------------------------------------------- - void reset() throw() - { - is_set = false; - } - //------------------------------------------------------------------------- -protected: - value_type value; - bool is_set; + + const value_type & const_data() const throw() { return value; } + value_type & data() throw() { return value; } + operator const value_type&() const throw() { return value; } + bool res_empty() const throw() { return !is_set; } + void reset() throw() { is_set = false; } + +private: + value_type value; + bool is_set; }; -//----------------------------------------------------------------------------- -template -std::ostream & operator<<(std::ostream & o, RESETABLE v) + +template +std::ostream & operator<<(std::ostream & o, const RESETABLE & v); + +template +inline +std::ostream & operator<<(std::ostream & o, const RESETABLE & v) { - return o << v.value; + return o << v.const_data(); } -//------------------------------------------------------------------------- -#endif // RESETABLE_VARIABLE_H +#endif // RESETABLE_VARIABLE_H