📄 qdbusargument_p.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_P_H#define QDBUSARGUMENT_P_H//// W A R N I N G// -------------//// This file is not part of the Qt API. It exists for the convenience// of the QLibrary class. This header file may change from// version to version without notice, or even be removed.//// We mean it.//#include <qdbusargument.h>#include <dbus/dbus.h>class QDBusMarshaller;class QDBusDemarshaller;class QDBusArgumentPrivate{public: inline QDBusArgumentPrivate() : ref(1) { } inline virtual ~QDBusArgumentPrivate() { } bool checkRead(); bool checkWrite(); QDBusMarshaller *marshaller(); QDBusDemarshaller *demarshaller(); static QByteArray createSignature(int id); static inline QDBusArgument create(QDBusArgumentPrivate *d) { QDBusArgument q; q.d = d; return q; } static inline QDBusDemarshaller *demarshaller(const QDBusArgument &q) { if (q.d->checkRead()) return q.d->demarshaller(); return 0; }public: QAtomic ref; enum Direction { Marshalling, Demarshalling } direction;};class QDBusMarshaller: public QDBusArgumentPrivate{public: QDBusMarshaller() : parent(0), ba(0), closeCode(0), ok(true) { direction = Marshalling; } ~QDBusMarshaller(); void append(uchar arg); void append(bool arg); void append(short arg); void append(ushort arg); void append(int arg); void append(uint arg); void append(qlonglong arg); void append(qulonglong arg); void append(double arg); void append(const QString &arg); void append(const QDBusObjectPath &arg); void append(const QDBusSignature &arg); void append(const QStringList &arg); void append(const QByteArray &arg); bool append(const QDBusVariant &arg); // this one can fail QDBusMarshaller *beginStructure(); QDBusMarshaller *endStructure(); QDBusMarshaller *beginArray(int id); QDBusMarshaller *endArray(); QDBusMarshaller *beginMap(int kid, int vid); QDBusMarshaller *endMap(); QDBusMarshaller *beginMapEntry(); QDBusMarshaller *endMapEntry(); QDBusMarshaller *beginCommon(int code, const char *signature); QDBusMarshaller *endCommon(); void open(QDBusMarshaller &sub, int code, const char *signature); void close(); void error(); bool appendVariantInternal(const QVariant &arg); bool appendRegisteredType(const QVariant &arg); bool appendCrossMarshalling(QDBusDemarshaller *arg);public: DBusMessageIter iterator; QDBusMarshaller *parent; QByteArray *ba; char closeCode; bool ok;};class QDBusDemarshaller: public QDBusArgumentPrivate{public: inline QDBusDemarshaller() : message(0), parent(0) { direction = Demarshalling; } ~QDBusDemarshaller(); QString currentSignature(); uchar toByte(); bool toBool(); ushort toUShort(); short toShort(); int toInt(); uint toUInt(); qlonglong toLongLong(); qulonglong toULongLong(); double toDouble(); QString toString(); QDBusObjectPath toObjectPath(); QDBusSignature toSignature(); QDBusVariant toVariant(); QStringList toStringList(); QByteArray toByteArray(); QDBusDemarshaller *beginStructure(); QDBusDemarshaller *endStructure(); QDBusDemarshaller *beginArray(); QDBusDemarshaller *endArray(); QDBusDemarshaller *beginMap(); QDBusDemarshaller *endMap(); QDBusDemarshaller *beginMapEntry(); QDBusDemarshaller *endMapEntry(); QDBusDemarshaller *beginCommon(); QDBusDemarshaller *endCommon(); QDBusArgument duplicate(); inline void close() { } bool atEnd(); QVariant toVariantInternal();public: DBusMessageIter iterator; DBusMessage *message; QDBusDemarshaller *parent;};inline QDBusMarshaller *QDBusArgumentPrivate::marshaller(){ return static_cast<QDBusMarshaller *>(this); }inline QDBusDemarshaller *QDBusArgumentPrivate::demarshaller(){ return static_cast<QDBusDemarshaller *>(this); }#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -