Using lots of macros to define operators for both int24 and int types

This commit is contained in:
Vladyslav Baranovskyi
2024-11-08 15:40:24 +02:00
parent 84d323dcfa
commit 1464d778e4

View File

@@ -57,94 +57,25 @@ namespace OpenVulkano
return *this; return *this;
} }
int24 operator +(const int24& val) const #define INT24_OPERATORS(op) \
{ int24 operator op(const int24& val) const { return int24( (int)*this op (int)val ); } \
return int24( (int)*this + (int)val ); int24 operator op(const int val) const { return int24( (int)*this op val ); }
}
int24 operator -(const int24& val) const INT24_OPERATORS(+)
{ INT24_OPERATORS(-)
return int24( (int)*this - (int)val ); INT24_OPERATORS(*)
} INT24_OPERATORS(/)
#undef INT24_OPERATORS
int24 operator *(const int24& val) const #define INT24_OPERATORS(op) \
{ int24& operator op##=(const int24& val ) { *this = *this op val; return *this; } \
return int24( (int)*this * (int)val ); int24& operator op##=(const int val ) { *this = *this op val; return *this; }
}
int24 operator /(const int24& val) const INT24_OPERATORS(+)
{ INT24_OPERATORS(-)
return int24( (int)*this / (int)val ); INT24_OPERATORS(*)
} INT24_OPERATORS(/)
#undef INT24_OPERATORS
int24 operator +(const int val) const
{
return int24( (int)*this + val );
}
int24 operator -(const int val) const
{
return int24( (int)*this - val );
}
int24 operator *(const int val) const
{
return int24( (int)*this * val );
}
int24 operator /(const int val) const
{
return int24( (int)*this / val );
}
int24& operator +=(const int24& val )
{
*this = *this + val;
return *this;
}
int24& operator -=(const int24& val )
{
*this = *this - val;
return *this;
}
int24& operator *=(const int24& val )
{
*this = *this * val;
return *this;
}
int24& operator /=(const int24& val )
{
*this = *this / val;
return *this;
}
int24& operator +=(const int val )
{
*this = *this + val;
return *this;
}
int24& operator -=(const int val )
{
*this = *this - val;
return *this;
}
int24& operator *=(const int val )
{
*this = *this * val;
return *this;
}
int24& operator /=(const int val )
{
*this = *this / val;
return *this;
}
int24 operator >>(const int val) const int24 operator >>(const int val) const
{ {
@@ -183,64 +114,16 @@ namespace OpenVulkano
return int24( -(int)*this ); return int24( -(int)*this );
} }
bool operator ==(const int24& val) const #define INT24_OPERATORS(op) \
{ bool operator op(const int24& val) const { return (int)*this op (int)val; } \
return (int)*this == (int)val; bool operator op(const int val) const { return (int)*this op val; }
}
bool operator !=(const int24& val) const INT24_OPERATORS(==)
{ INT24_OPERATORS(!=)
return (int)*this != (int)val; INT24_OPERATORS(>=)
} INT24_OPERATORS(<=)
INT24_OPERATORS(>)
bool operator >=(const int24& val) const INT24_OPERATORS(<)
{ #undef INT24_OPERATORS
return (int)*this >= (int)val;
}
bool operator <=(const int24& val) const
{
return (int)*this <= (int)val;
}
bool operator >(const int24& val) const
{
return (int)*this > (int)val;
}
bool operator <(const int24& val) const
{
return (int)*this < (int)val;
}
bool operator ==(const int val) const
{
return (int)*this == val;
}
bool operator !=(const int val) const
{
return (int)*this != val;
}
bool operator >=(const int val) const
{
return (int)*this >= val;
}
bool operator <=(const int val) const
{
return (int)*this <= val;
}
bool operator >(const int val) const
{
return ((int)*this) > val;
}
bool operator <(const int val) const
{
return (int)*this < val;
}
}; };
} }