/* Generated from Extensions from the future */


#include <QtGlobal>

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

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

#include <TelepathyQt4/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 TpFuture
{
/**
 * \struct ObjectPathList
 * \ingroup list
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Generic list type with QDBusObjectPath elements. Convertible with
 * QList<QDBusObjectPath>, but needed to have a discrete type in the Qt4 type system.
 */
struct  ObjectPathList : public QList<QDBusObjectPath>
{
    inline ObjectPathList() : QList<QDBusObjectPath>() {}
    inline ObjectPathList(const QList<QDBusObjectPath>& a) : QList<QDBusObjectPath>(a) {}

    inline ObjectPathList& operator=(const QList<QDBusObjectPath>& a)
    {
        *(static_cast<QList<QDBusObjectPath>*>(this)) = a;
        return *this;
    }
};

/**
 * \struct UIntList
 * \ingroup list
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Generic list type with uint elements. Convertible with
 * QList<uint>, but needed to have a discrete type in the Qt4 type system.
 */
struct  UIntList : public QList<uint>
{
    inline UIntList() : QList<uint>() {}
    inline UIntList(const QList<uint>& a) : QList<uint>(a) {}

    inline UIntList& operator=(const QList<uint>& a)
    {
        *(static_cast<QList<uint>*>(this)) = a;
        return *this;
    }
};

/**
 * \struct CallMemberMap
 * \ingroup mapping
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Mapping type generated from the specification. Convertible with
 * QMap<uint, uint>, but needed to have a discrete type in the Qt4 type system.
 * 
 * A mapping from handles to their current state in the call.
 */
struct  CallMemberMap : public QMap<uint, uint>
{
    inline CallMemberMap() : QMap<uint, uint>() {}
    inline CallMemberMap(const QMap<uint, uint>& a) : QMap<uint, uint>(a) {}

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

/**
 * \ingroup list
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Array of CallMemberMap values.
 */
typedef QList<CallMemberMap> CallMemberMapList;

/**
 * \struct CallStateReason
 * \ingroup struct
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Structure type generated from the specification.
 * 
 * <p>A description of the reason for a change to the
 *   <tp:member-ref>CallState</tp:member-ref> and/or
 *   <tp:member-ref>CallFlags</tp:member-ref>.</p>
 */
struct  CallStateReason
{
    /**
     * The contact responsible for the change, or 0 if no contact was 
     * responsible.
     */
    uint actor;
    /**
     * The reason, chosen from a limited set of possibilities defined by the 
     * Telepathy specification.
     */
    uint reason;
    /**
     * <p>A specific reason for the change, which may be a D-Bus error in
     *   the Telepathy namespace, a D-Bus error in any other namespace
     *   (for implementation-specific errors), or the empty string to
     *   indicate that the state change was not an error.</p>
     * 
     * <p>This SHOULD be an empty string for changes to any state other
     *   than Ended.</p>
     * 
     * <p>The errors Cancelled and Terminated SHOULD NOT be used here;
     *   an empty string SHOULD be used instead.</p>
     * 
     * <tp:rationale>
     *   <p>Those error names are used to indicate normal call
     *     termination by the local user or another user, respectively,
     *     in contexts where a D-Bus error name must appear.</p>
     * </tp:rationale>
     */
    QString DBusReason;
};

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

/**
 * \struct Candidate
 * \ingroup struct
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Structure type generated from the specification.
 * 
 * A Stream Candidate
 */
struct  Candidate
{
    /**
     * The component number
     */
    uint component;
    /**
     * The IP address to use
     */
    QString IP;
    /**
     * The port number to use
     */
    ushort port;
    /**
     * Additional information about the candidate
     */
    QVariantMap info;
};

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

/**
 * \ingroup list
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Array of Candidate values.
 */
typedef QList<Candidate> CandidateList;

/**
 * \struct CandidateInfo
 * \ingroup mapping
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Mapping type generated from the specification. Convertible with
 * QMap<QString, QDBusVariant>, but needed to have a discrete type in the Qt4 type system.
 * 
 * Extra information about the candidate. Allowed and mandatory keys
 * depend on the transport protocol used. The following keys are commenly
 * used:
 * <dl>
 *   <dt>Type (u)</dt>
 *   <dd>type of candidate (host, srflx, prflx, relay)</dd>
 * 
 *   <dt>Foundation (s)</dt>
 *   <dd>the foundation of this candiate</dd>
 * 
 *   <dt>Protocol (u) </dt>
 *   <dd>Underlying protocol of the candidate (udp, tcp) </dd>
 * 
 *   <dt>Priority (u) </dt>
 *   <dd>Priority of the candidate </dd>
 * 
 *   <dt>BaseIP (u) </dt>
 *   <dd>Base IP of this candidate </dd>
 * 
 *   <dt>Username (s) </dt>
 *   <dd>Username of this candidate
 *     (only if credentials are per candidate)</dd>
 * 
 *   <dt>Password (s) </dt>
 *   <dd>Password of this candidate
 *     (only if credentials are per candidate)</dd>
 * 
 *   <dt>RawUDPFallback (b) </dt>
 *   <dd>Indicate whether this candidate may be used to provide a UDP
 *        fallback</dd>
 * </dl>
 */
struct  CandidateInfo : public QMap<QString, QDBusVariant>
{
    inline CandidateInfo() : QMap<QString, QDBusVariant>() {}
    inline CandidateInfo(const QMap<QString, QDBusVariant>& a) : QMap<QString, QDBusVariant>(a) {}

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

/**
 * \struct ContactSendingStateMap
 * \ingroup mapping
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Mapping type generated from the specification. Convertible with
 * QMap<uint, uint>, but needed to have a discrete type in the Qt4 type system.
 * 
 * A map from contacts to their sending state.
 */
struct  ContactSendingStateMap : public QMap<uint, uint>
{
    inline ContactSendingStateMap() : QMap<uint, uint>() {}
    inline ContactSendingStateMap(const QMap<uint, uint>& a) : QMap<uint, uint>(a) {}

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

/**
 * \struct ObjectImmutablePropertiesMap
 * \ingroup mapping
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Mapping type generated from the specification. Convertible with
 * QMap<QDBusObjectPath, QVariantMap>, but needed to have a discrete type in the Qt4 type system.
 * 
 * A mapping from object path to the immutable properties of the object.
 */
struct  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 TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Array of ObjectImmutablePropertiesMap values.
 */
typedef QList<ObjectImmutablePropertiesMap> ObjectImmutablePropertiesMapList;

/**
 * \struct QualifiedPropertyValueMap
 * \ingroup mapping
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Mapping type generated from the specification. Convertible with
 * QMap<QString, QDBusVariant>, but needed to have a discrete type in the Qt4 type system.
 * 
 * A mapping from strings representing D-Bus properties (by their namespaced 
 * names) to their values.
 */
struct  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 TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Array of QualifiedPropertyValueMap values.
 */
typedef QList<QualifiedPropertyValueMap> QualifiedPropertyValueMapList;

/**
 * \struct SocketAddressIP
 * \ingroup struct
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Structure type generated from the specification.
 * 
 * An IP address and port.
 */
struct  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;
};

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

/**
 * \ingroup list
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Array of SocketAddressIP values.
 */
typedef QList<SocketAddressIP> SocketAddressIPList;

/**
 * \struct SocketAddressIPv4
 * \ingroup struct
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Structure type generated from the specification.
 * 
 * An IPv4 address and port.
 */
struct  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;
};

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

/**
 * \struct SocketAddressIPv6
 * \ingroup struct
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Structure type generated from the specification.
 * 
 * An IPv6 address and port.
 */
struct  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;
};

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

/**
 * \struct SocketNetmaskIPv4
 * \ingroup struct
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Structure type generated from the specification.
 * 
 * An IPv4 network or subnet.
 */
struct  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;
};

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

/**
 * \struct SocketNetmaskIPv6
 * \ingroup struct
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Structure type generated from the specification.
 * 
 * An IPv6 network or subnet.
 */
struct  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;
};

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

/**
 * \struct StreamCredentials
 * \ingroup struct
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Structure type generated from the specification.
 * 
 * A username/password pair.
 */
struct  StreamCredentials
{
    /**
     * The username
     */
    QString username;
    /**
     * The password
     */
    QString password;
};

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

/**
 * \struct StringStringMap
 * \ingroup mapping
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Mapping type generated from the specification. Convertible with
 * QMap<QString, QString>, but needed to have a discrete type in the Qt4 type system.
 * 
 * A mapping from strings to strings representing extra key-value pairs.
 */
struct  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 TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Array of StringStringMap values.
 */
typedef QList<StringStringMap> StringStringMapList;

/**
 * \struct StringVariantMap
 * \ingroup mapping
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Mapping type generated from the specification. Convertible with
 * QMap<QString, QDBusVariant>, but needed to have a discrete type in the Qt4 type system.
 * 
 * A mapping from strings to variants representing extra key-value pairs.
 */
struct  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 TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Array of StringVariantMap values.
 */
typedef QList<StringVariantMap> StringVariantMapList;

/**
 * \struct Codec
 * \ingroup struct
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Structure type generated from the specification.
 * 
 * A description of a codec.
 */
struct  Codec
{
    /**
     * Numeric identifier for the codec. This will be used as the PT in the
     * SDP or content description.
     */
    uint identifier;
    /**
     * The name of the codec.
     */
    QString name;
    /**
     * The clockrate of the codec
     */
    uint clockrate;
    /**
     * Number of channels of the codec if applicable, otherwise 0
     */
    uint channels;
    /**
     * Extra parameters for this codec
     */
    StringStringMap parameters;
};

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

/**
 * \ingroup list
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Array of Codec values.
 */
typedef QList<Codec> CodecList;

/**
 * \struct ContactCodecMap
 * \ingroup mapping
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Mapping type generated from the specification. Convertible with
 * QMap<uint, CodecList>, but needed to have a discrete type in the Qt4 type system.
 * 
 * A map from contacts to the lists of codecs they support.
 */
struct  ContactCodecMap : public QMap<uint, CodecList>
{
    inline ContactCodecMap() : QMap<uint, CodecList>() {}
    inline ContactCodecMap(const QMap<uint, CodecList>& a) : QMap<uint, CodecList>(a) {}

    inline ContactCodecMap& operator=(const QMap<uint, CodecList>& a)
    {
        *(static_cast<QMap<uint, CodecList>*>(this)) = a;
        return *this;
    }
};

/**
 * \struct CodecOffering
 * \ingroup struct
 * \headerfile TelepathyQt4/future-internal.h <TelepathyQt4/future-internal.h>
 *
 * Structure type generated from the specification.
 * 
 * A codec offer and its corresponding remote contact codec map.
 */
struct  CodecOffering
{
    /**
     * The object path to the
     *   <tp:dbus-ref namespace="org.freedesktop.Telepathy.Call.Content">CodecOffer.DRAFT</tp:dbus-ref>
     */
    QDBusObjectPath codecOffer;
    /**
     * The <tp:dbus-ref namespace="org.freedesktop.Telepathy.Call.Content">CodecOffer.DRAFT.RemoteContactCodecMap</tp:dbus-ref> property
     * of the codec offer.
     */
    ContactCodecMap remoteContactCodecMap;
};

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


} // namespace TpFuture

Q_DECLARE_METATYPE(TpFuture::CallMemberMap)
Q_DECLARE_METATYPE(TpFuture::CallMemberMapList)
Q_DECLARE_METATYPE(TpFuture::CallStateReason)
Q_DECLARE_METATYPE(TpFuture::Candidate)
Q_DECLARE_METATYPE(TpFuture::CandidateInfo)
Q_DECLARE_METATYPE(TpFuture::CandidateList)
Q_DECLARE_METATYPE(TpFuture::Codec)
Q_DECLARE_METATYPE(TpFuture::CodecList)
Q_DECLARE_METATYPE(TpFuture::CodecOffering)
Q_DECLARE_METATYPE(TpFuture::ContactCodecMap)
Q_DECLARE_METATYPE(TpFuture::ContactSendingStateMap)
Q_DECLARE_METATYPE(TpFuture::ObjectImmutablePropertiesMap)
Q_DECLARE_METATYPE(TpFuture::ObjectImmutablePropertiesMapList)
Q_DECLARE_METATYPE(TpFuture::ObjectPathList)
Q_DECLARE_METATYPE(TpFuture::QualifiedPropertyValueMap)
Q_DECLARE_METATYPE(TpFuture::QualifiedPropertyValueMapList)
Q_DECLARE_METATYPE(TpFuture::SocketAddressIP)
Q_DECLARE_METATYPE(TpFuture::SocketAddressIPList)
Q_DECLARE_METATYPE(TpFuture::SocketAddressIPv4)
Q_DECLARE_METATYPE(TpFuture::SocketAddressIPv6)
Q_DECLARE_METATYPE(TpFuture::SocketNetmaskIPv4)
Q_DECLARE_METATYPE(TpFuture::SocketNetmaskIPv6)
Q_DECLARE_METATYPE(TpFuture::StreamCredentials)
Q_DECLARE_METATYPE(TpFuture::StringStringMap)
Q_DECLARE_METATYPE(TpFuture::StringStringMapList)
Q_DECLARE_METATYPE(TpFuture::StringVariantMap)
Q_DECLARE_METATYPE(TpFuture::StringVariantMapList)
Q_DECLARE_METATYPE(TpFuture::UIntList)
