⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qvariant.h

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 H
📖 第 1 页 / 共 2 页
字号:
    typedef bool (*f_compare)(const Private *, const Private *);    typedef bool (*f_convert)(const QVariant::Private *d, Type t, void *, bool *);    typedef bool (*f_canConvert)(const QVariant::Private *d, Type t);    typedef void (*f_debugStream)(QDebug, const QVariant &);    struct Handler {        f_construct construct;        f_clear clear;        f_null isNull;#ifndef QT_NO_DATASTREAM        f_load load;        f_save save;#endif        f_compare compare;        f_convert convert;        f_canConvert canConvert;        f_debugStream debugStream;    };#endif    inline bool operator==(const QVariant &v) const    { return cmp(v); }    inline bool operator!=(const QVariant &v) const    { return !cmp(v); }protected:    friend inline bool qvariant_cast_helper(const QVariant &, QVariant::Type, void *);    friend int qRegisterGuiVariant();    friend inline bool operator==(const QVariant &, const QVariantComparisonHelper &);#ifndef QT_NO_DEBUG_STREAM    friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QVariant &);#endif    Private d;#ifndef QT_MOC    static const Handler *handler;#endif    void create(int type, const void *copy);#ifdef QT3_SUPPORT    void *castOrDetach(Type t);#endif    bool cmp(const QVariant &other) const;private:#ifdef QT_NO_CAST_FROM_ASCII    // force compile error when implicit conversion is not wanted    inline QVariant(const char *) { Q_ASSERT(false); }#endif#ifndef QT3_SUPPORT    // force compile error, prevent QVariant(QVariant::Type, int) to be called    inline QVariant(bool, int) { Q_ASSERT(false); }#endif};#ifndef QT_MOCtypedef QList<QVariant> QVariantList;typedef QMap<QString, QVariant> QVariantMap;inline bool qvariant_cast_helper(const QVariant &v, QVariant::Type tp, void *ptr){ return QVariant::handler->convert(&v.d, tp, ptr, 0); }template <typename T>inline int qt_variant_metatype_id(T *){ return QMetaTypeId<T>::qt_metatype_id(); }template<>inline int qt_variant_metatype_id(QVariantMap *) { return QVariant::Map; }template<>inline int qt_variant_metatype_id(QVariantList *) { return QVariant::List; }template<>inline int qt_variant_metatype_id(QStringList *) { return QVariant::StringList; }class QFont;template<>inline int qt_variant_metatype_id(QFont *) { return QVariant::Font; }class QPixmap;template<>inline int qt_variant_metatype_id(QPixmap *) { return QVariant::Pixmap; }class QBrush;template<>inline int qt_variant_metatype_id(QBrush *) { return QVariant::Brush; }template<>inline int qt_variant_metatype_id(QRect *) { return QVariant::Rect; }template<>inline int qt_variant_metatype_id(QSize *) { return QVariant::Size; }template<>inline int qt_variant_metatype_id(QSizeF *) { return QVariant::SizeF; }class QColor;template<>inline int qt_variant_metatype_id(QColor *) { return QVariant::Color; }class QPalette;template<>inline int qt_variant_metatype_id(QPalette *) { return QVariant::Palette; }class QIcon;template<>inline int qt_variant_metatype_id(QIcon *) { return QVariant::Icon; }class QPoint;template<>inline int qt_variant_metatype_id(QPoint *) { return QVariant::Point; }class QPointF;template<>inline int qt_variant_metatype_id(QPointF *) { return QVariant::PointF; }class QImage;template<>inline int qt_variant_metatype_id(QImage*) { return QVariant::Image; }class QPolygon;template<>inline int qt_variant_metatype_id(QPolygon *) { return QVariant::Polygon; }class QRegion;template<>inline int qt_variant_metatype_id(QRegion *) { return QVariant::Region; }class QBitmap;template<>inline int qt_variant_metatype_id(QBitmap *) { return QVariant::Bitmap; }class QCursor;template<>inline int qt_variant_metatype_id(QCursor *) { return QVariant::Cursor; }class QSizePolicy;template<>inline int qt_variant_metatype_id(QSizePolicy *) { return QVariant::SizePolicy; }template<>inline int qt_variant_metatype_id(QDate *) { return QVariant::Date; }template<>inline int qt_variant_metatype_id(QTime *) { return QVariant::Time; }template<>inline int qt_variant_metatype_id(QDateTime *) { return QVariant::DateTime; }template<>inline int qt_variant_metatype_id(QBitArray *) { return QVariant::BitArray; }class QKeySequence;template<>inline int qt_variant_metatype_id(QKeySequence *) { return QVariant::KeySequence; }class QPen;template<>inline int qt_variant_metatype_id(QPen *) { return QVariant::Pen; }template<>inline int qt_variant_metatype_id(qlonglong *) { return QVariant::LongLong; }template<>inline int qt_variant_metatype_id(qulonglong *) { return QVariant::ULongLong; }template<>inline int qt_variant_metatype_id(QUrl *) { return QVariant::Url; }class QTextLength;template<>inline int qt_variant_metatype_id(QTextLength *) { return QVariant::TextLength; }class QTextFormat;template<>inline int qt_variant_metatype_id(QTextFormat *) { return QVariant::TextFormat; }template<>inline int qt_variant_metatype_id(QLocale *) { return QVariant::Locale; }template<>inline int qt_variant_metatype_id(QRegExp *) { return QVariant::RegExp; }template<>inline int qt_variant_metatype_id(QLineF *) { return QVariant::LineF; }template<>inline int qt_variant_metatype_id(QLine *) { return QVariant::Line; }template<>inline int qt_variant_metatype_id(QRectF *) { return QVariant::RectF; }#ifdef QT3_SUPPORTclass QColorGroup;template<>inline int qt_variant_metatype_id(QColorGroup *) { return QVariant::ColorGroup; }#endiftemplate <typename T>inline QVariant qVariantFromValue(const T &t){    return QVariant(qt_variant_metatype_id<T>(reinterpret_cast<T *>(0)), &t);}template <>inline QVariant qVariantFromValue(const QVariant &t) { return t; }template <typename T>inline void qVariantSetValue(QVariant &v, const T &t){    v = QVariant(qt_variant_metatype_id<T>(reinterpret_cast<T *>(0)), &t);}#endifinline QVariant::QVariant() {}inline bool QVariant::isValid() const { return d.type != Invalid; }#ifdef QT3_SUPPORTinline int &QVariant::asInt(){ return *reinterpret_cast<int *>(castOrDetach(Int)); }inline uint &QVariant::asUInt(){ return *reinterpret_cast<uint *>(castOrDetach(UInt)); }inline qlonglong &QVariant::asLongLong(){ return *reinterpret_cast<qlonglong *>(castOrDetach(LongLong)); }inline qulonglong &QVariant::asULongLong(){ return *reinterpret_cast<qulonglong *>(castOrDetach(ULongLong)); }inline bool &QVariant::asBool(){ return *reinterpret_cast<bool *>(castOrDetach(Bool)); }inline double &QVariant::asDouble(){ return *reinterpret_cast<double *>(castOrDetach(Double)); }inline QByteArray& QVariant::asByteArray(){ return *reinterpret_cast<QByteArray *>(castOrDetach(ByteArray)); }inline QBitArray& QVariant::asBitArray(){ return *reinterpret_cast<QBitArray *>(castOrDetach(BitArray)); }inline QString& QVariant::asString(){ return *reinterpret_cast<QString *>(castOrDetach(String)); }inline QStringList& QVariant::asStringList(){ return *reinterpret_cast<QStringList *>(castOrDetach(StringList)); }inline QDate& QVariant::asDate(){ return *reinterpret_cast<QDate *>(castOrDetach(Date)); }inline QTime& QVariant::asTime(){ return *reinterpret_cast<QTime *>(castOrDetach(Time)); }inline QDateTime& QVariant::asDateTime(){ return *reinterpret_cast<QDateTime *>(castOrDetach(DateTime)); }inline QList<QVariant>& QVariant::asList(){ return *reinterpret_cast<QList<QVariant> *>(castOrDetach(List)); }inline QMap<QString, QVariant>& QVariant::asMap(){ return *reinterpret_cast<QMap<QString, QVariant> *>(castOrDetach(Map)); }inline QPoint &QVariant::asPoint(){ return *reinterpret_cast<QPoint *>(castOrDetach(Point)); }inline QRect &QVariant::asRect(){ return *reinterpret_cast<QRect *>(castOrDetach(Rect)); }inline QSize &QVariant::asSize(){ return *reinterpret_cast<QSize *>(castOrDetach(Size)); }#endif //QT3_SUPPORT#ifndef QT_NO_MEMBER_TEMPLATEStemplate<typename T>inline void QVariant::setValue(const T &avalue){ qVariantSetValue(*this, avalue); }#endif#ifndef QT_NO_DATASTREAMQ_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);#endifinline bool QVariant::isDetached() const{ return !d.is_shared || d.data.shared->ref == 1; }#ifdef qdoc    inline bool operator==(const QVariant &v1, const QVariant &v2);    inline bool operator!=(const QVariant &v1, const QVariant &v2);#else/* Helper class to add one more level of indirection to prevent   implicit casts.*/class QVariantComparisonHelper{public:    inline QVariantComparisonHelper(const QVariant &var)        : v(&var) {}private:    friend inline bool operator==(const QVariant &, const QVariantComparisonHelper &);    const QVariant *v;};inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2){    return v1.cmp(*v2.v);}inline bool operator!=(const QVariant &v1, const QVariantComparisonHelper &v2){    return !operator==(v1, v2);}#endif#ifndef QT_MOC#if !defined qdoc && defined Q_CC_MSVC && _MSC_VER < 1300template<typename T> T qvariant_cast(const QVariant &v, T * = 0){    const int vid = qt_variant_metatype_id<T>(static_cast<T *>(0));    if (vid == v.userType())        return *reinterpret_cast<const T *>(v.constData());    if (vid < int(QVariant::UserType)) {        T t;        qvariant_cast_helper(v, QVariant::Type(vid), &t);        return t;    }    return T();}template<typename T>inline T qVariantValue(const QVariant &variant, T *t = 0){ return qvariant_cast<T>(variant, t); }template<typename T>inline bool qVariantCanConvert(const QVariant &variant, T *t = 0){    return variant.canConvert(static_cast<QVariant::Type>(qt_variant_metatype_id<T>(t)));}#elsetemplate<typename T> T qvariant_cast(const QVariant &v){    const int vid = qt_variant_metatype_id<T>(static_cast<T *>(0));    if (vid == v.userType())        return *reinterpret_cast<const T *>(v.constData());    if (vid < int(QVariant::UserType)) {        T t;        qvariant_cast_helper(v, QVariant::Type(vid), &t);        return t;    }    return T();}template<typename T>inline T qVariantValue(const QVariant &variant){ return qvariant_cast<T>(variant); }template<typename T>inline bool qVariantCanConvert(const QVariant &variant){    return variant.canConvert(static_cast<QVariant::Type>(                qt_variant_metatype_id<T>(static_cast<T *>(0))));}#endif#endifQ_DECLARE_SHARED(QVariant)Q_DECLARE_TYPEINFO(QVariant, Q_MOVABLE_TYPE);#ifndef QT_NO_DEBUG_STREAMQ_CORE_EXPORT QDebug operator<<(QDebug, const QVariant &);Q_CORE_EXPORT QDebug operator<<(QDebug, const QVariant::Type);#endifQT_END_HEADER#endif // QVARIANT_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -