📄 qdbusargument.h
字号:
/******************************************************************************** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.**** This file is part of the tools applications of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file. Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#ifndef QDBUSARGUMENT_H#define QDBUSARGUMENT_H#include <QtCore/qbytearray.h>#include <QtCore/qglobal.h>#include <QtCore/qlist.h>#include <QtCore/qmap.h>#include <QtCore/qstring.h>#include <QtCore/qstringlist.h>#include <QtCore/qvariant.h>#include <QtDBus/qdbusextratypes.h>#include <QtDBus/qdbusmacros.h>QT_BEGIN_HEADERclass QDBusArgumentPrivate;class QDBusDemarshaller;class QDBusMarshaller;class QDBUS_EXPORT QDBusArgument{public: QDBusArgument(); QDBusArgument(const QDBusArgument &other); QDBusArgument &operator=(const QDBusArgument &other); ~QDBusArgument(); // used for marshalling (Qt -> D-BUS) QDBusArgument &operator<<(uchar arg); QDBusArgument &operator<<(bool arg); QDBusArgument &operator<<(short arg); QDBusArgument &operator<<(ushort arg); QDBusArgument &operator<<(int arg); QDBusArgument &operator<<(uint arg); QDBusArgument &operator<<(qlonglong arg); QDBusArgument &operator<<(qulonglong arg); QDBusArgument &operator<<(double arg); QDBusArgument &operator<<(const QString &arg); QDBusArgument &operator<<(const QDBusVariant &arg); QDBusArgument &operator<<(const QDBusObjectPath &arg); QDBusArgument &operator<<(const QDBusSignature &arg); QDBusArgument &operator<<(const QStringList &arg); QDBusArgument &operator<<(const QByteArray &arg); void beginStructure(); void endStructure(); void beginArray(int elementMetaTypeId); void endArray(); void beginMap(int keyMetaTypeId, int valueMetaTypeId); void endMap(); void beginMapEntry(); void endMapEntry(); // used for de-marshalling (D-BUS -> Qt) QString currentSignature() const; const QDBusArgument &operator>>(uchar &arg) const; const QDBusArgument &operator>>(bool &arg) const; const QDBusArgument &operator>>(short &arg) const; const QDBusArgument &operator>>(ushort &arg) const; const QDBusArgument &operator>>(int &arg) const; const QDBusArgument &operator>>(uint &arg) const; const QDBusArgument &operator>>(qlonglong &arg) const; const QDBusArgument &operator>>(qulonglong &arg) const; const QDBusArgument &operator>>(double &arg) const; const QDBusArgument &operator>>(QString &arg) const; const QDBusArgument &operator>>(QDBusVariant &arg) const; const QDBusArgument &operator>>(QDBusObjectPath &arg) const; const QDBusArgument &operator>>(QDBusSignature &arg) const; const QDBusArgument &operator>>(QStringList &arg) const; const QDBusArgument &operator>>(QByteArray &arg) const; void beginStructure() const; void endStructure() const; void beginArray() const; void endArray() const; void beginMap() const; void endMap() const; void beginMapEntry() const; void endMapEntry() const; bool atEnd() const;protected: friend class QDBusArgumentPrivate; mutable QDBusArgumentPrivate *d;};Q_DECLARE_METATYPE(QDBusArgument)template<typename T> inline T qdbus_cast(const QDBusArgument &arg#ifndef Q_QDOC, T * = 0#endif ){ T item; arg >> item; return item;}template<typename T> inline T qdbus_cast(const QVariant &v#ifndef Q_QDOC, T * = 0#endif ){ int id = v.userType(); if (id == qMetaTypeId<QDBusArgument>()) return qdbus_cast<T>(qvariant_cast<QDBusArgument>(v)); else return qvariant_cast<T>(v);}QDBUS_EXPORT const QDBusArgument &operator>>(const QDBusArgument &a, QVariant &v);// QVariant types#ifndef QDBUS_NO_SPECIALTYPESQDBUS_EXPORT const QDBusArgument &operator>>(const QDBusArgument &a, QDate &date);QDBUS_EXPORT QDBusArgument &operator<<(QDBusArgument &a, const QDate &date);QDBUS_EXPORT const QDBusArgument &operator>>(const QDBusArgument &a, QTime &time);QDBUS_EXPORT QDBusArgument &operator<<(QDBusArgument &a, const QTime &time);QDBUS_EXPORT const QDBusArgument &operator>>(const QDBusArgument &a, QDateTime &dt);QDBUS_EXPORT QDBusArgument &operator<<(QDBusArgument &a, const QDateTime &dt);QDBUS_EXPORT const QDBusArgument &operator>>(const QDBusArgument &a, QRect &rect);QDBUS_EXPORT QDBusArgument &operator<<(QDBusArgument &a, const QRect &rect);QDBUS_EXPORT const QDBusArgument &operator>>(const QDBusArgument &a, QRectF &rect);QDBUS_EXPORT QDBusArgument &operator<<(QDBusArgument &a, const QRectF &rect);QDBUS_EXPORT const QDBusArgument &operator>>(const QDBusArgument &a, QSize &size);QDBUS_EXPORT QDBusArgument &operator<<(QDBusArgument &a, const QSize &size);QDBUS_EXPORT const QDBusArgument &operator>>(const QDBusArgument &a, QSizeF &size);QDBUS_EXPORT QDBusArgument &operator<<(QDBusArgument &a, const QSizeF &size);QDBUS_EXPORT const QDBusArgument &operator>>(const QDBusArgument &a, QPoint &pt);QDBUS_EXPORT QDBusArgument &operator<<(QDBusArgument &a, const QPoint &pt);QDBUS_EXPORT const QDBusArgument &operator>>(const QDBusArgument &a, QPointF &pt);QDBUS_EXPORT QDBusArgument &operator<<(QDBusArgument &a, const QPointF &pt);QDBUS_EXPORT const QDBusArgument &operator>>(const QDBusArgument &a, QLine &line);QDBUS_EXPORT QDBusArgument &operator<<(QDBusArgument &a, const QLine &line);QDBUS_EXPORT const QDBusArgument &operator>>(const QDBusArgument &a, QLineF &line);QDBUS_EXPORT QDBusArgument &operator<<(QDBusArgument &a, const QLineF &line);#endiftemplate<template <typename> class Container, typename T>inline QDBusArgument &operator<<(QDBusArgument &arg, const Container<T> &list){ int id = qMetaTypeId<T>(); arg.beginArray(id); typename Container<T>::const_iterator it = list.begin(); typename Container<T>::const_iterator end = list.end(); for ( ; it != end; ++it) arg << *it; arg.endArray(); return arg;}template<template <typename> class Container, typename T>inline const QDBusArgument &operator>>(const QDBusArgument &arg, Container<T> &list){ arg.beginArray(); list.clear(); while (!arg.atEnd()) { T item; arg >> item; list.push_back(item); } arg.endArray(); return arg;}// QList specializationstemplate<typename T>inline QDBusArgument &operator<<(QDBusArgument &arg, const QList<T> &list){ int id = qMetaTypeId<T>(); arg.beginArray(id); typename QList<T>::ConstIterator it = list.constBegin(); typename QList<T>::ConstIterator end = list.constEnd(); for ( ; it != end; ++it) arg << *it; arg.endArray(); return arg;}template<typename T>inline const QDBusArgument &operator>>(const QDBusArgument &arg, QList<T> &list){ arg.beginArray(); list.clear(); while (!arg.atEnd()) { T item; arg >> item; list.push_back(item); } arg.endArray(); return arg;}inline QDBusArgument &operator<<(QDBusArgument &arg, const QVariantList &list){ int id = qMetaTypeId<QDBusVariant>(); arg.beginArray(id); QVariantList::ConstIterator it = list.constBegin(); QVariantList::ConstIterator end = list.constEnd(); for ( ; it != end; ++it) arg << QDBusVariant(*it); arg.endArray(); return arg;}// QMap specializationstemplate<typename Key, typename T>inline QDBusArgument &operator<<(QDBusArgument &arg, const QMap<Key, T> &map){ int kid = qMetaTypeId<Key>(); int vid = qMetaTypeId<T>(); arg.beginMap(kid, vid); typename QMap<Key, T>::ConstIterator it = map.constBegin(); typename QMap<Key, T>::ConstIterator end = map.constEnd(); for ( ; it != end; ++it) { arg.beginMapEntry(); arg << it.key() << it.value(); arg.endMapEntry(); } arg.endMap(); return arg;}template<typename Key, typename T>inline const QDBusArgument &operator>>(const QDBusArgument &arg, QMap<Key, T> &map){ arg.beginMap(); map.clear(); while (!arg.atEnd()) { Key key; T value; arg.beginMapEntry(); arg >> key >> value; map.insertMulti(key, value); arg.endMapEntry(); } arg.endMap(); return arg;}inline QDBusArgument &operator<<(QDBusArgument &arg, const QVariantMap &map){ arg.beginMap(QVariant::String, qMetaTypeId<QDBusVariant>()); QVariantMap::ConstIterator it = map.constBegin(); QVariantMap::ConstIterator end = map.constEnd(); for ( ; it != end; ++it) { arg.beginMapEntry(); arg << it.key() << QDBusVariant(it.value()); arg.endMapEntry(); } arg.endMap(); return arg;}QT_END_HEADER#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -