/* Generated from Telepathy D-Bus Interface Specification, TelepathyQt4Yell copy */

#ifndef IN_TELEPATHY_LOGGER_QT4_HEADER
#error IN_TELEPATHY_LOGGER_QT4_HEADER
#endif
#include <TelepathyLoggerQt4/Global>

#include <QtGlobal>

#include <QByteArray>
#include <QString>
#include <QStringList>
#include <QVariantList>
#include <QVariantMap>

#include <QDBusArgument>
#include <QDBusMetaType>
#include <QDBusObjectPath>
#include <QDBusSignature>
#include <QDBusVariant>

#include <TelepathyQt/Global>

/**
 * \addtogroup typesconstants Types and constants
 *
 * Enumerated, flag, structure, list and mapping types and utility constants.
 */

/**
 * \defgroup struct Structure types
 * \ingroup typesconstants
 *
 * Structure types generated from the specification.
 */

/**
 * \defgroup list List types
 * \ingroup typesconstants
 *
 * List types generated from the specification.
 */

/**
 * \defgroup mapping Mapping types
 * \ingroup typesconstants
 *
 * Mapping types generated from the specification.
 */


namespace Tpl
{
/**
 * \struct ObjectImmutablePropertiesMap
 * \ingroup mapping
 * \headerfile TelepathyLoggerQt4/types.h <TelepathyLoggerQt4/Types>
 *
 * Mapping type generated from the specification. Convertible with
 * QMap<QDBusObjectPath, QVariantMap>, but needed to have a discrete type in the Qt type system.
 * 
 * A mapping from object path to the immutable properties of the object.
 */
struct TELEPATHY_LOGGER_QT4_EXPORT ObjectImmutablePropertiesMap : public QMap<QDBusObjectPath, QVariantMap>
{
    inline ObjectImmutablePropertiesMap() : QMap<QDBusObjectPath, QVariantMap>() {}
    inline ObjectImmutablePropertiesMap(const QMap<QDBusObjectPath, QVariantMap>& a) : QMap<QDBusObjectPath, QVariantMap>(a) {}

    inline ObjectImmutablePropertiesMap& operator=(const QMap<QDBusObjectPath, QVariantMap>& a)
    {
        *(static_cast<QMap<QDBusObjectPath, QVariantMap>*>(this)) = a;
        return *this;
    }
};

/**
 * \ingroup list
 * \headerfile TelepathyLoggerQt4/types.h <TelepathyLoggerQt4/Types>
 *
 * Array of ObjectImmutablePropertiesMap values.
 */
typedef QList<ObjectImmutablePropertiesMap> ObjectImmutablePropertiesMapList;

/**
 * \struct QualifiedPropertyValueMap
 * \ingroup mapping
 * \headerfile TelepathyLoggerQt4/types.h <TelepathyLoggerQt4/Types>
 *
 * Mapping type generated from the specification. Convertible with
 * QMap<QString, QDBusVariant>, but needed to have a discrete type in the Qt type system.
 * 
 * A mapping from strings representing D-Bus properties (by their namespaced 
 * names) to their values.
 */
struct TELEPATHY_LOGGER_QT4_EXPORT QualifiedPropertyValueMap : public QMap<QString, QDBusVariant>
{
    inline QualifiedPropertyValueMap() : QMap<QString, QDBusVariant>() {}
    inline QualifiedPropertyValueMap(const QMap<QString, QDBusVariant>& a) : QMap<QString, QDBusVariant>(a) {}

    inline QualifiedPropertyValueMap& operator=(const QMap<QString, QDBusVariant>& a)
    {
        *(static_cast<QMap<QString, QDBusVariant>*>(this)) = a;
        return *this;
    }
};

/**
 * \ingroup list
 * \headerfile TelepathyLoggerQt4/types.h <TelepathyLoggerQt4/Types>
 *
 * Array of QualifiedPropertyValueMap values.
 */
typedef QList<QualifiedPropertyValueMap> QualifiedPropertyValueMapList;

/**
 * \struct SocketAddressIP
 * \ingroup struct
 * \headerfile TelepathyLoggerQt4/types.h <TelepathyLoggerQt4/Types>
 *
 * Structure type generated from the specification.
 * 
 * An IP address and port.
 */
struct TELEPATHY_LOGGER_QT4_EXPORT SocketAddressIP
{
    /**
     * Either a dotted-quad IPv4 address literal as for Socket_Address_IPv4, 
     * or an RFC2373 IPv6 address as for Socket_Address_IPv6.
     */
    QString address;
    /**
     * The TCP or UDP port number.
     */
    ushort port;
};

TELEPATHY_LOGGER_QT4_EXPORT bool operator==(const SocketAddressIP& v1, const SocketAddressIP& v2);
inline bool operator!=(const SocketAddressIP& v1, const SocketAddressIP& v2)
{
    return !operator==(v1, v2);
}
TELEPATHY_LOGGER_QT4_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SocketAddressIP& val);
TELEPATHY_LOGGER_QT4_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SocketAddressIP& val);

