TTKMusicPlayer  3.7.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
Classes | Macros
ttksuperenum.h File Reference
#include <unordered_map>
#include "ttkmoduleexport.h"

Go to the source code of this file.

Classes

class  TTKSuperEnum
 The class of the super enum. More...
 

Macros

#define TTK_SUPER_ENUM(Type, ...)
 
#define TTK_ENUM_TYPE(Enum)   std::underlying_type<Enum>::type
 
#define TTK_DECLARE_OPERATORS_FOR_ENUM(Enum)
 

Macro Definition Documentation

#define TTK_DECLARE_OPERATORS_FOR_ENUM (   Enum)
Value:
inline constexpr Enum operator~(const Enum lhs) { return TTKStaticCast(Enum, ~TTKStaticCast(TTK_ENUM_TYPE(Enum), lhs)); } \
inline constexpr Enum operator!(const Enum lhs) { return TTKStaticCast(Enum, !TTKStaticCast(TTK_ENUM_TYPE(Enum), lhs)); } \
inline constexpr bool operator>(const Enum lhs, const Enum rhs) { return TTKStaticCast(TTK_ENUM_TYPE(Enum), lhs) > TTKStaticCast(TTK_ENUM_TYPE(Enum), rhs); } \
inline constexpr bool operator<(const Enum lhs, const Enum rhs) { return TTKStaticCast(TTK_ENUM_TYPE(Enum), lhs) < TTKStaticCast(TTK_ENUM_TYPE(Enum), rhs); } \
inline constexpr bool operator>=(const Enum lhs, const Enum rhs) { return TTKStaticCast(TTK_ENUM_TYPE(Enum), lhs) >= TTKStaticCast(TTK_ENUM_TYPE(Enum), rhs); } \
inline constexpr bool operator<=(const Enum lhs, const Enum rhs) { return TTKStaticCast(TTK_ENUM_TYPE(Enum), lhs) <= TTKStaticCast(TTK_ENUM_TYPE(Enum), rhs); } \
inline constexpr bool operator==(const Enum lhs, const Enum rhs) { return TTKStaticCast(TTK_ENUM_TYPE(Enum), lhs) == TTKStaticCast(TTK_ENUM_TYPE(Enum), rhs); } \
inline constexpr bool operator!=(const Enum lhs, const Enum rhs) { return TTKStaticCast(TTK_ENUM_TYPE(Enum), lhs) != TTKStaticCast(TTK_ENUM_TYPE(Enum), rhs); } \
inline constexpr Enum operator&(const Enum lhs, const Enum rhs) { return TTKStaticCast(Enum, TTKStaticCast(TTK_ENUM_TYPE(Enum), lhs) & TTKStaticCast(TTK_ENUM_TYPE(Enum), rhs)); } \
inline constexpr Enum operator|(const Enum lhs, const Enum rhs) { return TTKStaticCast(Enum, TTKStaticCast(TTK_ENUM_TYPE(Enum), lhs) | TTKStaticCast(TTK_ENUM_TYPE(Enum), rhs)); } \
inline constexpr Enum operator^(const Enum lhs, const Enum rhs) { return TTKStaticCast(Enum, TTKStaticCast(TTK_ENUM_TYPE(Enum), lhs) ^ TTKStaticCast(TTK_ENUM_TYPE(Enum), rhs)); } \
inline constexpr bool operator||(const Enum lhs, const Enum rhs) { return TTKStaticCast(TTK_ENUM_TYPE(Enum), lhs) || TTKStaticCast(TTK_ENUM_TYPE(Enum), rhs); } \
inline constexpr bool operator&&(const Enum lhs, const Enum rhs) { return TTKStaticCast(TTK_ENUM_TYPE(Enum), lhs) && TTKStaticCast(TTK_ENUM_TYPE(Enum), rhs); } \
inline const Enum& operator|=(Enum& lhs, const Enum rhs) { return lhs = (lhs | rhs); } \
inline const Enum& operator&=(Enum& lhs, const Enum rhs) { return lhs = (lhs & rhs); } \
inline const Enum& operator^=(Enum& lhs, const Enum rhs) { return lhs = (lhs ^ rhs); }
bool operator==(const VolumeSettings &v1, const VolumeSettings &v2)
Definition: volume.h:38
#define TTKStaticCast(x, y)
Definition: ttkglobal.h:159
bool operator!=(const VolumeSettings &v1, const VolumeSettings &v2)
Definition: volume.h:43
constexpr bool operator<(int128_t, int128_t)
Definition: int128.h:634
#define TTK_ENUM_TYPE(Enum)
Definition: ttksuperenum.h:74

Definition at line 75 of file ttksuperenum.h.

#define TTK_ENUM_TYPE (   Enum)    std::underlying_type<Enum>::type

Definition at line 74 of file ttksuperenum.h.

#define TTK_SUPER_ENUM (   Type,
  ... 
)
Value:
static const TTKSuperEnum Type ## EnumObject(#__VA_ARGS__); \
class TTK_MODULE_EXPORT Type { \
public: \
enum { kNull = TTKSuperEnum::Null, __VA_ARGS__ }; \
public: \
Type() : m_data(Type::kNull) {} \
Type(const Type &v) : m_data(v.m_data) {} \
Type(int v) : m_data(v) {} \
Type(const QString &v) : m_data(Type ## EnumObject.stringToKey(v)) {} \
QString toString() const { return Type ## EnumObject.keyToString(m_data); } \
int toInt() const { return m_data; } \
operator int () const { return m_data; } \
operator QString () const { return toString(); } \
Type& operator =(int v) { m_data = v; return *this; } \
Type& operator =(const Type &v) { data_ = v.data_; return *this; } \
Type& operator =(const QString &v) { m_data = Type ## EnumObject.stringToKey(v); return *this; } \
private: \
int m_data; \
}
#define TTK_MODULE_EXPORT
static constexpr int Null
Definition: ttksuperenum.h:31
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
The class of the super enum.
Definition: ttksuperenum.h:28
TTK_MODULE_EXPORT QString toString(Record type)

Definition at line 53 of file ttksuperenum.h.