diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2012-04-16 12:04:34 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@nokia.com> | 2012-04-16 12:04:34 +0200 |
commit | 9bd032355163d92cda5e7e59ecd21214b131f187 (patch) | |
tree | 002fa12558505683143c7eb08949a3d225bf0712 /src/corelib/global/qglobal.h | |
parent | d037d25c3d5236623371cf051aaf6a9e59792ba7 (diff) | |
parent | 41673c45dde2eb95ee21dd918235218399f2be2c (diff) |
Merge remote-tracking branch 'origin/master' into api_changes
Conflicts:
configure
src/corelib/io/qurl.cpp
src/gui/kernel/qwindow.cpp
src/tools/moc/generator.cpp
src/widgets/kernel/qwidget_qpa.cpp
src/widgets/styles/qstyle.h
src/widgets/widgets/qtabbar.cpp
tests/auto/corelib/codecs/utf8/tst_utf8.cpp
Change-Id: Ia457228d6f684ec8184e13e8fcc9d25857b1751e
Diffstat (limited to 'src/corelib/global/qglobal.h')
-rw-r--r-- | src/corelib/global/qglobal.h | 86 |
1 files changed, 1 insertions, 85 deletions
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 0648b08d1f..0828a3dac3 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -1231,90 +1231,6 @@ Q_CORE_EXPORT void qFreeAligned(void *ptr); # 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<typename Enum> -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<Enum> 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<Flags::enum_type> operator|(Flags::enum_type f1, Flags::enum_type f2) \ -{ return QFlags<Flags::enum_type>(f1) | f2; } \ -Q_DECL_CONSTEXPR inline QFlags<Flags::enum_type> operator|(Flags::enum_type f1, QFlags<Flags::enum_type> 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 <typename T> @@ -1495,7 +1411,7 @@ QT_END_HEADER // qDebug and friends #include <QtCore/qlogging.h> - +#include <QtCore/qflags.h> #include <QtCore/qsysinfo.h> #include <QtCore/qtypeinfo.h> |