From 84e45c646dcf64d3bb692eed1b861d4f8b9ef31f Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 28 Mar 2012 16:54:15 -0300 Subject: Move QFlags to qflags.h This is a verbatim copy of the source code. Change-Id: I1f7efc75cad1ba05dda31d8ccfd091ae9ae40fd5 Reviewed-by: Olivier Goffart --- src/corelib/global/qglobal.h | 86 +------------------------------------------- 1 file changed, 1 insertion(+), 85 deletions(-) (limited to 'src/corelib/global/qglobal.h') diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 0efcdf8c4a..f977c87a05 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -1185,90 +1185,6 @@ Q_CORE_EXPORT void *qMemSet(void *dest, int c, size_t n); # endif #endif -class Q_CORE_EXPORT QFlag -{ - int i; -public: - inline QFlag(int i); - inline operator int() const { return i; } -}; - -inline QFlag::QFlag(int ai) : i(ai) {} - -class Q_CORE_EXPORT QIncompatibleFlag -{ - int i; -public: - inline explicit QIncompatibleFlag(int i); - inline operator int() const { return i; } -}; - -inline QIncompatibleFlag::QIncompatibleFlag(int ai) : i(ai) {} - - -#ifndef Q_NO_TYPESAFE_FLAGS - -template -class QFlags -{ - typedef void **Zero; - int i; -public: - typedef Enum enum_type; - // compiler-generated copy/move ctor/assignment operators are fine! -#ifdef qdoc - inline QFlags(const QFlags &other); - inline QFlags &operator=(const QFlags &other); -#endif - Q_DECL_CONSTEXPR inline QFlags(Enum f) : i(f) {} - Q_DECL_CONSTEXPR inline QFlags(Zero = 0) : i(0) {} - inline QFlags(QFlag f) : i(f) {} - - inline QFlags &operator&=(int mask) { i &= mask; return *this; } - inline QFlags &operator&=(uint mask) { i &= mask; return *this; } - inline QFlags &operator|=(QFlags f) { i |= f.i; return *this; } - inline QFlags &operator|=(Enum f) { i |= f; return *this; } - inline QFlags &operator^=(QFlags f) { i ^= f.i; return *this; } - inline QFlags &operator^=(Enum f) { i ^= f; return *this; } - - Q_DECL_CONSTEXPR inline operator int() const { return i; } - - Q_DECL_CONSTEXPR inline QFlags operator|(QFlags f) const { return QFlags(Enum(i | f.i)); } - Q_DECL_CONSTEXPR inline QFlags operator|(Enum f) const { return QFlags(Enum(i | f)); } - Q_DECL_CONSTEXPR inline QFlags operator^(QFlags f) const { return QFlags(Enum(i ^ f.i)); } - Q_DECL_CONSTEXPR inline QFlags operator^(Enum f) const { return QFlags(Enum(i ^ f)); } - Q_DECL_CONSTEXPR inline QFlags operator&(int mask) const { return QFlags(Enum(i & mask)); } - Q_DECL_CONSTEXPR inline QFlags operator&(uint mask) const { return QFlags(Enum(i & mask)); } - Q_DECL_CONSTEXPR inline QFlags operator&(Enum f) const { return QFlags(Enum(i & f)); } - Q_DECL_CONSTEXPR inline QFlags operator~() const { return QFlags(Enum(~i)); } - - Q_DECL_CONSTEXPR inline bool operator!() const { return !i; } - - inline bool testFlag(Enum f) const { return (i & f) == f && (f != 0 || i == int(f) ); } -}; - -#define Q_DECLARE_FLAGS(Flags, Enum)\ -typedef QFlags Flags; - -#define Q_DECLARE_INCOMPATIBLE_FLAGS(Flags) \ -inline QIncompatibleFlag operator|(Flags::enum_type f1, int f2) \ -{ return QIncompatibleFlag(int(f1) | f2); } - -#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags) \ -Q_DECL_CONSTEXPR inline QFlags operator|(Flags::enum_type f1, Flags::enum_type f2) \ -{ return QFlags(f1) | f2; } \ -Q_DECL_CONSTEXPR inline QFlags operator|(Flags::enum_type f1, QFlags f2) \ -{ return f2 | f1; } Q_DECLARE_INCOMPATIBLE_FLAGS(Flags) - - -#else /* Q_NO_TYPESAFE_FLAGS */ - -#define Q_DECLARE_FLAGS(Flags, Enum)\ -typedef uint Flags; -#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags) - -#endif /* Q_NO_TYPESAFE_FLAGS */ - #if defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && !defined(Q_CC_RVCT) /* make use of typeof-extension */ template @@ -1457,7 +1373,7 @@ QT_END_HEADER // qDebug and friends #include - +#include #include #include -- cgit v1.2.3