#ifndef QMETATYPE_H
#define QMETATYPE_H 
#include <QtCore/qglobal.h>
#ifndef QATOMIC_H
#define QATOMIC_H 
#if defined(QT_MOC) || defined(QT_BUILD_QMAKE) || defined(QT_RCC) || defined(QT_UIC)
#else
#include <QtCore/qatomic_arch.h>
#endif
#include <QtCore/qglobal.h>
#ifndef Q_SPECIALIZED_QATOMIC
struct QBasicAtomic{
   public: int volatile atomic;
   public: inline void init(int x = 0);
   public: inline bool ref();
   public: inline bool deref();
   public: inline bool operator ==(int x) const
   public: inline bool operator !=(int x) const
   public: inline bool operator !() const
   public: inline operator int () const
   public: inline struct QBasicAtomic& operator =(int x);
   public: inline bool testAndSet(int expected, int newval);
   public: inline bool testAndSetAcquire(int expected, int newval);
   public: inline bool testAndSetRelease(int expected, int newval);
   public: inline int exchange(int newval);
};
template < typename T > struct QBasicAtomicPointer{
   public: T volatile * pointer;
   public: inline void init(T* t = 0);
   public: inline bool operator ==(T* t) const
   public: inline bool operator !=(T* t) const
   public: inline bool operator !() const
   public: inline operator T* () const
   public: inline T* operator ->() const
   public: inline struct QBasicAtomicPointer& operator =(T* t);
   public: inline bool testAndSet(T* expected, T* newval);
   public: inline T* exchange(T* newval);
};
#define Q_ATOMIC_INIT(a) { (a) }

