Functions

tqdbusmarshall.cpp File Reference

#include "tqdbusmarshall.h"
#include "tqdbusdata.h"
#include "tqdbusdatalist.h"
#include "tqdbusdatamap.h"
#include "tqdbusobjectpath.h"
#include "tqdbusunixfd.h"
#include "tqdbusvariant.h"
#include <tqvariant.h>
#include <tqvaluelist.h>
#include <tqmap.h>
#include <tqstringlist.h>
#include <tqvaluevector.h>
#include <dbus/dbus.h>
Include dependency graph for tqdbusmarshall.cpp:

Go to the source code of this file.

Functions

template<typename T >
qIterGet (DBusMessageIter *it)
static TQT_DBusData::Type qSingleTypeForDBusSignature (char signature)
static TQValueList< TQT_DBusDataparseSignature (TQCString &signature)
static TQT_DBusData qFetchParameter (DBusMessageIter *it)
void qFetchByteKeyMapEntry (TQT_DBusDataMap< TQ_UINT8 > &map, DBusMessageIter *it)
void qFetchInt16KeyMapEntry (TQT_DBusDataMap< TQ_INT16 > &map, DBusMessageIter *it)
void qFetchUInt16KeyMapEntry (TQT_DBusDataMap< TQ_UINT16 > &map, DBusMessageIter *it)
void qFetchInt32KeyMapEntry (TQT_DBusDataMap< TQ_INT32 > &map, DBusMessageIter *it)
void qFetchUInt32KeyMapEntry (TQT_DBusDataMap< TQ_UINT32 > &map, DBusMessageIter *it)
void qFetchInt64KeyMapEntry (TQT_DBusDataMap< TQ_INT64 > &map, DBusMessageIter *it)
void qFetchUInt64KeyMapEntry (TQT_DBusDataMap< TQ_UINT64 > &map, DBusMessageIter *it)
void qFetchObjectPathKeyMapEntry (TQT_DBusDataMap< TQT_DBusObjectPath > &map, DBusMessageIter *it)
void qFetchStringKeyMapEntry (TQT_DBusDataMap< TQString > &map, DBusMessageIter *it)
static TQT_DBusData qFetchMap (DBusMessageIter *it, const TQT_DBusData &prototype)
static void tqAppendToMessage (DBusMessageIter *it, const TQString &str)
static void tqAppendToMessage (DBusMessageIter *it, const TQT_DBusObjectPath &path)
static void tqAppendToMessage (DBusMessageIter *it, const TQT_DBusUnixFd &unixFd)
static const char * qDBusTypeForTQT_DBusType (TQT_DBusData::Type type)
static void qDBusDataToIterator (DBusMessageIter *it, const TQT_DBusData &var)
static void qDBusByteKeyMapToIterator (DBusMessageIter *it, const TQT_DBusData &var)
static void qDBusInt16KeyMapToIterator (DBusMessageIter *it, const TQT_DBusData &var)
static void qDBusUInt16KeyMapToIterator (DBusMessageIter *it, const TQT_DBusData &var)
static void qDBusInt32KeyMapToIterator (DBusMessageIter *it, const TQT_DBusData &var)
static void qDBusUInt32KeyMapToIterator (DBusMessageIter *it, const TQT_DBusData &var)
static void qDBusInt64KeyMapToIterator (DBusMessageIter *it, const TQT_DBusData &var)
static void qDBusUInt64KeyMapToIterator (DBusMessageIter *it, const TQT_DBusData &var)
static void qDBusStringKeyMapToIterator (DBusMessageIter *it, const TQT_DBusData &var)
static void qDBusObjectPathKeyMapToIterator (DBusMessageIter *it, const TQT_DBusData &var)
static void qDBusUnixFdKeyMapToIterator (DBusMessageIter *it, const TQT_DBusData &var)
void qListToIterator (DBusMessageIter *it, const TQValueList< TQT_DBusData > &list)

Function Documentation

static TQValueList<TQT_DBusData> parseSignature ( TQCString &  signature  )  [static]

Definition at line 75 of file tqdbusmarshall.cpp.

References TQT_DBusData::Bool, TQT_DBusData::Byte, TQT_DBusData::fromBool(), TQT_DBusData::fromByte(), TQT_DBusData::fromByteKeyMap(), TQT_DBusData::fromInt16(), TQT_DBusData::fromInt16KeyMap(), TQT_DBusData::fromInt32(), TQT_DBusData::fromInt32KeyMap(), TQT_DBusData::fromInt64(), TQT_DBusData::fromInt64KeyMap(), TQT_DBusData::fromList(), TQT_DBusData::fromObjectPath(), TQT_DBusData::fromObjectPathKeyMap(), TQT_DBusData::fromString(), TQT_DBusData::fromStringKeyMap(), TQT_DBusData::fromStruct(), TQT_DBusData::fromUInt16(), TQT_DBusData::fromUInt16KeyMap(), TQT_DBusData::fromUInt32(), TQT_DBusData::fromUInt32KeyMap(), TQT_DBusData::fromUInt64(), TQT_DBusData::fromUInt64KeyMap(), TQT_DBusData::fromUnixFd(), TQT_DBusData::fromUnixFdKeyMap(), TQT_DBusData::Int16, TQT_DBusData::Int32, TQT_DBusData::Int64, TQT_DBusData::Invalid, TQT_DBusData::ObjectPath, qSingleTypeForDBusSignature(), TQT_DBusData::String, TQT_DBusData::typeName(), TQT_DBusData::UInt16, TQT_DBusData::UInt32, TQT_DBusData::UInt64, and TQT_DBusData::UnixFd.

