diff options
Diffstat (limited to 'pkmacros.h')
| -rw-r--r-- | pkmacros.h | 32 |
1 files changed, 32 insertions, 0 deletions
@@ -62,6 +62,8 @@ constexpr TypeName TypeName_MAX = TypeName{TypeName_T_MAX}; \ TypeName operator+(const TypeName& a, const TypeName& b); \ TypeName operator-(const TypeName& a, const TypeName& b); \ + TypeName operator*(const TypeName& a, const TypeName& b); \ + TypeName operator/(const TypeName& a, const TypeName& b); \ TypeName operator&(const TypeName& a, const TypeName& b); \ TypeName operator|(const TypeName& a, const TypeName& b); \ TypeName operator^(const TypeName& a, const TypeName& b); \ @@ -73,6 +75,8 @@ TypeName operator>>(const TypeName& a, const TypeName& b); \ TypeName operator+=(TypeName& a, const TypeName& b); \ TypeName operator-=(TypeName& a, const TypeName& b); \ + TypeName operator*=(TypeName& a, const TypeName& b); \ + TypeName operator/=(TypeName& a, const TypeName& b); \ TypeName operator&=(TypeName& a, const TypeName& b); \ TypeName operator|=(TypeName& a, const TypeName& b); \ TypeName operator^=(TypeName& a, const TypeName& b); \ @@ -84,6 +88,12 @@ inline TypeName operator-(const TypeName& a, const TypeName& b) { \ return TypeName(static_cast<TypeName_T>(a) - static_cast<TypeName_T>(b)); \ } \ + inline TypeName operator*(const TypeName& a, const TypeName& b) { \ + return TypeName(static_cast<TypeName_T>(a) * static_cast<TypeName_T>(b)); \ + } \ + inline TypeName operator/(const TypeName& a, const TypeName& b) { \ + return TypeName(static_cast<TypeName_T>(a) / static_cast<TypeName_T>(b)); \ + } \ inline TypeName operator&(const TypeName& a, const TypeName& b) { \ return TypeName(static_cast<TypeName_T>(a) & static_cast<TypeName_T>(b)); \ } \ @@ -123,6 +133,14 @@ a = TypeName{a - b}; \ return a; \ }; \ + inline TypeName operator*=(TypeName& a, const TypeName& b) { \ + a = TypeName{a * b}; \ + return a; \ + }; \ + inline TypeName operator/=(TypeName& a, const TypeName& b) { \ + a = TypeName{a / b}; \ + return a; \ + }; \ inline TypeName operator&=(TypeName& a, const TypeName& b) { \ a = TypeName{a & b}; \ return a; \ @@ -155,6 +173,12 @@ constexpr TypeName operator-(const TypeName& a, const TypeName& b) { \ return TypeName(static_cast<TypeName_T>(a) - static_cast<TypeName_T>(b)); \ } \ + constexpr TypeName operator*(const TypeName& a, const TypeName& b) { \ + return TypeName(static_cast<TypeName_T>(a) * static_cast<TypeName_T>(b)); \ + } \ + constexpr TypeName operator/(const TypeName& a, const TypeName& b) { \ + return TypeName(static_cast<TypeName_T>(a) / static_cast<TypeName_T>(b)); \ + } \ constexpr TypeName operator&(const TypeName& a, const TypeName& b) { \ return TypeName(static_cast<TypeName_T>(a) & static_cast<TypeName_T>(b)); \ } \ @@ -194,6 +218,14 @@ a = TypeName{a - b}; \ return a; \ }; \ + constexpr TypeName operator*=(TypeName& a, const TypeName& b) { \ + a = TypeName{a * b}; \ + return a; \ + }; \ + constexpr TypeName operator/=(TypeName& a, const TypeName& b) { \ + a = TypeName{a / b}; \ + return a; \ + }; \ constexpr TypeName operator&=(TypeName& a, const TypeName& b) { \ a = TypeName{a & b}; \ return a; \ |