#endif // Q_SPECIALIZED_QATOMIC
template < typename T > inline T qAtomicSetPtr(T volatile * ptr, T newval);
class QAtomic: public QBasicAtomic{
   public: inline QAtomic(int x = 0);
   public: inline QAtomic(class QAtomic const & copy);
   public: inline class QAtomic& operator =(int x);
   public: inline class QAtomic& operator =(class QAtomic const & copy);
};
template < typename T > class QAtomicPointer: public QBasicAtomicPointer < T >{
   public: inline QAtomicPointer(T* t = 0);
   public: inline QAtomicPointer(class QAtomicPointer const & copy);
   public: inline class QAtomicPointer& operator =(T* t);
   public: inline class QAtomicPointer& operator =(class QAtomicPointer const & copy);
};
template < typename T > inline void qAtomicAssign(T* & d, T* x);
template < typename T > inline void qAtomicAssign(class QBasicAtomicPointer < T >& d, T* x);
template < typename T > inline void qAtomicAssign(class QBasicAtomicPointer < T >& d, class QBasicAtomicPointer < T > const & x);
template < typename T > inline void qAtomicDetach(T* & d);
template < typename T > inline void qAtomicDetach(class QBasicAtomicPointer < T >& d);
#endif // QATOMIC_H
#ifndef QT_NO_DATASTREAM
#include <QtCore/qdatastream.h>
#endif
typedef enum QtValidLicenseForCoreModule QtCoreModule;
class QMetaType{
   public: enum Type{
      Void = 0,
      Bool = 1,
      Int = 2,
      UInt = 3,
      LongLong = 4,
      ULongLong = 5,
      Double = 6,
      QChar = 7,
      QVariantMap = 8,
      QVariantList = 9,
      QString = 10,
      QStringList = 11,
      QByteArray = 12,
      QBitArray = 13,
      QDate = 14,
      QTime = 15,
      QDateTime = 16,
      QUrl = 17,
      QLocale = 18,
      QRect = 19,
      QRectF = 20,
      QSize = 21,
      QSizeF = 22,
      QLine = 23,
      QLineF = 24,
      QPoint = 25,
      QPointF = 26,
      QRegExp = 27,
      LastCoreType = 27,
      FirstGuiType = 63,
      QFont = 64,
      QPixmap = 65,
      QBrush = 66,
      QColor = 67,
      QPalette = 68,
      QIcon = 69,
      QImage = 70,
      QPolygon = 71,
      QRegion = 72,
      QBitmap = 73,
      QCursor = 74,
      QSizePolicy = 75,
      QKeySequence = 76,
      QPen = 77,
      QTextLength = 78,
      QTextFormat = 79,
      QMatrix = 80,
      LastGuiType = 80,
      FirstCoreExtType = 128,
      VoidStar = 128,
      Long = 129,
      Short = 130,
      Char = 131,
      ULong = 132,
      UShort = 133,
      UChar = 134,
      Float = 135,
      QObjectStar = 136,
      QWidgetStar = 137,
      LastCoreExtType = 137,
      User = 256,
   };
   public: typedef void (* Destructor)(void*);
   public: typedef void* (* Constructor)(void const *);
#ifndef QT_NO_DATASTREAM
   public: typedef void (* SaveOperator)(class QDataStream&, void const *);
   public: typedef void (* LoadOperator)(class QDataStream&, void*);
   public: static void registerStreamOperators(char const * typeName, void (* saveOp)(class QDataStream&, void const *), void (* loadOp)(class QDataStream&, void*));
#endif
   public: static int registerType(char const * typeName, void (* destructor)(void*), void* (* constructor)(void const *));
   public: static int type(char const * typeName);
   public: static char const * typeName(int type);
   public: static bool isRegistered(int type);
   public: static void* construct(int type, void const * copy = 0);
   public: static void destroy(int type, void* data);
#ifndef QT_NO_DATASTREAM
   public: static bool save(class QDataStream& stream, int type, void const * data);
   public: static bool load(class QDataStream& stream, int type, void* data);
#endif
};
template < typename T > void qMetaTypeDeleteHelper(T* t);
template < typename T > void* qMetaTypeConstructHelper(T const * t);
#ifndef QT_NO_DATASTREAM
template < typename T > void qMetaTypeSaveHelper(class QDataStream& stream, T const * t);
template < typename T > void qMetaTypeLoadHelper(class QDataStream& stream, T* t);
#endif // QT_NO_DATASTREAM
template < typename T > int qRegisterMetaType(char const * typeName, T* = 0);
#ifndef QT_NO_DATASTREAM
template < typename T > void qRegisterMetaTypeStreamOperators(char const * typeName, T* = 0);
#endif
template < typename T > struct QMetaTypeId{
   public: enum /*anonymous*/{
      Defined = 0,
   };
};
template < typename T > struct QMetaTypeId2{
   public: enum /*anonymous*/{
      Defined = 0,
   };
   public: static inline int qt_metatype_id();
};
template < typename T > inline int qMetaTypeId(T* = 0);
template < typename T > inline int qRegisterMetaType(T* dummy = 0);
#define Q_DECLARE_METATYPE(TYPE) template <> struct QMetaTypeId< TYPE > { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomic id = Q_ATOMIC_INIT(0); if (!id) id = qRegisterMetaType< TYPE >(#TYPE); return id; } };
#define Q_DECLARE_BUILTIN_METATYPE(TYPE,NAME) template<> struct QMetaTypeId2<TYPE> { enum { Defined = 1, MetaType = QMetaType::NAME }; static inline int qt_metatype_id() { return QMetaType::NAME; } };