{
//    tqDebug("parseSignature(%s)", signature.data());
    TQValueList<TQT_DBusData> result;

    while (!signature.isEmpty())
    {
        switch (signature[0])
        {
            case '(': {
                signature = signature.mid(1);
                TQValueList<TQT_DBusData> memberList = parseSignature(signature);
                result << TQT_DBusData::fromStruct(memberList);
                Q_ASSERT(!signature.isEmpty() && signature[0] == ')');
                signature = signature.mid(1);
                break;
            }
            case ')': return result;
            case '{': {
                TQT_DBusData::Type keyType =
                    qSingleTypeForDBusSignature(signature[1]);
                TQT_DBusData::Type valueType =
                    qSingleTypeForDBusSignature(signature[2]);
                if (valueType != TQT_DBusData::Invalid)
                {
                    switch (keyType)
                    {
                        case TQT_DBusData::Byte:
                            result << TQT_DBusData::fromByteKeyMap(
                                TQT_DBusDataMap<TQ_UINT8>(valueType));
                            break;
                        case TQT_DBusData::Int16:
                            result << TQT_DBusData::fromInt16KeyMap(
                                TQT_DBusDataMap<TQ_INT16>(valueType));
                            break;
                        case TQT_DBusData::UInt16:
                            result << TQT_DBusData::fromUInt16KeyMap(
                                TQT_DBusDataMap<TQ_UINT16>(valueType));
                            break;
                        case TQT_DBusData::Int32:
                            result << TQT_DBusData::fromInt32KeyMap(
                                TQT_DBusDataMap<TQ_INT32>(valueType));
                            break;
                        case TQT_DBusData::UInt32:
                            result << TQT_DBusData::fromUInt32KeyMap(
                                TQT_DBusDataMap<TQ_UINT32>(valueType));
                            break;
                        case TQT_DBusData::Int64:
                            result << TQT_DBusData::fromInt64KeyMap(
                                TQT_DBusDataMap<TQ_INT64>(valueType));
                            break;
                        case TQT_DBusData::UInt64:
                            result << TQT_DBusData::fromUInt64KeyMap(
                                TQT_DBusDataMap<TQ_UINT64>(valueType));
                            break;
                        case TQT_DBusData::String:
                            result << TQT_DBusData::fromStringKeyMap(
                                TQT_DBusDataMap<TQString>(valueType));
                            break;
                        case TQT_DBusData::ObjectPath:
                            result << TQT_DBusData::fromObjectPathKeyMap(
                                TQT_DBusDataMap<TQT_DBusObjectPath>(valueType));
                            break;
                        case TQT_DBusData::UnixFd:
                            result << TQT_DBusData::fromUnixFdKeyMap(
                                TQT_DBusDataMap<TQT_DBusUnixFd>(valueType));
                            break;
                        default:
                            tqWarning("TQT_DBusMarshall: unsupported map key type %s "
                                     "at de-marshalling",
                                     TQT_DBusData::typeName(keyType));
                            break;
                    }
                    signature = signature.mid(3);
                }
                else
                {
                    signature = signature.mid(2);
                    TQValueList<TQT_DBusData> valueContainer =
                        parseSignature(signature);
                    Q_ASSERT(valueContainer.count() == 1);

                    switch (keyType)
                    {
                        case TQT_DBusData::Byte:
                            result << TQT_DBusData::fromByteKeyMap(
                                TQT_DBusDataMap<TQ_UINT8>(valueContainer[0]));
                            break;
                        case TQT_DBusData::Int16:
                            result << TQT_DBusData::fromInt16KeyMap(
                                TQT_DBusDataMap<TQ_INT16>(valueContainer[0]));
                            break;
                        case TQT_DBusData::UInt16:
                            result << TQT_DBusData::fromUInt16KeyMap(
                                TQT_DBusDataMap<TQ_UINT16>(valueContainer[0]));
                            break;
                        case TQT_DBusData::Int32:
                            result << TQT_DBusData::fromInt32KeyMap(
                                TQT_DBusDataMap<TQ_INT32>(valueContainer[0]));
                            break;
                        case TQT_DBusData::UInt32:
                            result << TQT_DBusData::fromUInt32KeyMap(
                                TQT_DBusDataMap<TQ_UINT32>(valueContainer[0]));
                            break;
                        case TQT_DBusData::Int64:
                            result << TQT_DBusData::fromInt64KeyMap(
                                TQT_DBusDataMap<TQ_INT64>(valueContainer[0]));
                            break;
                        case TQT_DBusData::UInt64:
                            result << TQT_DBusData::fromUInt64KeyMap(
                                TQT_DBusDataMap<TQ_UINT64>(valueContainer[0]));
                            break;
                        case TQT_DBusData::String:
                            result << TQT_DBusData::fromStringKeyMap(
                                TQT_DBusDataMap<TQString>(valueContainer[0]));
                            break;
                        case TQT_DBusData::ObjectPath:
                            result << TQT_DBusData::fromObjectPathKeyMap(
                                TQT_DBusDataMap<TQT_DBusObjectPath>(valueContainer[0]));
                            break;
                        case TQT_DBusData::UnixFd:
                            result << TQT_DBusData::fromUnixFdKeyMap(
                                TQT_DBusDataMap<TQT_DBusUnixFd>(valueContainer[0]));
                            break;
                        default:
                            tqWarning("TQT_DBusMarshall: unsupported map key type %s "
                                     "at de-marshalling",
                                     TQT_DBusData::typeName(keyType));
                            break;
                    }
                }
                Q_ASSERT(!signature.isEmpty() && signature[0] == '}');
                signature = signature.mid(1);
                break;
            }
            case '}': return result;
            case 'a': {
                TQT_DBusData::Type elementType =
                    qSingleTypeForDBusSignature(signature[1]);
                if (elementType != TQT_DBusData::Invalid)
                {
                    TQT_DBusDataList list(elementType);
                    result << TQT_DBusData::fromList(list);
                    signature = signature.mid(2);
                }
                else
                {
                    signature = signature.mid(1);
                    bool array = signature[0] != '{';

                    TQValueList<TQT_DBusData> elementContainer =
                        parseSignature(signature);
                    Q_ASSERT(elementContainer.count() == 1);

                    if (array)
                    {
                        TQT_DBusDataList list(elementContainer[0]);
                        result << TQT_DBusData::fromList(list);
                    }
                    else
                        result << elementContainer[0];
                }
                break;
            }
            default:
                TQT_DBusData::Type elementType =
                    qSingleTypeForDBusSignature(signature[0]);
                if (elementType != TQT_DBusData::Invalid)
                {
                    switch (elementType)
                    {
                        case TQT_DBusData::Bool:
                            result << TQT_DBusData::fromBool(
                                (0));
                            break;
                        case TQT_DBusData::Byte:
                            result << TQT_DBusData::fromByte(
                                (0));
                            break;
                        case TQT_DBusData::Int16:
                            result << TQT_DBusData::fromInt16(
                                (0));
                            break;
                        case TQT_DBusData::UInt16:
                            result << TQT_DBusData::fromUInt16(
                                (0));
                            break;
                        case TQT_DBusData::Int32:
                            result << TQT_DBusData::fromInt32(
                                (0));
                            break;
                        case TQT_DBusData::UInt32:
                            result << TQT_DBusData::fromUInt32(
                                (0));
                            break;
                        case TQT_DBusData::Int64:
                            result << TQT_DBusData::fromInt64(
                                (0));
                            break;
                        case TQT_DBusData::UInt64:
                            result << TQT_DBusData::fromUInt64(
                                (0));
                            break;
                        case TQT_DBusData::String:
                            result << TQT_DBusData::fromString(
                                (TQString()));
                            break;
                        case TQT_DBusData::ObjectPath:
                            result << TQT_DBusData::fromObjectPath(
                                (TQT_DBusObjectPath()));
                            break;
                        case TQT_DBusData::UnixFd:
                            result << TQT_DBusData::fromUnixFd(
                                (TQT_DBusUnixFd()));
                            break;
                        default:
                            result << TQT_DBusData();
                            tqWarning("TQT_DBusMarshall: unsupported element type %s "
                                     "at de-marshalling",
                                     TQT_DBusData::typeName(elementType));
                            break;
                    }
                    signature = signature.mid(1);
                }
                else {
                    result << TQT_DBusData();
                    signature = signature.mid(1);
                }
                break;
        }
    }

    return result;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void qDBusByteKeyMapToIterator ( DBusMessageIter *  it,
const TQT_DBusData var 
) [static]

Definition at line 725 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::begin(), TQT_DBusData::buildDBusSignature(), TQT_DBusDataMap< T >::containerValueType(), TQT_DBusDataMap< T >::end(), TQT_DBusDataMap< T >::hasContainerValueType(), TQT_DBusDataMap< T >::keyType(), qDBusDataToIterator(), qDBusTypeForTQT_DBusType(), TQT_DBusData::toByteKeyMap(), and TQT_DBusDataMap< T >::valueType().

{
    DBusMessageIter sub;
    TQCString sig;

    TQT_DBusDataMap<TQ_UINT8> map = var.toByteKeyMap();

    sig += DBUS_DICT_ENTRY_BEGIN_CHAR;
    sig += qDBusTypeForTQT_DBusType(map.keyType());

    if (map.hasContainerValueType())
        sig += map.containerValueType().buildDBusSignature();
    else
        sig += qDBusTypeForTQT_DBusType(map.valueType());
    sig += DBUS_DICT_ENTRY_END_CHAR;

    dbus_message_iter_open_container(it, DBUS_TYPE_ARRAY, sig.data(), &sub);

    TQT_DBusDataMap<TQ_UINT8>::const_iterator mit = map.begin();
    for (; mit != map.end(); ++mit)
    {
        DBusMessageIter itemIterator;
        dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY,
                                         0, &itemIterator);

        dbus_message_iter_append_basic(it, DBUS_TYPE_BYTE, &(mit.key()));
        qDBusDataToIterator(&itemIterator, mit.data());

        dbus_message_iter_close_container(&sub, &itemIterator);
    }

    dbus_message_iter_close_container(it, &sub);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void qDBusDataToIterator ( DBusMessageIter *  it,
const TQT_DBusData var 
) [static]

Definition at line 1066 of file tqdbusmarshall.cpp.

References TQT_DBusData::Bool, TQT_DBusData::buildDBusSignature(), TQT_DBusData::Byte, TQT_DBusDataList::containerItemType(), TQT_DBusData::Double, TQT_DBusDataList::hasContainerItemType(), TQT_DBusData::Int16, TQT_DBusData::Int32, TQT_DBusData::Int64, TQT_DBusData::isValid(), TQT_DBusData::keyType(), TQT_DBusData::List, TQT_DBusData::Map, TQT_DBusData::ObjectPath, qDBusByteKeyMapToIterator(), qDBusInt16KeyMapToIterator(), qDBusInt32KeyMapToIterator(), qDBusInt64KeyMapToIterator(), qDBusObjectPathKeyMapToIterator(), qDBusStringKeyMapToIterator(), qDBusTypeForTQT_DBusType(), qDBusUInt16KeyMapToIterator(), qDBusUInt32KeyMapToIterator(), qDBusUInt64KeyMapToIterator(), qDBusUnixFdKeyMapToIterator(), TQT_DBusVariant::signature, TQT_DBusData::String, TQT_DBusData::Struct, TQT_DBusData::toBool(), TQT_DBusData::toByte(), TQT_DBusData::toDouble(), TQT_DBusData::toInt16(), TQT_DBusData::toInt32(), TQT_DBusData::toInt64(), TQT_DBusData::toList(), TQT_DBusData::toObjectPath(), TQT_DBusData::toString(), TQT_DBusData::toStruct(), TQT_DBusData::toTQValueList(), TQT_DBusData::toUInt16(), TQT_DBusData::toUInt32(), TQT_DBusData::toUInt64(), TQT_DBusData::toUnixFd(), TQT_DBusData::toVariant(), tqAppendToMessage(), TQT_DBusDataList::type(), TQT_DBusData::type(), TQT_DBusData::typeName(), TQT_DBusData::UInt16, TQT_DBusData::UInt32, TQT_DBusData::UInt64, TQT_DBusData::UnixFd, TQT_DBusVariant::value, and TQT_DBusData::Variant.

{
    switch (var.type())
    {
        case TQT_DBusData::Bool:
        {
            dbus_bool_t value = var.toBool();
            dbus_message_iter_append_basic(it, DBUS_TYPE_BOOLEAN, &value);
            break;
        }
        case TQT_DBusData::Byte:
        {
            TQ_UINT8 value = var.toByte();
            dbus_message_iter_append_basic(it, DBUS_TYPE_BYTE, &value);
            break;
        }
        case TQT_DBusData::Int16: {
            TQ_INT16 value = var.toInt16();
            dbus_message_iter_append_basic(it, DBUS_TYPE_INT16, &value);
            break;
        }
        case TQT_DBusData::UInt16: {
            TQ_UINT16 value = var.toUInt16();
            dbus_message_iter_append_basic(it, DBUS_TYPE_UINT16, &value);
            break;
        }
        case TQT_DBusData::Int32: {
            TQ_INT32 value = var.toInt32();
            dbus_message_iter_append_basic(it, DBUS_TYPE_INT32, &value);
            break;
        }
        case TQT_DBusData::UInt32: {
            TQ_UINT32 value = var.toUInt32();
            dbus_message_iter_append_basic(it, DBUS_TYPE_UINT32, &value);
            break;
        }
        case TQT_DBusData::Int64: {
            TQ_INT64 value = var.toInt64();
            dbus_message_iter_append_basic(it, DBUS_TYPE_INT64, &value);
            break;
        }
        case TQT_DBusData::UInt64: {
            TQ_UINT64 value = var.toUInt64();
            dbus_message_iter_append_basic(it, DBUS_TYPE_UINT64, &value);
            break;
        }
        case TQT_DBusData::Double: {
            double value = var.toDouble();
            dbus_message_iter_append_basic(it, DBUS_TYPE_DOUBLE, &value);
            break;
        }
        case TQT_DBusData::String:
            tqAppendToMessage(it, var.toString());
            break;
        case TQT_DBusData::ObjectPath:
            tqAppendToMessage(it, var.toObjectPath());
            break;
        case TQT_DBusData::UnixFd: {
            tqAppendToMessage(it, var.toUnixFd());
            break;
        }
        case TQT_DBusData::List: {
            TQT_DBusDataList list = var.toList();

            TQCString signature = 0;
            if (list.hasContainerItemType())
                signature = list.containerItemType().buildDBusSignature();
            else
                signature = qDBusTypeForTQT_DBusType(list.type());

            DBusMessageIter sub;
            dbus_message_iter_open_container(it, DBUS_TYPE_ARRAY,
                                             signature.data(), &sub);

            const TQValueList<TQT_DBusData> valueList = var.toTQValueList();
            TQValueList<TQT_DBusData>::const_iterator listIt    = valueList.begin();
            TQValueList<TQT_DBusData>::const_iterator listEndIt = valueList.end();
            for (; listIt != listEndIt; ++listIt)
            {
                qDBusDataToIterator(&sub, *listIt);
            }
            dbus_message_iter_close_container(it, &sub);
            break;
        }
        case TQT_DBusData::Map: {
            switch (var.keyType()) {
                case TQT_DBusData::Byte:
                    qDBusByteKeyMapToIterator(it, var);
                    break;
                case TQT_DBusData::Int16:
                    qDBusInt16KeyMapToIterator(it, var);
                    break;
                case TQT_DBusData::UInt16:
                    qDBusUInt16KeyMapToIterator(it, var);
                    break;
                case TQT_DBusData::Int32:
                    qDBusInt32KeyMapToIterator(it, var);
                    break;
                case TQT_DBusData::UInt32:
                    qDBusUInt32KeyMapToIterator(it, var);
                    break;
                case TQT_DBusData::Int64:
                    qDBusInt64KeyMapToIterator(it, var);
                    break;
                case TQT_DBusData::UInt64:
                    qDBusUInt64KeyMapToIterator(it, var);
                    break;
                case TQT_DBusData::String:
                    qDBusStringKeyMapToIterator(it, var);
                    break;
                case TQT_DBusData::ObjectPath:
                    qDBusObjectPathKeyMapToIterator(it, var);
                    break;
                case TQT_DBusData::UnixFd:
                    qDBusUnixFdKeyMapToIterator(it, var);
                    break;
                default:
                    tqWarning("TQT_DBusMarshall: unhandled map key type %s "
                             "at marshalling",
                             TQT_DBusData::typeName(var.keyType()));
                    break;
            }
            break;
        }
        case TQT_DBusData::Variant: {
            TQT_DBusVariant variant = var.toVariant();
            if (variant.signature.isEmpty() || !variant.value.isValid()) break;

            DBusMessageIter sub;
            dbus_message_iter_open_container(it, DBUS_TYPE_VARIANT,
                                             variant.signature.utf8(), &sub);

            qDBusDataToIterator(&sub, variant.value);

            dbus_message_iter_close_container(it, &sub);
            break;
        }
        case TQT_DBusData::Struct: {
            TQValueList<TQT_DBusData> memberList = var.toStruct();
            if (memberList.isEmpty()) break;

            DBusMessageIter sub;
            dbus_message_iter_open_container(it, DBUS_TYPE_STRUCT, NULL, &sub);

            TQValueList<TQT_DBusData>::const_iterator memberIt    = memberList.begin();
            TQValueList<TQT_DBusData>::const_iterator memberEndIt = memberList.end();
            for (; memberIt != memberEndIt; ++memberIt)
            {
                qDBusDataToIterator(&sub, *memberIt);
            }

            dbus_message_iter_close_container(it, &sub);
        }
#if 0
        case TQVariant::ByteArray: {
            const TQByteArray array = var.toByteArray();
            const char* cdata = array.data();
                DBusMessageIter sub;
                dbus_message_iter_open_container(it, DBUS_TYPE_ARRAY, DBUS_TYPE_BYTE_AS_STRING, &sub);
            dbus_message_iter_append_fixed_array(&sub, DBUS_TYPE_BYTE, &cdata, array.size());
                dbus_message_iter_close_container(it, &sub);
        break;
        }
#endif
        default:
            //tqWarning("Don't know how to handle type %s", var.typeName());
            break;
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void qDBusInt16KeyMapToIterator ( DBusMessageIter *  it,
const TQT_DBusData var 
) [static]

Definition at line 759 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::begin(), TQT_DBusData::buildDBusSignature(), TQT_DBusDataMap< T >::containerValueType(), TQT_DBusDataMap< T >::end(), TQT_DBusDataMap< T >::hasContainerValueType(), TQT_DBusDataMap< T >::keyType(), qDBusDataToIterator(), qDBusTypeForTQT_DBusType(), TQT_DBusData::toInt16KeyMap(), and TQT_DBusDataMap< T >::valueType().

{
    DBusMessageIter sub;
    TQCString sig;

    TQT_DBusDataMap<TQ_INT16> map = var.toInt16KeyMap();

    sig += DBUS_DICT_ENTRY_BEGIN_CHAR;
    sig += qDBusTypeForTQT_DBusType(map.keyType());

    if (map.hasContainerValueType())
        sig += map.containerValueType().buildDBusSignature();
    else
        sig += qDBusTypeForTQT_DBusType(map.valueType());
    sig += DBUS_DICT_ENTRY_END_CHAR;

    dbus_message_iter_open_container(it, DBUS_TYPE_ARRAY, sig.data(), &sub);

    TQT_DBusDataMap<TQ_INT16>::const_iterator mit = map.begin();
    for (; mit != map.end(); ++mit)
    {
        DBusMessageIter itemIterator;
        dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY,
                                         0, &itemIterator);

        dbus_message_iter_append_basic(it, DBUS_TYPE_INT16, &(mit.key()));
        qDBusDataToIterator(&itemIterator, mit.data());

        dbus_message_iter_close_container(&sub, &itemIterator);
    }

    dbus_message_iter_close_container(it, &sub);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void qDBusInt32KeyMapToIterator ( DBusMessageIter *  it,
const TQT_DBusData var 
) [static]

Definition at line 827 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::begin(), TQT_DBusData::buildDBusSignature(), TQT_DBusDataMap< T >::containerValueType(), TQT_DBusDataMap< T >::end(), TQT_DBusDataMap< T >::hasContainerValueType(), TQT_DBusDataMap< T >::keyType(), qDBusDataToIterator(), qDBusTypeForTQT_DBusType(), TQT_DBusData::toInt32KeyMap(), and TQT_DBusDataMap< T >::valueType().

{
    DBusMessageIter sub;
    TQCString sig;

    TQT_DBusDataMap<TQ_INT32> map = var.toInt32KeyMap();

    sig += DBUS_DICT_ENTRY_BEGIN_CHAR;
    sig += qDBusTypeForTQT_DBusType(map.keyType());

    if (map.hasContainerValueType())
        sig += map.containerValueType().buildDBusSignature();
    else
        sig += qDBusTypeForTQT_DBusType(map.valueType());
    sig += DBUS_DICT_ENTRY_END_CHAR;

    dbus_message_iter_open_container(it, DBUS_TYPE_ARRAY, sig.data(), &sub);

    TQT_DBusDataMap<TQ_INT32>::const_iterator mit = map.begin();
    for (; mit != map.end(); ++mit)
    {
        DBusMessageIter itemIterator;
        dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY,
                                         0, &itemIterator);

        dbus_message_iter_append_basic(it, DBUS_TYPE_INT32, &(mit.key()));
        qDBusDataToIterator(&itemIterator, mit.data());

        dbus_message_iter_close_container(&sub, &itemIterator);
    }

    dbus_message_iter_close_container(it, &sub);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void qDBusInt64KeyMapToIterator ( DBusMessageIter *  it,
const TQT_DBusData var 
) [static]

Definition at line 895 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::begin(), TQT_DBusData::buildDBusSignature(), TQT_DBusDataMap< T >::containerValueType(), TQT_DBusDataMap< T >::end(), TQT_DBusDataMap< T >::hasContainerValueType(), TQT_DBusDataMap< T >::keyType(), qDBusDataToIterator(), qDBusTypeForTQT_DBusType(), TQT_DBusData::toInt64KeyMap(), and TQT_DBusDataMap< T >::valueType().

{
    DBusMessageIter sub;
    TQCString sig;

    TQT_DBusDataMap<TQ_INT64> map = var.toInt64KeyMap();

    sig += DBUS_DICT_ENTRY_BEGIN_CHAR;
    sig += qDBusTypeForTQT_DBusType(map.keyType());

    if (map.hasContainerValueType())
        sig += map.containerValueType().buildDBusSignature();
    else
        sig += qDBusTypeForTQT_DBusType(map.valueType());
    sig += DBUS_DICT_ENTRY_END_CHAR;

    dbus_message_iter_open_container(it, DBUS_TYPE_ARRAY, sig.data(), &sub);

    TQT_DBusDataMap<TQ_INT64>::const_iterator mit = map.begin();
    for (; mit != map.end(); ++mit)
    {
        DBusMessageIter itemIterator;
        dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY,
                                         0, &itemIterator);

        dbus_message_iter_append_basic(it, DBUS_TYPE_INT64, &(mit.key()));
        qDBusDataToIterator(&itemIterator, mit.data());

        dbus_message_iter_close_container(&sub, &itemIterator);
    }

    dbus_message_iter_close_container(it, &sub);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void qDBusObjectPathKeyMapToIterator ( DBusMessageIter *  it,
const TQT_DBusData var 
) [static]

Definition at line 997 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::begin(), TQT_DBusData::buildDBusSignature(), TQT_DBusDataMap< T >::containerValueType(), TQT_DBusDataMap< T >::end(), TQT_DBusDataMap< T >::hasContainerValueType(), TQT_DBusDataMap< T >::keyType(), qDBusDataToIterator(), qDBusTypeForTQT_DBusType(), TQT_DBusData::toObjectPathKeyMap(), tqAppendToMessage(), and TQT_DBusDataMap< T >::valueType().

{
    DBusMessageIter sub;
    TQCString sig;

    TQT_DBusDataMap<TQT_DBusObjectPath> map = var.toObjectPathKeyMap();

    sig += DBUS_DICT_ENTRY_BEGIN_CHAR;
    sig += qDBusTypeForTQT_DBusType(map.keyType());

    if (map.hasContainerValueType())
        sig += map.containerValueType().buildDBusSignature();
    else
        sig += qDBusTypeForTQT_DBusType(map.valueType());
    sig += DBUS_DICT_ENTRY_END_CHAR;

    dbus_message_iter_open_container(it, DBUS_TYPE_ARRAY, sig.data(), &sub);

    TQT_DBusDataMap<TQT_DBusObjectPath>::const_iterator mit = map.begin();
    for (; mit != map.end(); ++mit)
    {
        DBusMessageIter itemIterator;
        dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY,
                                         0, &itemIterator);

        tqAppendToMessage(&itemIterator, mit.key());
        qDBusDataToIterator(&itemIterator, mit.data());

        dbus_message_iter_close_container(&sub, &itemIterator);
    }

    dbus_message_iter_close_container(it, &sub);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void qDBusStringKeyMapToIterator ( DBusMessageIter *  it,
const TQT_DBusData var 
) [static]

Definition at line 963 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::begin(), TQT_DBusData::buildDBusSignature(), TQT_DBusDataMap< T >::containerValueType(), TQT_DBusDataMap< T >::end(), TQT_DBusDataMap< T >::hasContainerValueType(), TQT_DBusDataMap< T >::keyType(), qDBusDataToIterator(), qDBusTypeForTQT_DBusType(), TQT_DBusData::toStringKeyMap(), tqAppendToMessage(), and TQT_DBusDataMap< T >::valueType().

{
    DBusMessageIter sub;
    TQCString sig;

    TQT_DBusDataMap<TQString> map = var.toStringKeyMap();

    sig += DBUS_DICT_ENTRY_BEGIN_CHAR;
    sig += qDBusTypeForTQT_DBusType(map.keyType());

    if (map.hasContainerValueType())
        sig += map.containerValueType().buildDBusSignature();
    else
        sig += qDBusTypeForTQT_DBusType(map.valueType());
    sig += DBUS_DICT_ENTRY_END_CHAR;

    dbus_message_iter_open_container(it, DBUS_TYPE_ARRAY, sig.data(), &sub);

    TQT_DBusDataMap<TQString>::const_iterator mit = map.begin();
    for (; mit != map.end(); ++mit)
    {
        DBusMessageIter itemIterator;
        dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY,
                                         0, &itemIterator);

        tqAppendToMessage(&itemIterator, mit.key());
        qDBusDataToIterator(&itemIterator, mit.data());

        dbus_message_iter_close_container(&sub, &itemIterator);
    }

    dbus_message_iter_close_container(it, &sub);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static const char* qDBusTypeForTQT_DBusType ( TQT_DBusData::Type  type  )  [static]

Definition at line 665 of file tqdbusmarshall.cpp.

References TQT_DBusData::Bool, TQT_DBusData::Byte, TQT_DBusData::Double, TQT_DBusData::Int16, TQT_DBusData::Int32, TQT_DBusData::Int64, TQT_DBusData::Invalid, TQT_DBusData::List, TQT_DBusData::Map, TQT_DBusData::ObjectPath, TQT_DBusData::String, TQT_DBusData::Struct, TQT_DBusData::UInt16, TQT_DBusData::UInt32, TQT_DBusData::UInt64, TQT_DBusData::UnixFd, and TQT_DBusData::Variant.

{
    switch (type)
    {
        case TQT_DBusData::Invalid:
            return 0;

        case TQT_DBusData::Bool:
            return DBUS_TYPE_BOOLEAN_AS_STRING;

        case TQT_DBusData::Byte:
            return DBUS_TYPE_BYTE_AS_STRING;

        case TQT_DBusData::Int16:
            return DBUS_TYPE_INT16_AS_STRING;

        case TQT_DBusData::UInt16:
            return DBUS_TYPE_UINT16_AS_STRING;

        case TQT_DBusData::Int32:
            return DBUS_TYPE_INT32_AS_STRING;

        case TQT_DBusData::UInt32:
            return DBUS_TYPE_UINT32_AS_STRING;

        case TQT_DBusData::Int64:
            return DBUS_TYPE_INT64_AS_STRING;

        case TQT_DBusData::UInt64:
            return DBUS_TYPE_UINT64_AS_STRING;

        case TQT_DBusData::Double:
            return DBUS_TYPE_DOUBLE_AS_STRING;

        case TQT_DBusData::String:
            return DBUS_TYPE_STRING_AS_STRING;

        case TQT_DBusData::ObjectPath:
            return DBUS_TYPE_OBJECT_PATH_AS_STRING;

        case TQT_DBusData::List:
            return DBUS_TYPE_ARRAY_AS_STRING;

        case TQT_DBusData::Struct:
            return DBUS_TYPE_STRUCT_AS_STRING;

        case TQT_DBusData::Variant:
            return DBUS_TYPE_VARIANT_AS_STRING;

        case TQT_DBusData::Map:
            return DBUS_TYPE_DICT_ENTRY_AS_STRING;

        case TQT_DBusData::UnixFd:
            return DBUS_TYPE_UNIX_FD_AS_STRING;
    }
    return 0;
}

Here is the caller graph for this function:

static void qDBusUInt16KeyMapToIterator ( DBusMessageIter *  it,
const TQT_DBusData var 
) [static]

Definition at line 793 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::begin(), TQT_DBusData::buildDBusSignature(), TQT_DBusDataMap< T >::containerValueType(), TQT_DBusDataMap< T >::end(), TQT_DBusDataMap< T >::hasContainerValueType(), TQT_DBusDataMap< T >::keyType(), qDBusDataToIterator(), qDBusTypeForTQT_DBusType(), TQT_DBusData::toUInt16KeyMap(), and TQT_DBusDataMap< T >::valueType().

{
    DBusMessageIter sub;
    TQCString sig;

    TQT_DBusDataMap<TQ_UINT16> map = var.toUInt16KeyMap();

    sig += DBUS_DICT_ENTRY_BEGIN_CHAR;
    sig += qDBusTypeForTQT_DBusType(map.keyType());

    if (map.hasContainerValueType())
        sig += map.containerValueType().buildDBusSignature();
    else
        sig += qDBusTypeForTQT_DBusType(map.valueType());
    sig += DBUS_DICT_ENTRY_END_CHAR;

    dbus_message_iter_open_container(it, DBUS_TYPE_ARRAY, sig.data(), &sub);

    TQT_DBusDataMap<TQ_UINT16>::const_iterator mit = map.begin();
    for (; mit != map.end(); ++mit)
    {
        DBusMessageIter itemIterator;
        dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY,
                                         0, &itemIterator);

        dbus_message_iter_append_basic(it, DBUS_TYPE_UINT16, &(mit.key()));
        qDBusDataToIterator(&itemIterator, mit.data());

        dbus_message_iter_close_container(&sub, &itemIterator);
    }

    dbus_message_iter_close_container(it, &sub);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void qDBusUInt32KeyMapToIterator ( DBusMessageIter *  it,
const TQT_DBusData var 
) [static]

Definition at line 861 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::begin(), TQT_DBusData::buildDBusSignature(), TQT_DBusDataMap< T >::containerValueType(), TQT_DBusDataMap< T >::end(), TQT_DBusDataMap< T >::hasContainerValueType(), TQT_DBusDataMap< T >::keyType(), qDBusDataToIterator(), qDBusTypeForTQT_DBusType(), TQT_DBusData::toUInt32KeyMap(), and TQT_DBusDataMap< T >::valueType().

{
    DBusMessageIter sub;
    TQCString sig;

    TQT_DBusDataMap<TQ_UINT32> map = var.toUInt32KeyMap();

    sig += DBUS_DICT_ENTRY_BEGIN_CHAR;
    sig += qDBusTypeForTQT_DBusType(map.keyType());

    if (map.hasContainerValueType())
        sig += map.containerValueType().buildDBusSignature();
    else
        sig += qDBusTypeForTQT_DBusType(map.valueType());
    sig += DBUS_DICT_ENTRY_END_CHAR;

    dbus_message_iter_open_container(it, DBUS_TYPE_ARRAY, sig.data(), &sub);

    TQT_DBusDataMap<TQ_UINT32>::const_iterator mit = map.begin();
    for (; mit != map.end(); ++mit)
    {
        DBusMessageIter itemIterator;
        dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY,
                                         0, &itemIterator);

        dbus_message_iter_append_basic(it, DBUS_TYPE_UINT32, &(mit.key()));
        qDBusDataToIterator(&itemIterator, mit.data());

        dbus_message_iter_close_container(&sub, &itemIterator);
    }

    dbus_message_iter_close_container(it, &sub);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void qDBusUInt64KeyMapToIterator ( DBusMessageIter *  it,
const TQT_DBusData var 
) [static]

Definition at line 929 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::begin(), TQT_DBusData::buildDBusSignature(), TQT_DBusDataMap< T >::containerValueType(), TQT_DBusDataMap< T >::end(), TQT_DBusDataMap< T >::hasContainerValueType(), TQT_DBusDataMap< T >::keyType(), qDBusDataToIterator(), qDBusTypeForTQT_DBusType(), TQT_DBusData::toUInt64KeyMap(), and TQT_DBusDataMap< T >::valueType().

{
    DBusMessageIter sub;
    TQCString sig;

    TQT_DBusDataMap<TQ_UINT64> map = var.toUInt64KeyMap();

    sig += DBUS_DICT_ENTRY_BEGIN_CHAR;
    sig += qDBusTypeForTQT_DBusType(map.keyType());

    if (map.hasContainerValueType())
        sig += map.containerValueType().buildDBusSignature();
    else
        sig += qDBusTypeForTQT_DBusType(map.valueType());
    sig += DBUS_DICT_ENTRY_END_CHAR;

    dbus_message_iter_open_container(it, DBUS_TYPE_ARRAY, sig.data(), &sub);

    TQT_DBusDataMap<TQ_UINT64>::const_iterator mit = map.begin();
    for (; mit != map.end(); ++mit)
    {
        DBusMessageIter itemIterator;
        dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY,
                                         0, &itemIterator);

        dbus_message_iter_append_basic(it, DBUS_TYPE_UINT64, &(mit.key()));
        qDBusDataToIterator(&itemIterator, mit.data());

        dbus_message_iter_close_container(&sub, &itemIterator);
    }

    dbus_message_iter_close_container(it, &sub);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void qDBusUnixFdKeyMapToIterator ( DBusMessageIter *  it,
const TQT_DBusData var 
) [static]

Definition at line 1032 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::begin(), TQT_DBusData::buildDBusSignature(), TQT_DBusDataMap< T >::containerValueType(), DBUS_TYPE_UNIX_FD, TQT_DBusDataMap< T >::end(), TQT_DBusDataMap< T >::hasContainerValueType(), TQT_DBusDataMap< T >::keyType(), qDBusDataToIterator(), qDBusTypeForTQT_DBusType(), TQT_DBusData::toUnixFdKeyMap(), and TQT_DBusDataMap< T >::valueType().

{
    DBusMessageIter sub;
    TQCString sig;

    TQT_DBusDataMap<TQT_DBusUnixFd> map = var.toUnixFdKeyMap();

    sig += DBUS_DICT_ENTRY_BEGIN_CHAR;
    sig += qDBusTypeForTQT_DBusType(map.keyType());

    if (map.hasContainerValueType())
        sig += map.containerValueType().buildDBusSignature();
    else
        sig += qDBusTypeForTQT_DBusType(map.valueType());
    sig += DBUS_DICT_ENTRY_END_CHAR;

    dbus_message_iter_open_container(it, DBUS_TYPE_ARRAY, sig.data(), &sub);

    TQT_DBusDataMap<TQT_DBusUnixFd>::const_iterator mit = map.begin();
    for (; mit != map.end(); ++mit)
    {
        DBusMessageIter itemIterator;
        dbus_message_iter_open_container(&sub, DBUS_TYPE_DICT_ENTRY,
                                         0, &itemIterator);

        dbus_message_iter_append_basic(it, DBUS_TYPE_UNIX_FD, &(mit.key()));
        qDBusDataToIterator(&itemIterator, mit.data());

        dbus_message_iter_close_container(&sub, &itemIterator);
    }

    dbus_message_iter_close_container(it, &sub);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void qFetchByteKeyMapEntry ( TQT_DBusDataMap< TQ_UINT8 > &  map,
DBusMessageIter *  it 
)

Definition at line 312 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::insert(), qFetchParameter(), and TQT_DBusData::toByte().

{
    DBusMessageIter itemIter;
    dbus_message_iter_recurse(it, &itemIter);
    Q_ASSERT(dbus_message_iter_has_next(&itemIter));

    TQ_UINT8 key = qFetchParameter(&itemIter).toByte();

    dbus_message_iter_next(&itemIter);

    map.insert(key, qFetchParameter(&itemIter));
}

Here is the call graph for this function:

Here is the caller graph for this function:

void qFetchInt16KeyMapEntry ( TQT_DBusDataMap< TQ_INT16 > &  map,
DBusMessageIter *  it 
)

Definition at line 325 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::insert(), qFetchParameter(), and TQT_DBusData::toInt16().

{
    DBusMessageIter itemIter;
    dbus_message_iter_recurse(it, &itemIter);
    Q_ASSERT(dbus_message_iter_has_next(&itemIter));

    TQ_INT16 key = qFetchParameter(&itemIter).toInt16();

    dbus_message_iter_next(&itemIter);

    map.insert(key, qFetchParameter(&itemIter));
}

Here is the call graph for this function:

Here is the caller graph for this function:

void qFetchInt32KeyMapEntry ( TQT_DBusDataMap< TQ_INT32 > &  map,
DBusMessageIter *  it 
)

Definition at line 351 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::insert(), qFetchParameter(), and TQT_DBusData::toInt32().

{
    DBusMessageIter itemIter;
    dbus_message_iter_recurse(it, &itemIter);
    Q_ASSERT(dbus_message_iter_has_next(&itemIter));

    TQ_INT32 key = qFetchParameter(&itemIter).toInt32();

    dbus_message_iter_next(&itemIter);

    map.insert(key, qFetchParameter(&itemIter));
}

Here is the call graph for this function:

Here is the caller graph for this function:

void qFetchInt64KeyMapEntry ( TQT_DBusDataMap< TQ_INT64 > &  map,
DBusMessageIter *  it 
)

Definition at line 377 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::insert(), qFetchParameter(), and TQT_DBusData::toInt64().

{
    DBusMessageIter itemIter;
    dbus_message_iter_recurse(it, &itemIter);
    Q_ASSERT(dbus_message_iter_has_next(&itemIter));

    TQ_INT64 key = qFetchParameter(&itemIter).toInt64();

    dbus_message_iter_next(&itemIter);

    map.insert(key, qFetchParameter(&itemIter));
}

Here is the call graph for this function:

Here is the caller graph for this function:

static TQT_DBusData qFetchMap ( DBusMessageIter *  it,
const TQT_DBusData prototype 
) [static]

Definition at line 429 of file tqdbusmarshall.cpp.

References TQT_DBusData::fromByteKeyMap(), TQT_DBusData::fromInt16KeyMap(), TQT_DBusData::fromInt32KeyMap(), TQT_DBusData::fromInt64KeyMap(), TQT_DBusData::fromObjectPathKeyMap(), TQT_DBusData::fromStringKeyMap(), TQT_DBusData::fromUInt16KeyMap(), TQT_DBusData::fromUInt32KeyMap(), TQT_DBusData::fromUInt64KeyMap(), qFetchByteKeyMapEntry(), qFetchInt16KeyMapEntry(), qFetchInt32KeyMapEntry(), qFetchInt64KeyMapEntry(), qFetchObjectPathKeyMapEntry(), qFetchStringKeyMapEntry(), qFetchUInt16KeyMapEntry(), qFetchUInt32KeyMapEntry(), qFetchUInt64KeyMapEntry(), TQT_DBusData::toByteKeyMap(), TQT_DBusData::toInt16KeyMap(), TQT_DBusData::toInt32KeyMap(), TQT_DBusData::toInt64KeyMap(), TQT_DBusData::toObjectPathKeyMap(), TQT_DBusData::toStringKeyMap(), TQT_DBusData::toUInt16KeyMap(), TQT_DBusData::toUInt32KeyMap(), and TQT_DBusData::toUInt64KeyMap().

{
    if (dbus_message_iter_get_arg_type(it) == DBUS_TYPE_INVALID)
        return prototype;

    DBusMessageIter itemIter;
    dbus_message_iter_recurse(it, &itemIter);
    if (dbus_message_iter_get_arg_type(&itemIter) == DBUS_TYPE_INVALID)
        return prototype;

    switch (dbus_message_iter_get_arg_type(&itemIter)) {
        case DBUS_TYPE_BYTE: {
            TQT_DBusDataMap<TQ_UINT8> map = prototype.toByteKeyMap();
            do {
                qFetchByteKeyMapEntry(map, it);
            } while (dbus_message_iter_next(it));

            return TQT_DBusData::fromByteKeyMap(map);
        }

        case DBUS_TYPE_INT16: {
            TQT_DBusDataMap<TQ_INT16> map = prototype.toInt16KeyMap();
            do {
                qFetchInt16KeyMapEntry(map, it);
            } while (dbus_message_iter_next(it));

            return TQT_DBusData::fromInt16KeyMap(map);
        }

        case DBUS_TYPE_UINT16: {
            TQT_DBusDataMap<TQ_UINT16> map = prototype.toUInt16KeyMap();
            do {
                qFetchUInt16KeyMapEntry(map, it);
            } while (dbus_message_iter_next(it));

            return TQT_DBusData::fromUInt16KeyMap(map);
        }

        case DBUS_TYPE_INT32: {
            TQT_DBusDataMap<TQ_INT32> map = prototype.toInt32KeyMap();
            do {
                qFetchInt32KeyMapEntry(map, it);
            } while (dbus_message_iter_next(it));

            return TQT_DBusData::fromInt32KeyMap(map);
        }

        case DBUS_TYPE_UINT32: {
            TQT_DBusDataMap<TQ_UINT32> map = prototype.toUInt32KeyMap();
            do {
                qFetchUInt32KeyMapEntry(map, it);
            } while (dbus_message_iter_next(it));

            return TQT_DBusData::fromUInt32KeyMap(map);
        }

        case DBUS_TYPE_INT64: {
            TQT_DBusDataMap<TQ_INT64> map = prototype.toInt64KeyMap();
            do {
                qFetchInt64KeyMapEntry(map, it);
            } while (dbus_message_iter_next(it));

            return TQT_DBusData::fromInt64KeyMap(map);
        }

        case DBUS_TYPE_UINT64: {
            TQT_DBusDataMap<TQ_UINT64> map = prototype.toUInt64KeyMap();
            do {
                qFetchUInt64KeyMapEntry(map, it);
            } while (dbus_message_iter_next(it));

            return TQT_DBusData::fromUInt64KeyMap(map);
        }

        case DBUS_TYPE_OBJECT_PATH:  {
            TQT_DBusDataMap<TQT_DBusObjectPath> map = prototype.toObjectPathKeyMap();
            do {
              qFetchObjectPathKeyMapEntry(map, it);
            } while (dbus_message_iter_next(it));

            return TQT_DBusData::fromObjectPathKeyMap(map);
        }
        case DBUS_TYPE_STRING:      // fall through
        case DBUS_TYPE_SIGNATURE: {
            TQT_DBusDataMap<TQString> map = prototype.toStringKeyMap();
            do {
                qFetchStringKeyMapEntry(map, it);
            } while (dbus_message_iter_next(it));

            return TQT_DBusData::fromStringKeyMap(map);
        }

        default:
            break;
    }

    return prototype;
}

Here is the call graph for this function:

Here is the caller graph for this function:

void qFetchObjectPathKeyMapEntry ( TQT_DBusDataMap< TQT_DBusObjectPath > &  map,
DBusMessageIter *  it 
)

Definition at line 403 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::insert(), qFetchParameter(), and TQT_DBusData::toObjectPath().

{
    DBusMessageIter itemIter;
    dbus_message_iter_recurse(it, &itemIter);
    Q_ASSERT(dbus_message_iter_has_next(&itemIter));

    TQT_DBusObjectPath key = qFetchParameter(&itemIter).toObjectPath();

    dbus_message_iter_next(&itemIter);

    map.insert(key, qFetchParameter(&itemIter));
}

Here is the call graph for this function:

Here is the caller graph for this function:

static TQT_DBusData qFetchParameter ( DBusMessageIter *  it  )  [static]

Definition at line 528 of file tqdbusmarshall.cpp.

References DBUS_TYPE_UNIX_FD, TQT_DBusData::fromBool(), TQT_DBusData::fromByte(), TQT_DBusData::fromDouble(), TQT_DBusData::fromInt16(), TQT_DBusData::fromInt32(), TQT_DBusData::fromInt64(), TQT_DBusData::fromList(), TQT_DBusData::fromObjectPath(), TQT_DBusData::fromString(), TQT_DBusData::fromStruct(), TQT_DBusData::fromUInt16(), TQT_DBusData::fromUInt32(), TQT_DBusData::fromUInt64(), TQT_DBusData::fromUnixFd(), TQT_DBusData::fromVariant(), TQT_DBusUnixFd::giveFileDescriptor(), parseSignature(), qFetchMap(), TQT_DBusVariant::signature, and TQT_DBusVariant::value.

{
    switch (dbus_message_iter_get_arg_type(it)) {
    case DBUS_TYPE_BOOLEAN:
        return TQT_DBusData::fromBool(qIterGet<dbus_bool_t>(it));
    case DBUS_TYPE_BYTE:
        return TQT_DBusData::fromByte(qIterGet<unsigned char>(it));
    case DBUS_TYPE_INT16:
       return TQT_DBusData::fromInt16(qIterGet<dbus_int16_t>(it));
    case DBUS_TYPE_UINT16:
        return TQT_DBusData::fromUInt16(qIterGet<dbus_uint16_t>(it));
    case DBUS_TYPE_INT32:
        return TQT_DBusData::fromInt32(qIterGet<dbus_int32_t>(it));
    case DBUS_TYPE_UINT32:
        return TQT_DBusData::fromUInt32(qIterGet<dbus_uint32_t>(it));
    case DBUS_TYPE_INT64:
        return TQT_DBusData::fromInt64(qIterGet<dbus_int64_t>(it));
    case DBUS_TYPE_UINT64:
        return TQT_DBusData::fromUInt64(qIterGet<dbus_uint64_t>(it));
    case DBUS_TYPE_DOUBLE:
        return TQT_DBusData::fromDouble(qIterGet<double>(it));
    case DBUS_TYPE_STRING:
    case DBUS_TYPE_SIGNATURE:
        return TQT_DBusData::fromString(TQString::fromUtf8(qIterGet<char *>(it)));
    case DBUS_TYPE_OBJECT_PATH:
        return TQT_DBusData::fromObjectPath(TQT_DBusObjectPath(qIterGet<char *>(it)));
    case DBUS_TYPE_ARRAY: {
        int arrayType = dbus_message_iter_get_element_type(it);

        char* sig = dbus_message_iter_get_signature(it);
        TQCString signature = sig;
        dbus_free(sig);

        TQValueList<TQT_DBusData> prototypeList = parseSignature(signature);

        if (arrayType == DBUS_TYPE_DICT_ENTRY) {
            DBusMessageIter sub;
            dbus_message_iter_recurse(it, &sub);

            return qFetchMap(&sub, prototypeList[0]);
        } else {
            TQT_DBusDataList list = prototypeList[0].toList();

            DBusMessageIter arrayIt;
            dbus_message_iter_recurse(it, &arrayIt);

            while (dbus_message_iter_get_arg_type(&arrayIt) != DBUS_TYPE_INVALID) {
                list << qFetchParameter(&arrayIt);

                dbus_message_iter_next(&arrayIt);
            }

            return TQT_DBusData::fromList(list);
        }
    }
    case DBUS_TYPE_VARIANT: {
        TQT_DBusVariant dvariant;
        DBusMessageIter sub;
        dbus_message_iter_recurse(it, &sub);

        char* signature = dbus_message_iter_get_signature(&sub);
        dvariant.signature = TQString::fromUtf8(signature);
        dbus_free(signature);

        dvariant.value = qFetchParameter(&sub);

        return TQT_DBusData::fromVariant(dvariant);
    }
    case DBUS_TYPE_STRUCT: {
        TQValueList<TQT_DBusData> memberList;

        DBusMessageIter subIt;
        dbus_message_iter_recurse(it, &subIt);

        uint index = 0;
        while (dbus_message_iter_get_arg_type(&subIt) != DBUS_TYPE_INVALID) {
            memberList << qFetchParameter(&subIt);

            dbus_message_iter_next(&subIt);
            ++index;
        }

        return TQT_DBusData::fromStruct(memberList);
    }
    case DBUS_TYPE_UNIX_FD: {
        TQT_DBusUnixFd unixFd;
        unixFd.giveFileDescriptor(qIterGet<dbus_uint32_t>(it));
        return TQT_DBusData::fromUnixFd(unixFd);
    }
#if 0
    case DBUS_TYPE_INVALID:
        // TODO: check if there is better way to detect empty arrays
        return TQT_DBusData();
        break;
#endif
    default:
        tqWarning("TQT_DBusMarshall: Don't know how to de-marshall type %d '%c'",
                 dbus_message_iter_get_arg_type(it),
                 dbus_message_iter_get_arg_type(it));
        return TQT_DBusData();
        break;
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void qFetchStringKeyMapEntry ( TQT_DBusDataMap< TQString > &  map,
DBusMessageIter *  it 
)

Definition at line 416 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::insert(), qFetchParameter(), and TQT_DBusData::toString().

{
    DBusMessageIter itemIter;
    dbus_message_iter_recurse(it, &itemIter);
    Q_ASSERT(dbus_message_iter_has_next(&itemIter));

    TQString key = qFetchParameter(&itemIter).toString();

    dbus_message_iter_next(&itemIter);

    map.insert(key, qFetchParameter(&itemIter));
}

Here is the call graph for this function:

Here is the caller graph for this function:

void qFetchUInt16KeyMapEntry ( TQT_DBusDataMap< TQ_UINT16 > &  map,
DBusMessageIter *  it 
)

Definition at line 338 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::insert(), qFetchParameter(), and TQT_DBusData::toUInt16().

{
    DBusMessageIter itemIter;
    dbus_message_iter_recurse(it, &itemIter);
    Q_ASSERT(dbus_message_iter_has_next(&itemIter));

    TQ_UINT16 key = qFetchParameter(&itemIter).toUInt16();

    dbus_message_iter_next(&itemIter);

    map.insert(key, qFetchParameter(&itemIter));
}

Here is the call graph for this function:

Here is the caller graph for this function:

void qFetchUInt32KeyMapEntry ( TQT_DBusDataMap< TQ_UINT32 > &  map,
DBusMessageIter *  it 
)

Definition at line 364 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::insert(), qFetchParameter(), and TQT_DBusData::toUInt32().

{
    DBusMessageIter itemIter;
    dbus_message_iter_recurse(it, &itemIter);
    Q_ASSERT(dbus_message_iter_has_next(&itemIter));

    TQ_UINT32 key = qFetchParameter(&itemIter).toUInt32();

    dbus_message_iter_next(&itemIter);

    map.insert(key, qFetchParameter(&itemIter));
}

Here is the call graph for this function:

Here is the caller graph for this function:

void qFetchUInt64KeyMapEntry ( TQT_DBusDataMap< TQ_UINT64 > &  map,
DBusMessageIter *  it 
)

Definition at line 390 of file tqdbusmarshall.cpp.

References TQT_DBusDataMap< T >::insert(), qFetchParameter(), and TQT_DBusData::toUInt64().

{
    DBusMessageIter itemIter;
    dbus_message_iter_recurse(it, &itemIter);
    Q_ASSERT(dbus_message_iter_has_next(&itemIter));

    TQ_UINT64 key = qFetchParameter(&itemIter).toUInt64();

    dbus_message_iter_next(&itemIter);

    map.insert(key, qFetchParameter(&itemIter));
}

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename T >
T qIterGet ( DBusMessageIter *  it  )  [inline]

Definition at line 42 of file tqdbusmarshall.cpp.

{
    T t;
    dbus_message_iter_get_basic(it, &t);
    return t;
}

void qListToIterator ( DBusMessageIter *  it,
const TQValueList< TQT_DBusData > &  list 
)

Definition at line 1236 of file tqdbusmarshall.cpp.

References qDBusDataToIterator().

{
    if (list.isEmpty()) return;

    TQValueList<TQT_DBusData>::const_iterator listIt    = list.begin();
    TQValueList<TQT_DBusData>::const_iterator listEndIt = list.end();
    for (; listIt != listEndIt; ++listIt)
    {
        qDBusDataToIterator(it, *listIt);
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

static TQT_DBusData::Type qSingleTypeForDBusSignature ( char  signature  )  [static]

Definition at line 49 of file tqdbusmarshall.cpp.

{
    switch (signature)
    {
        case 'b': return TQT_DBusData::Bool;
        case 'y': return TQT_DBusData::Byte;
        case 'n': return TQT_DBusData::Int16;
        case 'q': return TQT_DBusData::UInt16;
        case 'i': return TQT_DBusData::Int32;
        case 'u': return TQT_DBusData::UInt32;
        case 'x': return TQT_DBusData::Int64;
        case 't': return TQT_DBusData::UInt64;
        case 'd': return TQT_DBusData::Double;
        case 's': return TQT_DBusData::String;
        case 'o': return TQT_DBusData::ObjectPath;
        case 'g': return TQT_DBusData::String;
        case 'v': return TQT_DBusData::Variant;
        case 'h': return TQT_DBusData::UnixFd;

        default:
            break;
    }

    return TQT_DBusData::Invalid;
}

Here is the caller graph for this function:

static void tqAppendToMessage ( DBusMessageIter *  it,
const TQT_DBusObjectPath path 
) [static]

Definition at line 653 of file tqdbusmarshall.cpp.

{
    const char *cdata = path.data();
    dbus_message_iter_append_basic(it, DBUS_TYPE_OBJECT_PATH, &cdata);
}

static void tqAppendToMessage ( DBusMessageIter *  it,
const TQString &  str 
) [static]

Definition at line 646 of file tqdbusmarshall.cpp.

{
    TQByteArray ba = str.utf8();
    const char *cdata = ba.data();
    dbus_message_iter_append_basic(it, DBUS_TYPE_STRING, &cdata);
}

Here is the caller graph for this function:

static void tqAppendToMessage ( DBusMessageIter *  it,
const TQT_DBusUnixFd unixFd 
) [static]

Definition at line 659 of file tqdbusmarshall.cpp.

References DBUS_TYPE_UNIX_FD, and TQT_DBusUnixFd::fileDescriptor().

{
    const dbus_int32_t cdata = unixFd.fileDescriptor();
    dbus_message_iter_append_basic(it, DBUS_TYPE_UNIX_FD, &cdata);
}

Here is the call graph for this function: