/* This file is autogenerated. DO NOT CHANGE. All changes will be lost */

#ifndef ANY_QPB_H
#define ANY_QPB_H

#include "protobufwellknowntypes_exports.qpb.h"

#include <QtProtobuf/qprotobuflazymessagepointer.h>
#include <QtProtobuf/qprotobufmessage.h>
#include <QtProtobuf/qprotobufobject.h>
#include <QtProtobuf/qtprotobuftypes.h>

#include <QtProtobufWellKnownTypes/qprotobufanysupport.h>

#include <QtCore/qbytearray.h>
#include <QtCore/qlist.h>
#include <QtCore/qmetatype.h>
#include <QtCore/qshareddata.h>
#include <QtCore/qstring.h>

namespace google::protobuf {
class Any;
namespace Any_QtProtobufNested {
enum class QtProtobufFieldEnum;
} // namespace Any_QtProtobufNested

#ifdef QT_USE_PROTOBUF_LIST_ALIASES
using AnyRepeated = QList<Any>;
#endif // QT_USE_PROTOBUF_LIST_ALIASES

class Any_QtProtobufData;
class Any : public QProtobufMessage
{
    Q_PROTOBUF_OBJECT_EXPORT(QPB_PROTOBUFWELLKNOWNTYPES_EXPORT)
    Q_PROPERTY(QString typeUrl READ typeUrl WRITE setTypeUrl SCRIPTABLE true)
    Q_PROPERTY(QByteArray value READ value WRITE setValue SCRIPTABLE true)

public:
    using QtProtobufFieldEnum = Any_QtProtobufNested::QtProtobufFieldEnum;
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT Any();
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT ~Any();
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT Any(const Any &other);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT Any &operator =(const Any &other);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT Any(Any &&other) noexcept;
    Any &operator =(Any &&other) noexcept
    {
        swap(other);
        return *this;
    }
    void swap(Any &other) noexcept
    {
        QProtobufMessage::swap(other);
        dptr.swap(other.dptr);
    }
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT Q_IMPLICIT operator QVariant() const;

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT const QString &typeUrl() const &;

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT const QByteArray &value() const &;
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setTypeUrl(const QString &typeUrl);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setTypeUrl(QString &&typeUrl);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setValue(const QByteArray &value);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setValue(QByteArray &&value);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT static void registerTypes();

private:
    friend QPB_PROTOBUFWELLKNOWNTYPES_EXPORT bool comparesEqual(const Any &lhs, const Any &rhs) noexcept;
    friend bool operator==(const Any &lhs, const Any &rhs) noexcept
    {
        return comparesEqual(lhs, rhs);
    }
    friend bool operator!=(const Any &lhs, const Any &rhs) noexcept
    {
        return !comparesEqual(lhs, rhs);
    }
    QExplicitlySharedDataPointer<Any_QtProtobufData> dptr;
};
namespace Any_QtProtobufNested {
Q_NAMESPACE_EXPORT(QPB_PROTOBUFWELLKNOWNTYPES_EXPORT)

enum class QtProtobufFieldEnum {
    TypeUrlProtoFieldNumber = 1,
    ValueProtoFieldNumber = 2,
};
Q_ENUM_NS(QtProtobufFieldEnum)

} // namespace Any_QtProtobufNested
} // namespace google::protobuf

#endif // ANY_QPB_H
