summaryrefslogtreecommitdiffstats
path: root/src/corelib/global/qendian.h
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@qt.io>2018-08-07 12:29:21 +0200
committerErik Verbruggen <erik.verbruggen@qt.io>2018-08-17 11:31:28 +0000
commitd26289ffb43a5fcf34e855db1dfbf42aa03c4f5a (patch)
tree5154f73b033c638e1929829698e9a4395b874417 /src/corelib/global/qendian.h
parentd7fbc9ea883313ad19ff12318e8efb5deab6d439 (diff)
Add ++/--/min/max to QSpecialInteger
Add both prefix and postfix versions of the increment/decrement operators, and a static constexpr min/max which returns the minimum/maximumm values that can be stored in the QSpecialInteger. These latter functions are useful to define constants, e.g.: typedef quint8_be IPv4_TTL; static constexpr TTL_TO_DROP = IPv4_TTL::min(); Change-Id: I825a279feb68b93572765a9fdb5aa7b06d1be35b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/global/qendian.h')
-rw-r--r--src/corelib/global/qendian.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/corelib/global/qendian.h b/src/corelib/global/qendian.h
index 135bc4460b..1cc8a823d9 100644
--- a/src/corelib/global/qendian.h
+++ b/src/corelib/global/qendian.h
@@ -47,6 +47,11 @@
#include <stdlib.h>
#include <string.h>
+#ifdef min // MSVC
+#undef min
+#undef max
+#endif
+
QT_BEGIN_NAMESPACE
/*
@@ -279,6 +284,27 @@ public:
{ return (*this = S::fromSpecial(val) & i); }
QSpecialInteger &operator ^=(T i)
{ return (*this = S::fromSpecial(val) ^ i); }
+ QSpecialInteger &operator ++()
+ { return (*this = S::fromSpecial(val) + 1); }
+ QSpecialInteger &operator --()
+ { return (*this = S::fromSpecial(val) - 1); }
+ QSpecialInteger operator ++(int)
+ {
+ QSpecialInteger<S> pre = *this;
+ *this += 1;
+ return pre;
+ }
+ QSpecialInteger operator --(int)
+ {
+ QSpecialInteger<S> pre = *this;
+ *this -= 1;
+ return pre;
+ }
+
+ static constexpr QSpecialInteger max()
+ { return QSpecialInteger(std::numeric_limits<T>::max()); }
+ static constexpr QSpecialInteger min()
+ { return QSpecialInteger(std::numeric_limits<T>::min()); }
};
template<typename T>
@@ -316,6 +342,13 @@ public:
QLEInteger &operator |=(T i);
QLEInteger &operator &=(T i);
QLEInteger &operator ^=(T i);
+ QLEInteger &operator ++();
+ QLEInteger &operator --();
+ QLEInteger &operator ++(int);
+ QLEInteger &operator --(int);
+
+ static constexpr QLEInteger max();
+ static constexpr QLEInteger min();
};
template<typename T>
@@ -336,6 +369,13 @@ public:
QBEInteger &operator |=(T i);
QBEInteger &operator &=(T i);
QBEInteger &operator ^=(T i);
+ QBEInteger &operator ++();
+ QBEInteger &operator --();
+ QBEInteger &operator ++(int);
+ QBEInteger &operator --(int);
+
+ static constexpr QBEInteger max();
+ static constexpr QBEInteger min();
};
#else