/**
 * \ingroup list
 * \headerfile TelepathyLoggerQt4/types.h <TelepathyLoggerQt4/Types>
 *
 * Array of SocketAddressIP values.
 */
typedef QList<SocketAddressIP> SocketAddressIPList;

/**
 * \struct SocketAddressIPv4
 * \ingroup struct
 * \headerfile TelepathyLoggerQt4/types.h <TelepathyLoggerQt4/Types>
 *
 * Structure type generated from the specification.
 * 
 * An IPv4 address and port.
 */
struct TELEPATHY_LOGGER_QT4_EXPORT SocketAddressIPv4
{
    /**
     * A dotted-quad IPv4 address literal: four ASCII decimal numbers, each 
     * between 0 and 255 inclusive, e.g. &quot;192.168.0.1&quot;.
     */
    QString address;
    /**
     * The TCP or UDP port number.
     */
    ushort port;
};

TELEPATHY_LOGGER_QT4_EXPORT bool operator==(const SocketAddressIPv4& v1, const SocketAddressIPv4& v2);
inline bool operator!=(const SocketAddressIPv4& v1, const SocketAddressIPv4& v2)
{
    return !operator==(v1, v2);
}
TELEPATHY_LOGGER_QT4_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SocketAddressIPv4& val);
TELEPATHY_LOGGER_QT4_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SocketAddressIPv4& val);

/**
 * \struct SocketAddressIPv6
 * \ingroup struct
 * \headerfile TelepathyLoggerQt4/types.h <TelepathyLoggerQt4/Types>
 *
 * Structure type generated from the specification.
 * 
 * An IPv6 address and port.
 */
struct TELEPATHY_LOGGER_QT4_EXPORT SocketAddressIPv6
{
    /**
     * An IPv6 address literal as specified by RFC2373 section 2.2, e.g. 
     * &quot;2001:DB8::8:800:200C:4171&quot;.
     */
    QString address;
    /**
     * The TCP or UDP port number.
     */
    ushort port;
};

TELEPATHY_LOGGER_QT4_EXPORT bool operator==(const SocketAddressIPv6& v1, const SocketAddressIPv6& v2);
inline bool operator!=(const SocketAddressIPv6& v1, const SocketAddressIPv6& v2)
{
    return !operator==(v1, v2);
}
TELEPATHY_LOGGER_QT4_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SocketAddressIPv6& val);
TELEPATHY_LOGGER_QT4_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SocketAddressIPv6& val);

/**
 * \struct SocketNetmaskIPv4
 * \ingroup struct
 * \headerfile TelepathyLoggerQt4/types.h <TelepathyLoggerQt4/Types>
 *
 * Structure type generated from the specification.
 * 
 * An IPv4 network or subnet.
 */
struct TELEPATHY_LOGGER_QT4_EXPORT SocketNetmaskIPv4
{
    /**
     * A dotted-quad IPv4 address literal: four ASCII decimal numbers, each 
     * between 0 and 255 inclusive, e.g. &quot;192.168.0.1&quot;.
     */
    QString address;
    /**
     * The number of leading bits of the address that must match, for this 
     * netmask to be considered to match an address.
     */
    uchar prefixLength;
};

TELEPATHY_LOGGER_QT4_EXPORT bool operator==(const SocketNetmaskIPv4& v1, const SocketNetmaskIPv4& v2);
inline bool operator!=(const SocketNetmaskIPv4& v1, const SocketNetmaskIPv4& v2)
{
    return !operator==(v1, v2);
}
TELEPATHY_LOGGER_QT4_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SocketNetmaskIPv4& val);
TELEPATHY_LOGGER_QT4_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SocketNetmaskIPv4& val);

/**
 * \struct SocketNetmaskIPv6
 * \ingroup struct
 * \headerfile TelepathyLoggerQt4/types.h <TelepathyLoggerQt4/Types>
 *
 * Structure type generated from the specification.
 * 
 * An IPv6 network or subnet.
 */
