fixed: add logical operators
This commit is contained in:
parent
1a1bb23a8b
commit
e3cba6b473
39
fixed.cpp
39
fixed.cpp
@ -172,7 +172,38 @@ fixed<I,E>::operator /(uint_t val) const
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
template class util::fixed<16,16>;
|
||||
template class util::fixed<32,32>;
|
||||
template class util::fixed<26, 6>;
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// logical operators
|
||||
|
||||
#define LOGIC_OP(OP) \
|
||||
template <unsigned I, unsigned E> \
|
||||
bool \
|
||||
util::operator OP (util::fixed<I,E> a, \
|
||||
util::fixed<I,E> b) \
|
||||
{ \
|
||||
return a.to_native () OP b.to_native (); \
|
||||
}
|
||||
|
||||
LOGIC_OP(==)
|
||||
LOGIC_OP(!=)
|
||||
LOGIC_OP(<)
|
||||
LOGIC_OP(<=)
|
||||
LOGIC_OP(>)
|
||||
LOGIC_OP(>=)
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Instantiations
|
||||
|
||||
#define INSTANTIATE(I,E) \
|
||||
template class util::fixed<(I),(E)>; \
|
||||
template bool util::operator== (util::fixed<(I),(E)>, util::fixed<(I),(E)>); \
|
||||
template bool util::operator!= (util::fixed<(I),(E)>, util::fixed<(I),(E)>); \
|
||||
template bool util::operator< (util::fixed<(I),(E)>, util::fixed<(I),(E)>); \
|
||||
template bool util::operator<= (util::fixed<(I),(E)>, util::fixed<(I),(E)>); \
|
||||
template bool util::operator> (util::fixed<(I),(E)>, util::fixed<(I),(E)>); \
|
||||
template bool util::operator>= (util::fixed<(I),(E)>, util::fixed<(I),(E)>);
|
||||
|
||||
INSTANTIATE(16,16)
|
||||
INSTANTIATE(26, 6)
|
||||
INSTANTIATE(32,32)
|
||||
|
@ -66,6 +66,15 @@ namespace util {
|
||||
private:
|
||||
uint_t m_value;
|
||||
};
|
||||
|
||||
|
||||
template <unsigned I, unsigned E> bool operator== (util::fixed<I,E>, util::fixed<I,E>);
|
||||
template <unsigned I, unsigned E> bool operator!= (util::fixed<I,E>, util::fixed<I,E>);
|
||||
|
||||
template <unsigned I, unsigned E> bool operator< (util::fixed<I,E>, util::fixed<I,E>);
|
||||
template <unsigned I, unsigned E> bool operator<= (util::fixed<I,E>, util::fixed<I,E>);
|
||||
template <unsigned I, unsigned E> bool operator> (util::fixed<I,E>, util::fixed<I,E>);
|
||||
template <unsigned I, unsigned E> bool operator>= (util::fixed<I,E>, util::fixed<I,E>);
|
||||
}
|
||||
|
||||
#endif // __UTIL_FIXED_HPP
|
||||
|
Loading…
Reference in New Issue
Block a user