QtCore/qmetatype.h File Reference

qmetatype.h File Reference
#include <QtCore/qglobal.h>
#include <QtCore/qatomic.h>
#include <QtCore/qdatastream.h>

Classes

class  QMetaType
 
struct  QMetaTypeId< T >
 
struct  QMetaTypeId2< T >
 
struct  QMetaTypeIdHelper< T, Defined >
 
struct  QMetaTypeIdHelper< T, false >
 

Namespaces

 QtPrivate
 

Macros

#define Q_DECLARE_METATYPE(TYPE)
 
#define Q_DECLARE_BUILTIN_METATYPE(TYPE, NAME)
 

Functions

template<typename T >
void qMetaTypeDeleteHelper (T *t)
 
template<typename T >
voidqMetaTypeConstructHelper (const T *t)
 
template<typename T >
void qMetaTypeSaveHelper (QDataStream &stream, const T *t)
 
template<typename T >
void qMetaTypeLoadHelper (QDataStream &stream, T *t)
 
template<typename T >
int qRegisterMetaType (const char *typeName, T *dummy=0)
 
template<typename T >
void qRegisterMetaTypeStreamOperators (const char *typeName, T *=0)
 
template<typename T >
int qMetaTypeId (T *=0)
 
template<typename T >
int qRegisterMetaType (T *dummy=0)
 
template<typename T >
int qRegisterMetaTypeStreamOperators ()
 

Macro Definition Documentation

#define Q_DECLARE_METATYPE (   TYPE)
Value:
QT_BEGIN_NAMESPACE \
template <> \
{ \
enum { Defined = 1 }; \
static int qt_metatype_id() \
{ \
static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); \
if (!metatype_id) \
metatype_id = qRegisterMetaType< TYPE >(#TYPE, \
reinterpret_cast< TYPE *>(quintptr(-1))); \
return metatype_id; \
} \
}; \
QT_END_NAMESPACE
#define Q_BASIC_ATOMIC_INITIALIZER(a)
Definition: qbasicatomic.h:216

Definition at line 265 of file qmetatype.h.

#define Q_DECLARE_BUILTIN_METATYPE (   TYPE,
  NAME 
)
Value:
QT_BEGIN_NAMESPACE \
template<> struct QMetaTypeId2<TYPE> \
{ \
enum { Defined = 1, MetaType = QMetaType::NAME }; \
static inline int qt_metatype_id() { return QMetaType::NAME; } \
}; \
QT_END_NAMESPACE
static int qt_metatype_id()
Definition: qmetatype.h:169

Definition at line 282 of file qmetatype.h.

Function Documentation

void qMetaTypeDeleteHelper ( T *  t)

Definition at line 132 of file qmetatype.h.

133 {
134  delete t;
135 }
GLdouble GLdouble t
Definition: GLee.h:1181
void* qMetaTypeConstructHelper ( const T *  t)

Definition at line 138 of file qmetatype.h.

139 {
140  if (!t)
141  return new T();
142  return new T(*static_cast<const T*>(t));
143 }
GLdouble GLdouble t
Definition: GLee.h:1181
void qMetaTypeSaveHelper ( QDataStream stream,
const T *  t 
)

Definition at line 147 of file qmetatype.h.

148 {
149  stream << *t;
150 }
GLdouble GLdouble t
Definition: GLee.h:1181
void qMetaTypeLoadHelper ( QDataStream stream,
T *  t 
)

Definition at line 153 of file qmetatype.h.

154 {
155  stream >> *t;
156 }
GLdouble GLdouble t
Definition: GLee.h:1181
int qRegisterMetaType ( const char *  typeName,
T *  dummy = 0 
)

Definition at line 185 of file qmetatype.h.

190 {
191  const int typedefOf = dummy ? -1 : QtPrivate::QMetaTypeIdHelper<T>::qt_metatype_id();
192  if (typedefOf != -1)
193  return QMetaType::registerTypedef(typeName, typedefOf);
194 
195  typedef void*(*ConstructPtr)(const T*);
196  ConstructPtr cptr = qMetaTypeConstructHelper<T>;
197  typedef void(*DeletePtr)(T*);
198  DeletePtr dptr = qMetaTypeDeleteHelper<T>;
199 
200  return QMetaType::registerType(typeName, reinterpret_cast<QMetaType::Destructor>(dptr),
201  reinterpret_cast<QMetaType::Constructor>(cptr));
202 }
static int registerTypedef(const char *typeName, int aliasId)
static int registerType(const char *typeName, Destructor destructor, Constructor constructor)
typedef void(APIENTRYP PFNGLBLENDCOLORPROC)(GLclampf red
void qRegisterMetaTypeStreamOperators ( const char *  typeName,
T *  = 0 
)

Definition at line 206 of file qmetatype.h.

211 {
212  typedef void(*SavePtr)(QDataStream &, const T *);
213  typedef void(*LoadPtr)(QDataStream &, T *);
214  SavePtr sptr = qMetaTypeSaveHelper<T>;
215  LoadPtr lptr = qMetaTypeLoadHelper<T>;
216 
217  qRegisterMetaType<T>(typeName);
218  QMetaType::registerStreamOperators(typeName, reinterpret_cast<QMetaType::SaveOperator>(sptr),
219  reinterpret_cast<QMetaType::LoadOperator>(lptr));
220 }
typedef void(APIENTRYP PFNGLBLENDCOLORPROC)(GLclampf red
static void registerStreamOperators(const char *typeName, SaveOperator saveOp, LoadOperator loadOp)
int qMetaTypeId ( T *  = 0)
inline

Definition at line 224 of file qmetatype.h.

229 {
231 }
static int qt_metatype_id()
Definition: qmetatype.h:169
int qRegisterMetaType ( T *  dummy = 0)
inline

Definition at line 234 of file qmetatype.h.

239 {
240 #ifdef Q_CC_SUN
241  return qMetaTypeId(static_cast<T *>(0));
242 #else
243  return qMetaTypeId(dummy);
244 #endif
245 }
int qMetaTypeId(T *=0)
Definition: qmetatype.h:224
int qRegisterMetaTypeStreamOperators ( )
inline

Definition at line 249 of file qmetatype.h.

250 {
251  typedef void(*SavePtr)(QDataStream &, const T *);
252  typedef void(*LoadPtr)(QDataStream &, T *);
253  SavePtr sptr = qMetaTypeSaveHelper<T>;
254  LoadPtr lptr = qMetaTypeLoadHelper<T>;
255 
256  register int id = qMetaTypeId<T>();
258  reinterpret_cast<QMetaType::SaveOperator>(sptr),
259  reinterpret_cast<QMetaType::LoadOperator>(lptr));
260 
261  return id;
262 }
typedef void(APIENTRYP PFNGLBLENDCOLORPROC)(GLclampf red
static void registerStreamOperators(const char *typeName, SaveOperator saveOp, LoadOperator loadOp)
GLuint id
Definition: GLee.h:1552

Go to the source code of this file.