struct TELEPATHY_LOGGER_QT4_EXPORT SocketNetmaskIPv6
{
    /**
     * An IPv6 address literal as specified by RFC2373 section 2.2, e.g. 
     * &quot;2001:DB8::8:800:200C:4171&quot;.
     */
    QString address;
    /**
     * The number of leading bits of the address that must match, for this 
     * netmask to be considered to match an address.
     */
    uchar prefixLength;
};

TELEPATHY_LOGGER_QT4_EXPORT bool operator==(const SocketNetmaskIPv6& v1, const SocketNetmaskIPv6& v2);
inline bool operator!=(const SocketNetmaskIPv6& v1, const SocketNetmaskIPv6& v2)
{
    return !operator==(v1, v2);
}
TELEPATHY_LOGGER_QT4_EXPORT QDBusArgument& operator<<(QDBusArgument& arg, const SocketNetmaskIPv6& val);
TELEPATHY_LOGGER_QT4_EXPORT const QDBusArgument& operator>>(const QDBusArgument& arg, SocketNetmaskIPv6& val);

/**
 * \struct StringStringMap
 * \ingroup mapping
 * \headerfile TelepathyLoggerQt4/types.h <TelepathyLoggerQt4/Types>
 *
 * Mapping type generated from the specification. Convertible with
 * QMap<QString, QString>, but needed to have a discrete type in the Qt type system.
 * 
 * A mapping from strings to strings representing extra key-value pairs.
 */
struct TELEPATHY_LOGGER_QT4_EXPORT StringStringMap : public QMap<QString, QString>
{
    inline StringStringMap() : QMap<QString, QString>() {}
    inline StringStringMap(const QMap<QString, QString>& a) : QMap<QString, QString>(a) {}

    inline StringStringMap& operator=(const QMap<QString, QString>& a)
    {
        *(static_cast<QMap<QString, QString>*>(this)) = a;
        return *this;
    }
};

/**
 * \ingroup list
 * \headerfile TelepathyLoggerQt4/types.h <TelepathyLoggerQt4/Types>
 *
 * Array of StringStringMap values.
 */
typedef QList<StringStringMap> StringStringMapList;

/**
 * \struct StringVariantMap
 * \ingroup mapping
 * \headerfile TelepathyLoggerQt4/types.h <TelepathyLoggerQt4/Types>
 *
 * Mapping type generated from the specification. Convertible with
 * QMap<QString, QDBusVariant>, but needed to have a discrete type in the Qt type system.
 * 
 * A mapping from strings to variants representing extra key-value pairs.
 */
struct TELEPATHY_LOGGER_QT4_EXPORT StringVariantMap : public QMap<QString, QDBusVariant>
{
    inline StringVariantMap() : QMap<QString, QDBusVariant>() {}
    inline StringVariantMap(const QMap<QString, QDBusVariant>& a) : QMap<QString, QDBusVariant>(a) {}

    inline StringVariantMap& operator=(const QMap<QString, QDBusVariant>& a)
    {
        *(static_cast<QMap<QString, QDBusVariant>*>(this)) = a;
        return *this;
    }
};

/**
 * \ingroup list
 * \headerfile TelepathyLoggerQt4/types.h <TelepathyLoggerQt4/Types>
 *
 * Array of StringVariantMap values.
 */
typedef QList<StringVariantMap> StringVariantMapList;


} // namespace Tpl

Q_DECLARE_METATYPE(Tpl::ObjectImmutablePropertiesMap)
Q_DECLARE_METATYPE(Tpl::ObjectImmutablePropertiesMapList)
Q_DECLARE_METATYPE(Tpl::QualifiedPropertyValueMap)
Q_DECLARE_METATYPE(Tpl::QualifiedPropertyValueMapList)
Q_DECLARE_METATYPE(Tpl::SocketAddressIP)
Q_DECLARE_METATYPE(Tpl::SocketAddressIPList)
Q_DECLARE_METATYPE(Tpl::SocketAddressIPv4)
Q_DECLARE_METATYPE(Tpl::SocketAddressIPv6)
Q_DECLARE_METATYPE(Tpl::SocketNetmaskIPv4)
Q_DECLARE_METATYPE(Tpl::SocketNetmaskIPv6)
Q_DECLARE_METATYPE(Tpl::StringStringMap)
Q_DECLARE_METATYPE(Tpl::StringStringMapList)
Q_DECLARE_METATYPE(Tpl::StringVariantMap)
Q_DECLARE_METATYPE(Tpl::StringVariantMapList)
