#ifndef QATOMIC_H
#define QATOMIC_H 
#if defined(QT_MOC) || defined(QT_BUILD_QMAKE) || defined(QT_RCC) || defined(QT_UIC)
#else
#ifndef QATOMIC_ARCH_H
#define QATOMIC_ARCH_H 
#include "QtCore/qglobal.h"
#if defined(QT_ARCH_ALPHA)
#elif defined(QT_ARCH_ARM)
#elif defined(QT_ARCH_BOUNDSCHECKER)
#elif defined(QT_ARCH_GENERIC)
#elif defined(QT_ARCH_I386)
#elif defined(QT_ARCH_IA64)
#elif defined(QT_ARCH_MACOSX)
#elif defined(QT_ARCH_MIPS)
#elif defined(QT_ARCH_PARISC)
#elif defined(QT_ARCH_POWERPC)
#elif defined(QT_ARCH_S390)
#elif defined(QT_ARCH_SPARC)
#elif defined(QT_ARCH_WINDOWS)
#elif defined(QT_ARCH_X86_64)
#include "QtCore/qatomic_x86_64.h"
#else
#endif
#endif // QATOMIC_ARCH_H
#endif
#include <QtCore/qglobal.h>
typedef enum QtValidLicenseForCoreModule QtCoreModule;
#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