struct QBitArray;
struct QDate;
struct QTime;
struct QDateTime;
struct QUrl;
struct QLocale;
struct QRect;
struct QRectF;
struct QSize;
struct QSizeF;
struct QLine;
struct QLineF;
struct QPoint;
struct QPointF;
struct QFont;
struct QPixmap;
struct QBrush;
struct QColor;
struct QPalette;
struct QIcon;
struct QImage;
struct QPolygon;
struct QRegion;
struct QBitmap;
struct QCursor;
struct QSizePolicy;
struct QKeySequence;
struct QPen;
struct QTextLength;
struct QTextFormat;
struct QMatrix;
template < > struct QMetaTypeId2 < class QString >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 10,
   };
};
template < > struct QMetaTypeId2 < int >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 2,
   };
};
template < > struct QMetaTypeId2 < unsigned int >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 3,
   };
};
template < > struct QMetaTypeId2 < bool >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 1,
   };
};
template < > struct QMetaTypeId2 < double >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 6,
   };
};
template < > struct QMetaTypeId2 < class QByteArray >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 12,
   };
};
template < > struct QMetaTypeId2 < class QChar >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 7,
   };
};
template < > struct QMetaTypeId2 < long int >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 129,
   };
};
template < > struct QMetaTypeId2 < short int >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 130,
   };
};
template < > struct QMetaTypeId2 < char >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 131,
   };
};
template < > struct QMetaTypeId2 < long unsigned int >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 132,
   };
};
template < > struct QMetaTypeId2 < short unsigned int >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 133,
   };
};
template < > struct QMetaTypeId2 < unsigned char >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 134,
   };
};
template < > struct QMetaTypeId2 < float >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 135,
   };
};
template < > struct QMetaTypeId2 < class QObject* >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 136,
   };
};
template < > struct QMetaTypeId2 < struct QWidget* >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 137,
   };
};
template < > struct QMetaTypeId2 < void* >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 128,
   };
};
template < > struct QMetaTypeId2 < long long int >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 4,
   };
};
template < > struct QMetaTypeId2 < long long unsigned int >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 5,
   };
};
template < > struct QMetaTypeId2 < struct QStringList >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 11,
   };
};
template < > struct QMetaTypeId2 < struct QBitArray >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 13,
   };
};
template < > struct QMetaTypeId2 < struct QDate >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 14,
   };
};
template < > struct QMetaTypeId2 < struct QTime >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 15,
   };
};
template < > struct QMetaTypeId2 < struct QDateTime >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 16,
   };
};
template < > struct QMetaTypeId2 < struct QUrl >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 17,
   };
};
template < > struct QMetaTypeId2 < struct QLocale >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 18,
   };
};
template < > struct QMetaTypeId2 < struct QRect >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 19,
   };
};
template < > struct QMetaTypeId2 < struct QRectF >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 20,
   };
};
template < > struct QMetaTypeId2 < struct QSize >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 21,
   };
};
template < > struct QMetaTypeId2 < struct QSizeF >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 22,
   };
};
template < > struct QMetaTypeId2 < struct QLine >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 23,
   };
};
template < > struct QMetaTypeId2 < struct QLineF >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 24,
   };
};
template < > struct QMetaTypeId2 < struct QPoint >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 25,
   };
};
template < > struct QMetaTypeId2 < struct QPointF >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 26,
   };
};
template < > struct QMetaTypeId2 < struct QRegExp >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 27,
   };
};
template < > struct QMetaTypeId2 < struct QFont >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 64,
   };
};
template < > struct QMetaTypeId2 < struct QPixmap >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 65,
   };
};
template < > struct QMetaTypeId2 < struct QBrush >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 66,
   };
};
template < > struct QMetaTypeId2 < struct QColor >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 67,
   };
};
template < > struct QMetaTypeId2 < struct QPalette >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 68,
   };
};
template < > struct QMetaTypeId2 < struct QIcon >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 69,
   };
};
template < > struct QMetaTypeId2 < struct QImage >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 70,
   };
};
template < > struct QMetaTypeId2 < struct QPolygon >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 71,
   };
};
template < > struct QMetaTypeId2 < struct QRegion >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 72,
   };
};
template < > struct QMetaTypeId2 < struct QBitmap >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 73,
   };
};
template < > struct QMetaTypeId2 < struct QCursor >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 74,
   };
};
template < > struct QMetaTypeId2 < struct QSizePolicy >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 75,
   };
};
template < > struct QMetaTypeId2 < struct QKeySequence >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 76,
   };
};
template < > struct QMetaTypeId2 < struct QPen >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 77,
   };
};
template < > struct QMetaTypeId2 < struct QTextLength >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 78,
   };
};
template < > struct QMetaTypeId2 < struct QTextFormat >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 79,
   };
};
template < > struct QMetaTypeId2 < struct QMatrix >{
   /* This entity specializes QMetaTypeId2 */
   public: static inline int qt_metatype_id();
   public: enum /*anonymous*/{
      Defined = 1,
      MetaType = 80,
   };
};
#endif // QMETATYPE_H