From ad0e3c4f8d9d94c6dc79ff12256854b296c0baab Mon Sep 17 00:00:00 2001 From: jwellbelove Date: Wed, 16 Nov 2016 14:04:19 +0000 Subject: [PATCH] Added +-*/ operators. Added bool conversion operator. Added ! operator. get() returns const reference. --- src/type_def.h | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/src/type_def.h b/src/type_def.h index 66d6156e..707a0732 100644 --- a/src/type_def.h +++ b/src/type_def.h @@ -40,11 +40,11 @@ namespace etl /// Usage: ///\code /// // Short form. - /// ETL_TYPEDEF(int, mytype); + /// ETL_TYPEDEF(int, mytype_t); /// /// // Long form. /// class mytype_t_tag; - /// typedef etl::type_def mytype_t_tag; + /// typedef etl::type_def mytype_t; ///\endcode //************************************************************************* template @@ -79,6 +79,18 @@ namespace etl return value; } + //********************************************************************* + explicit operator bool() const + { + return static_cast(value); + } + + //********************************************************************* + bool operator !() const + { + return !bool(value); + } + //********************************************************************* type_def& operator ++() { @@ -243,11 +255,35 @@ namespace etl } //********************************************************************* - TValue get() const + const TValue& get() const { return value; } + //********************************************************************* + friend type_def operator +(const type_def& lhs, const type_def& rhs) + { + return type_def(lhs.value + rhs.value); + } + + //********************************************************************* + friend type_def operator -(const type_def& lhs, const type_def& rhs) + { + return type_def(lhs.value - rhs.value); + } + + //********************************************************************* + friend type_def operator *(const type_def& lhs, const type_def& rhs) + { + return type_def(lhs.value * rhs.value); + } + + //********************************************************************* + friend type_def operator /(const type_def& lhs, const type_def& rhs) + { + return type_def(lhs.value / rhs.value); + } + //********************************************************************* friend bool operator <(const type_def& lhs, const type_def& rhs) {