QtCore/qvariant.h File Reference

qvariant.h File Reference
#include <QtCore/qatomic.h>
#include <QtCore/qbytearray.h>
#include <QtCore/qlist.h>
#include <QtCore/qmetatype.h>
#include <QtCore/qmap.h>
#include <QtCore/qhash.h>
#include <QtCore/qstring.h>

Classes

class  QVariant
 
struct  QVariant::PrivateShared
 
struct  QVariant::Private
 
union  QVariant::Private::Data
 
struct  QVariant::Handler
 
class  QVariantComparisonHelper
 

Typedefs

typedef QList< QVariantQVariantList
 
typedef QMap< QString, QVariantQVariantMap
 
typedef QHash< QString, QVariantQVariantHash
 

Functions

template<typename T >
QVariant qVariantFromValue (const T &)
 
template<typename T >
qvariant_cast (const QVariant &)
 
bool qvariant_cast_helper (const QVariant &v, QVariant::Type tp, void *ptr)
 
template<>
QVariant qVariantFromValue (const QVariant &t)
 
template<typename T >
void qVariantSetValue (QVariant &v, const T &t)
 
template<>
void qVariantSetValue< QVariant > (QVariant &v, const QVariant &t)
 
Q_CORE_EXPORT QDataStreamoperator>> (QDataStream &s, QVariant &p)
 
Q_CORE_EXPORT QDataStreamoperator<< (QDataStream &s, const QVariant &p)
 
Q_CORE_EXPORT QDataStreamoperator>> (QDataStream &s, QVariant::Type &p)
 
Q_CORE_EXPORT QDataStreamoperator<< (QDataStream &s, const QVariant::Type p)
 
bool operator== (const QVariant &v1, const QVariantComparisonHelper &v2)
 
bool operator!= (const QVariant &v1, const QVariantComparisonHelper &v2)
 
template<>
QVariant qvariant_cast< QVariant > (const QVariant &v)
 
 Q_DECLARE_TYPEINFO (QVariant, Q_MOVABLE_TYPE)
 
Q_CORE_EXPORT QDebug operator<< (QDebug, const QVariant &)
 
Q_CORE_EXPORT QDebug operator<< (QDebug, const QVariant::Type)
 

Typedef Documentation

Definition at line 443 of file qvariant.h.

Definition at line 444 of file qvariant.h.

Definition at line 445 of file qvariant.h.

Function Documentation

QVariant qVariantFromValue ( const T &  t)
inline

Definition at line 451 of file qvariant.h.

452 {
453  return QVariant(qMetaTypeId<T>(reinterpret_cast<T *>(0)), &t, QTypeInfo<T>::isPointer);
454 }
GLdouble GLdouble t
Definition: GLee.h:1181
T qvariant_cast ( const QVariant v)
inline

Definition at line 571 of file qvariant.h.

572 {
573  const int vid = qMetaTypeId<T>(static_cast<T *>(0));
574  if (vid == v.userType())
575  return *reinterpret_cast<const T *>(v.constData());
576  if (vid < int(QMetaType::User)) {
577  T t;
578  if (qvariant_cast_helper(v, QVariant::Type(vid), &t))
579  return t;
580  }
581  return T();
582 }
const void * constData() const
bool qvariant_cast_helper(const QVariant &v, QVariant::Type tp, void *ptr)
Definition: qvariant.h:447
int userType() const
GLdouble GLdouble t
Definition: GLee.h:1181
bool qvariant_cast_helper ( const QVariant v,
QVariant::Type  tp,
void ptr 
)
inline

Definition at line 447 of file qvariant.h.

448 { return QVariant::handler->convert(&v.d, tp, ptr, 0); }
Private d
Definition: qvariant.h:417
f_convert convert
Definition: qvariant.h:398
static const Handler * handler
Definition: qvariant.h:419
QVariant qVariantFromValue ( const QVariant t)
inline

Definition at line 457 of file qvariant.h.

457 { return t; }
GLdouble GLdouble t
Definition: GLee.h:1181
void qVariantSetValue ( QVariant v,
const T &  t 
)
inline

Definition at line 460 of file qvariant.h.

461 {
462  //if possible we reuse the current QVariant private
463  const uint type = qMetaTypeId<T>(reinterpret_cast<T *>(0));
464  QVariant::Private &d = v.data_ptr();
465  if (v.isDetached() && (type == d.type || (type <= uint(QVariant::Char) && d.type <= uint(QVariant::Char)))) {
466  d.type = type;
467  d.is_null = false;
468  T *old = reinterpret_cast<T*>(d.is_shared ? d.data.shared->ptr : &d.data.ptr);
469  if (QTypeInfo<T>::isComplex)
470  old->~T();
471  new (old) T(t); //call the copy constructor
472  } else {
473  v = QVariant(type, &t, QTypeInfo<T>::isPointer);
474  }
475 }
GLuint GLuint GLsizei GLenum type
Definition: GLee.h:872
union QVariant::Private::Data data
DataPtr & data_ptr()
Definition: qvariant.h:440
bool isDetached() const
Definition: qvariant.h:537
PrivateShared * shared
Definition: qvariant.h:371
GLdouble GLdouble t
Definition: GLee.h:1181
void qVariantSetValue< QVariant > ( QVariant v,
const QVariant t 
)
inline

Definition at line 478 of file qvariant.h.

479 {
480  v = t;
481 }
GLdouble GLdouble t
Definition: GLee.h:1181
Q_CORE_EXPORT QDataStream& operator>> ( QDataStream s,
QVariant p 
)
Q_CORE_EXPORT QDataStream& operator<< ( QDataStream s,
const QVariant p 
)
Q_CORE_EXPORT QDataStream& operator>> ( QDataStream s,
QVariant::Type p 
)
Q_CORE_EXPORT QDataStream& operator<< ( QDataStream s,
const QVariant::Type  p 
)
bool operator== ( const QVariant v1,
const QVariantComparisonHelper v2 
)
inline

Definition at line 559 of file qvariant.h.

560 {
561  return v1.cmp(*v2.v);
562 }
bool cmp(const QVariant &other) const
bool operator!= ( const QVariant v1,
const QVariantComparisonHelper v2 
)
inline

Definition at line 564 of file qvariant.h.

565 {
566  return !operator==(v1, v2);
567 }
bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2)
Definition: qvariant.h:559
QVariant qvariant_cast< QVariant > ( const QVariant v)
inline

Definition at line 584 of file qvariant.h.

585 {
586  if (v.userType() == QMetaType::QVariant)
587  return *reinterpret_cast<const QVariant *>(v.constData());
588  return v;
589 }
const void * constData() const
const GLdouble * v
Definition: GLee.h:1174
int userType() const
Q_DECLARE_TYPEINFO ( QVariant  ,
Q_MOVABLE_TYPE   
)
Q_CORE_EXPORT QDebug operator<< ( QDebug  ,
const QVariant  
)
Q_CORE_EXPORT QDebug operator<< ( QDebug  ,
const QVariant::Type   
)

Go to the source code of this file.