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

#ifndef QTPROTOBUFGEN_QPB_H
#define QTPROTOBUFGEN_QPB_H

#include "tst_qtprotobufgen_extra_namespace_exports.qpb.h"

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

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

#include <optional>

namespace MyTopLevelNamespace::qt::protobuf {

namespace GlobalEnumGadget {
Q_NAMESPACE_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)

enum class GlobalEnum : int32_t {
    EnumValue1 = 0,
    ENUMVALUE2 = 1,
    enumValue3 = 2,
};
Q_ENUM_NS(GlobalEnum)

QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void registerTypes();
} // namespace GlobalEnumGadget
class EnumTypes;
namespace EnumTypes_QtProtobufNested {
enum class QtProtobufFieldEnum;
enum class NestedEnum : int32_t;
enum class FieldOneOfFields;
} // namespace EnumTypes_QtProtobufNested

class ScalarTypes;
namespace ScalarTypes_QtProtobufNested {
enum class QtProtobufFieldEnum;
} // namespace ScalarTypes_QtProtobufNested

class ScalarRepeatedTypes;
namespace ScalarRepeatedTypes_QtProtobufNested {
enum class QtProtobufFieldEnum;
} // namespace ScalarRepeatedTypes_QtProtobufNested

class ScalarRepeatedNoPackedTypes;
namespace ScalarRepeatedNoPackedTypes_QtProtobufNested {
enum class QtProtobufFieldEnum;
} // namespace ScalarRepeatedNoPackedTypes_QtProtobufNested

class ScalarOneOfTypes;
namespace ScalarOneOfTypes_QtProtobufNested {
enum class QtProtobufFieldEnum;
enum class FieldOneOfFields;
} // namespace ScalarOneOfTypes_QtProtobufNested

class ScalarOptionalTypes;
namespace ScalarOptionalTypes_QtProtobufNested {
enum class QtProtobufFieldEnum;
} // namespace ScalarOptionalTypes_QtProtobufNested

class MapScalarTypes;
namespace MapScalarTypes_QtProtobufNested {
enum class QtProtobufFieldEnum;
} // namespace MapScalarTypes_QtProtobufNested

class MessageTypes;
namespace MessageTypes_QtProtobufNested {
enum class QtProtobufFieldEnum;
enum class FieldOneOfFields;
} // namespace MessageTypes_QtProtobufNested

class MessageNestedTypes;
namespace MessageNestedTypes_QtProtobufNested {
enum class QtProtobufFieldEnum;
class NestedMessage;
namespace NestedMessage_QtProtobufNested {
enum class QtProtobufFieldEnum;
} // namespace NestedMessage_QtProtobufNested

} // namespace MessageNestedTypes_QtProtobufNested

#ifdef QT_USE_PROTOBUF_LIST_ALIASES
using EnumTypesRepeated = QList<EnumTypes>;
using ScalarTypesRepeated = QList<ScalarTypes>;
using ScalarRepeatedTypesRepeated = QList<ScalarRepeatedTypes>;
using ScalarRepeatedNoPackedTypesRepeated = QList<ScalarRepeatedNoPackedTypes>;
using ScalarOneOfTypesRepeated = QList<ScalarOneOfTypes>;
using ScalarOptionalTypesRepeated = QList<ScalarOptionalTypes>;
using MapScalarTypesRepeated = QList<MapScalarTypes>;
using MessageTypesRepeated = QList<MessageTypes>;
using MessageNestedTypesRepeated = QList<MessageNestedTypes>;
#endif // QT_USE_PROTOBUF_LIST_ALIASES

class EnumTypes_QtProtobufData;
class EnumTypes : public QProtobufMessage
{
    Q_PROTOBUF_OBJECT_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::GlobalEnumGadget::GlobalEnum field1 READ field1 WRITE setField1 SCRIPTABLE true)
    Q_PROPERTY(NestedEnum field2 READ field2 WRITE setField2 SCRIPTABLE true)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::GlobalEnumGadget::GlobalEnum field3 READ field3_p WRITE setField3_p)
    Q_PROPERTY(bool hasField3 READ hasField3)
    Q_PROPERTY(NestedEnum field4 READ field4_p WRITE setField4_p)
    Q_PROPERTY(bool hasField4 READ hasField4)

public:
    using QtProtobufFieldEnum = EnumTypes_QtProtobufNested::QtProtobufFieldEnum;
    using NestedEnum = EnumTypes_QtProtobufNested::NestedEnum;
    using FieldOneOfFields = EnumTypes_QtProtobufNested::FieldOneOfFields;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT EnumTypes();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ~EnumTypes();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT EnumTypes(const EnumTypes &other);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT EnumTypes &operator =(const EnumTypes &other);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT EnumTypes(EnumTypes &&other) noexcept;
    EnumTypes &operator =(EnumTypes &&other) noexcept
    {
        swap(other);
        return *this;
    }
    void swap(EnumTypes &other) noexcept
    {
        QProtobufMessage::swap(other);
        dptr.swap(other.dptr);
    }
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT Q_IMPLICIT operator QVariant() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT GlobalEnumGadget::GlobalEnum field1() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT EnumTypes_QtProtobufNested::NestedEnum field2() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField3() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT GlobalEnumGadget::GlobalEnum field3() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField4() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT EnumTypes_QtProtobufNested::NestedEnum field4() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT FieldOneOfFields fieldOneOfField() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1(GlobalEnumGadget::GlobalEnum field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2(EnumTypes_QtProtobufNested::NestedEnum field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3(GlobalEnumGadget::GlobalEnum field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField4(EnumTypes_QtProtobufNested::NestedEnum field4);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearFieldOneOf();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT static void registerTypes();

private:
    friend QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool comparesEqual(const EnumTypes &lhs, const EnumTypes &rhs) noexcept;
    friend bool operator==(const EnumTypes &lhs, const EnumTypes &rhs) noexcept
    {
        return comparesEqual(lhs, rhs);
    }
    friend bool operator!=(const EnumTypes &lhs, const EnumTypes &rhs) noexcept
    {
        return !comparesEqual(lhs, rhs);
    }
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT GlobalEnumGadget::GlobalEnum field3_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT EnumTypes_QtProtobufNested::NestedEnum field4_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3_p(GlobalEnumGadget::GlobalEnum field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField4_p(EnumTypes_QtProtobufNested::NestedEnum field4);
    QExplicitlySharedDataPointer<EnumTypes_QtProtobufData> dptr;
};
namespace EnumTypes_QtProtobufNested {
Q_NAMESPACE_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)

enum class QtProtobufFieldEnum {
    Field1ProtoFieldNumber = 1,
    Field2ProtoFieldNumber = 2,
    Field3ProtoFieldNumber = 3,
    Field4ProtoFieldNumber = 4,
};
Q_ENUM_NS(QtProtobufFieldEnum)

enum class NestedEnum : int32_t {
    EnumValue1 = 0,
    ENUMVALUE2 = 1,
    enumValue3 = 2,
};
Q_ENUM_NS(NestedEnum)

enum class FieldOneOfFields : int32_t {
    UninitializedField = QtProtobuf::InvalidFieldNumber,
    Field3 = 3,
    Field4 = 4,
};
Q_ENUM_NS(FieldOneOfFields)

} // namespace EnumTypes_QtProtobufNested

class ScalarTypes_QtProtobufData;
class ScalarTypes : public QProtobufMessage
{
    Q_PROTOBUF_OBJECT_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)
    Q_PROPERTY(QtProtobuf::int32 field1 READ field1 WRITE setField1 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::uint32 field2 READ field2 WRITE setField2 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::sint32 field3 READ field3 WRITE setField3 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::fixed32 field4 READ field4 WRITE setField4 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::sfixed32 field5 READ field5 WRITE setField5 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::int64 field6 READ field6 WRITE setField6 SCRIPTABLE false)
    Q_PROPERTY(QtProtobuf::uint64 field7 READ field7 WRITE setField7 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::sint64 field8 READ field8 WRITE setField8 SCRIPTABLE false)
    Q_PROPERTY(QtProtobuf::fixed64 field9 READ field9 WRITE setField9 SCRIPTABLE false)
    Q_PROPERTY(QtProtobuf::sfixed64 field10 READ field10 WRITE setField10 SCRIPTABLE false)
    Q_PROPERTY(float field11 READ field11 WRITE setField11 SCRIPTABLE true)
    Q_PROPERTY(double field12 READ field12 WRITE setField12 SCRIPTABLE true)
    Q_PROPERTY(QString field13 READ field13 WRITE setField13 SCRIPTABLE true)
    Q_PROPERTY(QByteArray field14 READ field14 WRITE setField14 SCRIPTABLE true)

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

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::int32 field1() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::uint32 field2() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sint32 field3() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::fixed32 field4() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sfixed32 field5() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::int64 field6() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::uint64 field7() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sint64 field8() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::fixed64 field9() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sfixed64 field10() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT float field11() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT double field12() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QString &field13() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QByteArray &field14() const &;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1(QtProtobuf::int32 field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2(QtProtobuf::uint32 field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3(QtProtobuf::sint32 field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField4(QtProtobuf::fixed32 field4);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField5(QtProtobuf::sfixed32 field5);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField6(QtProtobuf::int64 field6);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField7(QtProtobuf::uint64 field7);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField8(QtProtobuf::sint64 field8);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField9(QtProtobuf::fixed64 field9);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField10(QtProtobuf::sfixed64 field10);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField11(float field11);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField12(double field12);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField13(const QString &field13);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField13(QString &&field13);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField14(const QByteArray &field14);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField14(QByteArray &&field14);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT static void registerTypes();

private:
    friend QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool comparesEqual(const ScalarTypes &lhs, const ScalarTypes &rhs) noexcept;
    friend bool operator==(const ScalarTypes &lhs, const ScalarTypes &rhs) noexcept
    {
        return comparesEqual(lhs, rhs);
    }
    friend bool operator!=(const ScalarTypes &lhs, const ScalarTypes &rhs) noexcept
    {
        return !comparesEqual(lhs, rhs);
    }
    QExplicitlySharedDataPointer<ScalarTypes_QtProtobufData> dptr;
};
namespace ScalarTypes_QtProtobufNested {
Q_NAMESPACE_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)

enum class QtProtobufFieldEnum {
    Field1ProtoFieldNumber = 1,
    Field2ProtoFieldNumber = 2,
    Field3ProtoFieldNumber = 3,
    Field4ProtoFieldNumber = 4,
    Field5ProtoFieldNumber = 5,
    Field6ProtoFieldNumber = 6,
    Field7ProtoFieldNumber = 7,
    Field8ProtoFieldNumber = 8,
    Field9ProtoFieldNumber = 9,
    Field10ProtoFieldNumber = 10,
    Field11ProtoFieldNumber = 11,
    Field12ProtoFieldNumber = 12,
    Field13ProtoFieldNumber = 13,
    Field14ProtoFieldNumber = 14,
};
Q_ENUM_NS(QtProtobufFieldEnum)

} // namespace ScalarTypes_QtProtobufNested

class ScalarRepeatedTypes_QtProtobufData;
class ScalarRepeatedTypes : public QProtobufMessage
{
    Q_PROTOBUF_OBJECT_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)
    Q_PROPERTY(QtProtobuf::int32List field1 READ field1 WRITE setField1 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::uint32List field2 READ field2 WRITE setField2 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::sint32List field3 READ field3 WRITE setField3 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::fixed32List field4 READ field4 WRITE setField4 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::sfixed32List field5 READ field5 WRITE setField5 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::int64List field6 READ field6 WRITE setField6 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::uint64List field7 READ field7 WRITE setField7 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::sint64List field8 READ field8 WRITE setField8 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::fixed64List field9 READ field9 WRITE setField9 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::sfixed64List field10 READ field10 WRITE setField10 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::floatList field11 READ field11 WRITE setField11 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::doubleList field12 READ field12 WRITE setField12 SCRIPTABLE true)
    Q_PROPERTY(QStringList field13 READ field13 WRITE setField13 SCRIPTABLE true)
    Q_PROPERTY(QByteArrayList field14 READ field14 WRITE setField14 SCRIPTABLE true)

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

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::int32List &field1() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::uint32List &field2() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::sint32List &field3() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::fixed32List &field4() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::sfixed32List &field5() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::int64List &field6() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::uint64List &field7() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::sint64List &field8() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::fixed64List &field9() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::sfixed64List &field10() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::floatList &field11() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::doubleList &field12() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QStringList &field13() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QByteArrayList &field14() const &;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1(const QtProtobuf::int32List &field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1(QtProtobuf::int32List &&field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2(const QtProtobuf::uint32List &field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2(QtProtobuf::uint32List &&field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3(const QtProtobuf::sint32List &field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3(QtProtobuf::sint32List &&field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField4(const QtProtobuf::fixed32List &field4);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField4(QtProtobuf::fixed32List &&field4);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField5(const QtProtobuf::sfixed32List &field5);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField5(QtProtobuf::sfixed32List &&field5);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField6(const QtProtobuf::int64List &field6);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField6(QtProtobuf::int64List &&field6);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField7(const QtProtobuf::uint64List &field7);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField7(QtProtobuf::uint64List &&field7);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField8(const QtProtobuf::sint64List &field8);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField8(QtProtobuf::sint64List &&field8);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField9(const QtProtobuf::fixed64List &field9);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField9(QtProtobuf::fixed64List &&field9);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField10(const QtProtobuf::sfixed64List &field10);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField10(QtProtobuf::sfixed64List &&field10);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField11(const QtProtobuf::floatList &field11);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField11(QtProtobuf::floatList &&field11);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField12(const QtProtobuf::doubleList &field12);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField12(QtProtobuf::doubleList &&field12);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField13(const QStringList &field13);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField13(QStringList &&field13);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField14(const QByteArrayList &field14);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField14(QByteArrayList &&field14);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT static void registerTypes();

private:
    friend QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool comparesEqual(const ScalarRepeatedTypes &lhs, const ScalarRepeatedTypes &rhs) noexcept;
    friend bool operator==(const ScalarRepeatedTypes &lhs, const ScalarRepeatedTypes &rhs) noexcept
    {
        return comparesEqual(lhs, rhs);
    }
    friend bool operator!=(const ScalarRepeatedTypes &lhs, const ScalarRepeatedTypes &rhs) noexcept
    {
        return !comparesEqual(lhs, rhs);
    }
    QExplicitlySharedDataPointer<ScalarRepeatedTypes_QtProtobufData> dptr;
};
namespace ScalarRepeatedTypes_QtProtobufNested {
Q_NAMESPACE_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)

enum class QtProtobufFieldEnum {
    Field1ProtoFieldNumber = 1,
    Field2ProtoFieldNumber = 2,
    Field3ProtoFieldNumber = 3,
    Field4ProtoFieldNumber = 4,
    Field5ProtoFieldNumber = 5,
    Field6ProtoFieldNumber = 6,
    Field7ProtoFieldNumber = 7,
    Field8ProtoFieldNumber = 8,
    Field9ProtoFieldNumber = 9,
    Field10ProtoFieldNumber = 10,
    Field11ProtoFieldNumber = 11,
    Field12ProtoFieldNumber = 12,
    Field13ProtoFieldNumber = 13,
    Field14ProtoFieldNumber = 14,
};
Q_ENUM_NS(QtProtobufFieldEnum)

} // namespace ScalarRepeatedTypes_QtProtobufNested

class ScalarRepeatedNoPackedTypes_QtProtobufData;
class ScalarRepeatedNoPackedTypes : public QProtobufMessage
{
    Q_PROTOBUF_OBJECT_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)
    Q_PROPERTY(QtProtobuf::int32List field1 READ field1 WRITE setField1 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::uint32List field2 READ field2 WRITE setField2 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::sint32List field3 READ field3 WRITE setField3 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::fixed32List field4 READ field4 WRITE setField4 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::sfixed32List field5 READ field5 WRITE setField5 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::int64List field6 READ field6 WRITE setField6 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::uint64List field7 READ field7 WRITE setField7 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::sint64List field8 READ field8 WRITE setField8 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::fixed64List field9 READ field9 WRITE setField9 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::sfixed64List field10 READ field10 WRITE setField10 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::floatList field11 READ field11 WRITE setField11 SCRIPTABLE true)
    Q_PROPERTY(QtProtobuf::doubleList field12 READ field12 WRITE setField12 SCRIPTABLE true)
    Q_PROPERTY(QStringList field13 READ field13 WRITE setField13 SCRIPTABLE true)
    Q_PROPERTY(QByteArrayList field14 READ field14 WRITE setField14 SCRIPTABLE true)
    Q_PROPERTY(QList<MyTopLevelNamespace::qt::protobuf::GlobalEnumGadget::GlobalEnum> field15 READ field15 WRITE setField15 SCRIPTABLE true)

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

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::int32List &field1() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::uint32List &field2() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::sint32List &field3() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::fixed32List &field4() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::sfixed32List &field5() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::int64List &field6() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::uint64List &field7() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::sint64List &field8() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::fixed64List &field9() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::sfixed64List &field10() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::floatList &field11() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QtProtobuf::doubleList &field12() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QStringList &field13() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QByteArrayList &field14() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QList<GlobalEnumGadget::GlobalEnum> &field15() const &;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1(const QtProtobuf::int32List &field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1(QtProtobuf::int32List &&field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2(const QtProtobuf::uint32List &field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2(QtProtobuf::uint32List &&field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3(const QtProtobuf::sint32List &field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3(QtProtobuf::sint32List &&field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField4(const QtProtobuf::fixed32List &field4);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField4(QtProtobuf::fixed32List &&field4);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField5(const QtProtobuf::sfixed32List &field5);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField5(QtProtobuf::sfixed32List &&field5);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField6(const QtProtobuf::int64List &field6);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField6(QtProtobuf::int64List &&field6);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField7(const QtProtobuf::uint64List &field7);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField7(QtProtobuf::uint64List &&field7);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField8(const QtProtobuf::sint64List &field8);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField8(QtProtobuf::sint64List &&field8);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField9(const QtProtobuf::fixed64List &field9);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField9(QtProtobuf::fixed64List &&field9);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField10(const QtProtobuf::sfixed64List &field10);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField10(QtProtobuf::sfixed64List &&field10);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField11(const QtProtobuf::floatList &field11);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField11(QtProtobuf::floatList &&field11);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField12(const QtProtobuf::doubleList &field12);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField12(QtProtobuf::doubleList &&field12);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField13(const QStringList &field13);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField13(QStringList &&field13);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField14(const QByteArrayList &field14);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField14(QByteArrayList &&field14);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField15(const QList<GlobalEnumGadget::GlobalEnum> &field15);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField15(QList<GlobalEnumGadget::GlobalEnum> &&field15);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT static void registerTypes();

private:
    friend QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool comparesEqual(const ScalarRepeatedNoPackedTypes &lhs, const ScalarRepeatedNoPackedTypes &rhs) noexcept;
    friend bool operator==(const ScalarRepeatedNoPackedTypes &lhs, const ScalarRepeatedNoPackedTypes &rhs) noexcept
    {
        return comparesEqual(lhs, rhs);
    }
    friend bool operator!=(const ScalarRepeatedNoPackedTypes &lhs, const ScalarRepeatedNoPackedTypes &rhs) noexcept
    {
        return !comparesEqual(lhs, rhs);
    }
    QExplicitlySharedDataPointer<ScalarRepeatedNoPackedTypes_QtProtobufData> dptr;
};
namespace ScalarRepeatedNoPackedTypes_QtProtobufNested {
Q_NAMESPACE_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)

enum class QtProtobufFieldEnum {
    Field1ProtoFieldNumber = 1,
    Field2ProtoFieldNumber = 2,
    Field3ProtoFieldNumber = 3,
    Field4ProtoFieldNumber = 4,
    Field5ProtoFieldNumber = 5,
    Field6ProtoFieldNumber = 6,
    Field7ProtoFieldNumber = 7,
    Field8ProtoFieldNumber = 8,
    Field9ProtoFieldNumber = 9,
    Field10ProtoFieldNumber = 10,
    Field11ProtoFieldNumber = 11,
    Field12ProtoFieldNumber = 12,
    Field13ProtoFieldNumber = 13,
    Field14ProtoFieldNumber = 14,
    Field15ProtoFieldNumber = 15,
};
Q_ENUM_NS(QtProtobufFieldEnum)

} // namespace ScalarRepeatedNoPackedTypes_QtProtobufNested

class ScalarOneOfTypes_QtProtobufData;
class ScalarOneOfTypes : public QProtobufMessage
{
    Q_PROTOBUF_OBJECT_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)
    Q_PROPERTY(QtProtobuf::int32 field1 READ field1_p WRITE setField1_p)
    Q_PROPERTY(bool hasField1 READ hasField1)
    Q_PROPERTY(QtProtobuf::uint32 field2 READ field2_p WRITE setField2_p)
    Q_PROPERTY(bool hasField2 READ hasField2)
    Q_PROPERTY(QtProtobuf::sint32 field3 READ field3_p WRITE setField3_p)
    Q_PROPERTY(bool hasField3 READ hasField3)
    Q_PROPERTY(QtProtobuf::fixed32 field4 READ field4_p WRITE setField4_p)
    Q_PROPERTY(bool hasField4 READ hasField4)
    Q_PROPERTY(QtProtobuf::sfixed32 field5 READ field5_p WRITE setField5_p)
    Q_PROPERTY(bool hasField5 READ hasField5)
    Q_PROPERTY(QtProtobuf::int64 field6 READ field6_p WRITE setField6_p)
    Q_PROPERTY(bool hasField6 READ hasField6)
    Q_PROPERTY(QtProtobuf::uint64 field7 READ field7_p WRITE setField7_p)
    Q_PROPERTY(bool hasField7 READ hasField7)
    Q_PROPERTY(QtProtobuf::sint64 field8 READ field8_p WRITE setField8_p)
    Q_PROPERTY(bool hasField8 READ hasField8)
    Q_PROPERTY(QtProtobuf::fixed64 field9 READ field9_p WRITE setField9_p)
    Q_PROPERTY(bool hasField9 READ hasField9)
    Q_PROPERTY(QtProtobuf::sfixed64 field10 READ field10_p WRITE setField10_p)
    Q_PROPERTY(bool hasField10 READ hasField10)
    Q_PROPERTY(float field11 READ field11_p WRITE setField11_p)
    Q_PROPERTY(bool hasField11 READ hasField11)
    Q_PROPERTY(double field12 READ field12_p WRITE setField12_p)
    Q_PROPERTY(bool hasField12 READ hasField12)
    Q_PROPERTY(QString field13 READ field13_p WRITE setField13_p)
    Q_PROPERTY(bool hasField13 READ hasField13)
    Q_PROPERTY(QByteArray field14 READ field14_p WRITE setField14_p)
    Q_PROPERTY(bool hasField14 READ hasField14)

public:
    using QtProtobufFieldEnum = ScalarOneOfTypes_QtProtobufNested::QtProtobufFieldEnum;
    using FieldOneOfFields = ScalarOneOfTypes_QtProtobufNested::FieldOneOfFields;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ScalarOneOfTypes();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ~ScalarOneOfTypes();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ScalarOneOfTypes(const ScalarOneOfTypes &other);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ScalarOneOfTypes &operator =(const ScalarOneOfTypes &other);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ScalarOneOfTypes(ScalarOneOfTypes &&other) noexcept;
    ScalarOneOfTypes &operator =(ScalarOneOfTypes &&other) noexcept
    {
        swap(other);
        return *this;
    }
    void swap(ScalarOneOfTypes &other) noexcept
    {
        QProtobufMessage::swap(other);
        dptr.swap(other.dptr);
    }
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT Q_IMPLICIT operator QVariant() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField1() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::int32 field1() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField2() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::uint32 field2() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField3() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sint32 field3() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField4() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::fixed32 field4() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField5() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sfixed32 field5() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField6() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::int64 field6() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField7() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::uint64 field7() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField8() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sint64 field8() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField9() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::fixed64 field9() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField10() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sfixed64 field10() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField11() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT float field11() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField12() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT double field12() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField13() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QString field13() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField14() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QByteArray field14() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT FieldOneOfFields fieldOneOfField() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1(QtProtobuf::int32 field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2(QtProtobuf::uint32 field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3(QtProtobuf::sint32 field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField4(QtProtobuf::fixed32 field4);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField5(QtProtobuf::sfixed32 field5);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField6(QtProtobuf::int64 field6);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField7(QtProtobuf::uint64 field7);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField8(QtProtobuf::sint64 field8);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField9(QtProtobuf::fixed64 field9);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField10(QtProtobuf::sfixed64 field10);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField11(float field11);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField12(double field12);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField13(const QString &field13);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField13(QString &&field13);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField14(const QByteArray &field14);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField14(QByteArray &&field14);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearFieldOneOf();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT static void registerTypes();

private:
    friend QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool comparesEqual(const ScalarOneOfTypes &lhs, const ScalarOneOfTypes &rhs) noexcept;
    friend bool operator==(const ScalarOneOfTypes &lhs, const ScalarOneOfTypes &rhs) noexcept
    {
        return comparesEqual(lhs, rhs);
    }
    friend bool operator!=(const ScalarOneOfTypes &lhs, const ScalarOneOfTypes &rhs) noexcept
    {
        return !comparesEqual(lhs, rhs);
    }
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::int32 field1_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::uint32 field2_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sint32 field3_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::fixed32 field4_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sfixed32 field5_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::int64 field6_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::uint64 field7_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sint64 field8_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::fixed64 field9_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sfixed64 field10_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT float field11_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT double field12_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QString field13_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QByteArray field14_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1_p(QtProtobuf::int32 field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2_p(QtProtobuf::uint32 field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3_p(QtProtobuf::sint32 field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField4_p(QtProtobuf::fixed32 field4);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField5_p(QtProtobuf::sfixed32 field5);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField6_p(QtProtobuf::int64 field6);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField7_p(QtProtobuf::uint64 field7);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField8_p(QtProtobuf::sint64 field8);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField9_p(QtProtobuf::fixed64 field9);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField10_p(QtProtobuf::sfixed64 field10);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField11_p(float field11);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField12_p(double field12);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField13_p(QString field13);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField14_p(QByteArray field14);
    QExplicitlySharedDataPointer<ScalarOneOfTypes_QtProtobufData> dptr;
};
namespace ScalarOneOfTypes_QtProtobufNested {
Q_NAMESPACE_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)

enum class QtProtobufFieldEnum {
    Field1ProtoFieldNumber = 1,
    Field2ProtoFieldNumber = 2,
    Field3ProtoFieldNumber = 3,
    Field4ProtoFieldNumber = 4,
    Field5ProtoFieldNumber = 5,
    Field6ProtoFieldNumber = 6,
    Field7ProtoFieldNumber = 7,
    Field8ProtoFieldNumber = 8,
    Field9ProtoFieldNumber = 9,
    Field10ProtoFieldNumber = 10,
    Field11ProtoFieldNumber = 11,
    Field12ProtoFieldNumber = 12,
    Field13ProtoFieldNumber = 13,
    Field14ProtoFieldNumber = 14,
};
Q_ENUM_NS(QtProtobufFieldEnum)

enum class FieldOneOfFields : int32_t {
    UninitializedField = QtProtobuf::InvalidFieldNumber,
    Field1 = 1,
    Field2 = 2,
    Field3 = 3,
    Field4 = 4,
    Field5 = 5,
    Field6 = 6,
    Field7 = 7,
    Field8 = 8,
    Field9 = 9,
    Field10 = 10,
    Field11 = 11,
    Field12 = 12,
    Field13 = 13,
    Field14 = 14,
};
Q_ENUM_NS(FieldOneOfFields)

} // namespace ScalarOneOfTypes_QtProtobufNested

class ScalarOptionalTypes_QtProtobufData;
class ScalarOptionalTypes : public QProtobufMessage
{
    Q_PROTOBUF_OBJECT_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)
    Q_PROPERTY(QtProtobuf::int32 field1 READ field1_p WRITE setField1_p)
    Q_PROPERTY(bool hasField1 READ hasField1)
    Q_PROPERTY(QtProtobuf::uint32 field2 READ field2_p WRITE setField2_p)
    Q_PROPERTY(bool hasField2 READ hasField2)
    Q_PROPERTY(QtProtobuf::sint32 field3 READ field3_p WRITE setField3_p)
    Q_PROPERTY(bool hasField3 READ hasField3)
    Q_PROPERTY(QtProtobuf::fixed32 field4 READ field4_p WRITE setField4_p)
    Q_PROPERTY(bool hasField4 READ hasField4)
    Q_PROPERTY(QtProtobuf::sfixed32 field5 READ field5_p WRITE setField5_p)
    Q_PROPERTY(bool hasField5 READ hasField5)
    Q_PROPERTY(QtProtobuf::int64 field6 READ field6_p WRITE setField6_p)
    Q_PROPERTY(bool hasField6 READ hasField6)
    Q_PROPERTY(QtProtobuf::uint64 field7 READ field7_p WRITE setField7_p)
    Q_PROPERTY(bool hasField7 READ hasField7)
    Q_PROPERTY(QtProtobuf::sint64 field8 READ field8_p WRITE setField8_p)
    Q_PROPERTY(bool hasField8 READ hasField8)
    Q_PROPERTY(QtProtobuf::fixed64 field9 READ field9_p WRITE setField9_p)
    Q_PROPERTY(bool hasField9 READ hasField9)
    Q_PROPERTY(QtProtobuf::sfixed64 field10 READ field10_p WRITE setField10_p)
    Q_PROPERTY(bool hasField10 READ hasField10)
    Q_PROPERTY(float field11 READ field11_p WRITE setField11_p)
    Q_PROPERTY(bool hasField11 READ hasField11)
    Q_PROPERTY(double field12 READ field12_p WRITE setField12_p)
    Q_PROPERTY(bool hasField12 READ hasField12)
    Q_PROPERTY(QString field13 READ field13_p WRITE setField13_p)
    Q_PROPERTY(bool hasField13 READ hasField13)
    Q_PROPERTY(QByteArray field14 READ field14_p WRITE setField14_p)
    Q_PROPERTY(bool hasField14 READ hasField14)

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

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField1() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::int32 field1() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField2() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::uint32 field2() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField3() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sint32 field3() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField4() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::fixed32 field4() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField5() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sfixed32 field5() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField6() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::int64 field6() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField7() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::uint64 field7() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField8() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sint64 field8() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField9() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::fixed64 field9() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField10() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sfixed64 field10() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField11() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT float field11() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField12() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT double field12() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField13() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QString field13() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField14() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QByteArray field14() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1(QtProtobuf::int32 field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField1();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2(QtProtobuf::uint32 field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField2();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3(QtProtobuf::sint32 field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField3();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField4(QtProtobuf::fixed32 field4);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField4();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField5(QtProtobuf::sfixed32 field5);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField5();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField6(QtProtobuf::int64 field6);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField6();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField7(QtProtobuf::uint64 field7);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField7();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField8(QtProtobuf::sint64 field8);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField8();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField9(QtProtobuf::fixed64 field9);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField9();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField10(QtProtobuf::sfixed64 field10);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField10();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField11(float field11);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField11();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField12(double field12);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField12();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField13(const QString &field13);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField13(QString &&field13);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField13();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField14(const QByteArray &field14);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField14(QByteArray &&field14);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField14();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT static void registerTypes();

private:
    friend QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool comparesEqual(const ScalarOptionalTypes &lhs, const ScalarOptionalTypes &rhs) noexcept;
    friend bool operator==(const ScalarOptionalTypes &lhs, const ScalarOptionalTypes &rhs) noexcept
    {
        return comparesEqual(lhs, rhs);
    }
    friend bool operator!=(const ScalarOptionalTypes &lhs, const ScalarOptionalTypes &rhs) noexcept
    {
        return !comparesEqual(lhs, rhs);
    }
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::int32 field1_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::uint32 field2_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sint32 field3_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::fixed32 field4_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sfixed32 field5_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::int64 field6_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::uint64 field7_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sint64 field8_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::fixed64 field9_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::sfixed64 field10_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT float field11_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT double field12_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QString field13_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QByteArray field14_p() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1_p(QtProtobuf::int32 field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2_p(QtProtobuf::uint32 field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3_p(QtProtobuf::sint32 field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField4_p(QtProtobuf::fixed32 field4);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField5_p(QtProtobuf::sfixed32 field5);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField6_p(QtProtobuf::int64 field6);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField7_p(QtProtobuf::uint64 field7);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField8_p(QtProtobuf::sint64 field8);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField9_p(QtProtobuf::fixed64 field9);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField10_p(QtProtobuf::sfixed64 field10);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField11_p(float field11);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField12_p(double field12);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField13_p(QString field13);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField14_p(QByteArray field14);
    QExplicitlySharedDataPointer<ScalarOptionalTypes_QtProtobufData> dptr;
};
namespace ScalarOptionalTypes_QtProtobufNested {
Q_NAMESPACE_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)

enum class QtProtobufFieldEnum {
    Field1ProtoFieldNumber = 1,
    Field2ProtoFieldNumber = 2,
    Field3ProtoFieldNumber = 3,
    Field4ProtoFieldNumber = 4,
    Field5ProtoFieldNumber = 5,
    Field6ProtoFieldNumber = 6,
    Field7ProtoFieldNumber = 7,
    Field8ProtoFieldNumber = 8,
    Field9ProtoFieldNumber = 9,
    Field10ProtoFieldNumber = 10,
    Field11ProtoFieldNumber = 11,
    Field12ProtoFieldNumber = 12,
    Field13ProtoFieldNumber = 13,
    Field14ProtoFieldNumber = 14,
};
Q_ENUM_NS(QtProtobufFieldEnum)

} // namespace ScalarOptionalTypes_QtProtobufNested

class MapScalarTypes_QtProtobufData;
class MapScalarTypes : public QProtobufMessage
{
    Q_PROTOBUF_OBJECT_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::MapScalarTypes::Field1Entry field1 READ field1 WRITE setField1 SCRIPTABLE true)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::MapScalarTypes::Field2Entry field2 READ field2 WRITE setField2 SCRIPTABLE true)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::MapScalarTypes::Field3Entry field3 READ field3 WRITE setField3 SCRIPTABLE true)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::MapScalarTypes::Field4Entry field4 READ field4 WRITE setField4 SCRIPTABLE true)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::MapScalarTypes::Field5Entry field5 READ field5 WRITE setField5 SCRIPTABLE true)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::MapScalarTypes::Field6Entry field6 READ field6 WRITE setField6 SCRIPTABLE true)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::MapScalarTypes::Field7Entry field7 READ field7 WRITE setField7 SCRIPTABLE true)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::MapScalarTypes::Field8Entry field8 READ field8 WRITE setField8 SCRIPTABLE true)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::MapScalarTypes::Field9Entry field9 READ field9 WRITE setField9 SCRIPTABLE true)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::MapScalarTypes::Field10Entry field10 READ field10 WRITE setField10 SCRIPTABLE true)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::MapScalarTypes::Field11Entry field11 READ field11 WRITE setField11 SCRIPTABLE true)

public:
    using QtProtobufFieldEnum = MapScalarTypes_QtProtobufNested::QtProtobufFieldEnum;
    using Field1Entry = QHash<QtProtobuf::int32, QtProtobuf::int64>;
    using Field2Entry = QHash<QtProtobuf::int64, QtProtobuf::sint32>;
    using Field3Entry = QHash<QtProtobuf::sint32, QtProtobuf::sint64>;
    using Field4Entry = QHash<QtProtobuf::sint64, QtProtobuf::uint32>;
    using Field5Entry = QHash<QtProtobuf::uint32, QtProtobuf::uint64>;
    using Field6Entry = QHash<QtProtobuf::uint64, QtProtobuf::fixed32>;
    using Field7Entry = QHash<QtProtobuf::fixed32, QtProtobuf::fixed64>;
    using Field8Entry = QHash<QtProtobuf::fixed64, QtProtobuf::sfixed32>;
    using Field9Entry = QHash<QtProtobuf::sfixed32, QtProtobuf::sfixed64>;
    using Field10Entry = QHash<QtProtobuf::sfixed64, QString>;
    using Field11Entry = QHash<QString, QtProtobuf::int32>;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MapScalarTypes();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ~MapScalarTypes();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MapScalarTypes(const MapScalarTypes &other);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MapScalarTypes &operator =(const MapScalarTypes &other);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MapScalarTypes(MapScalarTypes &&other) noexcept;
    MapScalarTypes &operator =(MapScalarTypes &&other) noexcept
    {
        swap(other);
        return *this;
    }
    void swap(MapScalarTypes &other) noexcept
    {
        QProtobufMessage::swap(other);
        dptr.swap(other.dptr);
    }
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT Q_IMPLICIT operator QVariant() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const MapScalarTypes::Field1Entry &field1() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const MapScalarTypes::Field2Entry &field2() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const MapScalarTypes::Field3Entry &field3() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const MapScalarTypes::Field4Entry &field4() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const MapScalarTypes::Field5Entry &field5() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const MapScalarTypes::Field6Entry &field6() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const MapScalarTypes::Field7Entry &field7() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const MapScalarTypes::Field8Entry &field8() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const MapScalarTypes::Field9Entry &field9() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const MapScalarTypes::Field10Entry &field10() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const MapScalarTypes::Field11Entry &field11() const &;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1(const MapScalarTypes::Field1Entry &field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1(MapScalarTypes::Field1Entry &&field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2(const MapScalarTypes::Field2Entry &field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2(MapScalarTypes::Field2Entry &&field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3(const MapScalarTypes::Field3Entry &field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3(MapScalarTypes::Field3Entry &&field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField4(const MapScalarTypes::Field4Entry &field4);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField4(MapScalarTypes::Field4Entry &&field4);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField5(const MapScalarTypes::Field5Entry &field5);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField5(MapScalarTypes::Field5Entry &&field5);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField6(const MapScalarTypes::Field6Entry &field6);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField6(MapScalarTypes::Field6Entry &&field6);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField7(const MapScalarTypes::Field7Entry &field7);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField7(MapScalarTypes::Field7Entry &&field7);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField8(const MapScalarTypes::Field8Entry &field8);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField8(MapScalarTypes::Field8Entry &&field8);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField9(const MapScalarTypes::Field9Entry &field9);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField9(MapScalarTypes::Field9Entry &&field9);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField10(const MapScalarTypes::Field10Entry &field10);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField10(MapScalarTypes::Field10Entry &&field10);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField11(const MapScalarTypes::Field11Entry &field11);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField11(MapScalarTypes::Field11Entry &&field11);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT static void registerTypes();

private:
    friend QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool comparesEqual(const MapScalarTypes &lhs, const MapScalarTypes &rhs) noexcept;
    friend bool operator==(const MapScalarTypes &lhs, const MapScalarTypes &rhs) noexcept
    {
        return comparesEqual(lhs, rhs);
    }
    friend bool operator!=(const MapScalarTypes &lhs, const MapScalarTypes &rhs) noexcept
    {
        return !comparesEqual(lhs, rhs);
    }
    QExplicitlySharedDataPointer<MapScalarTypes_QtProtobufData> dptr;
};
namespace MapScalarTypes_QtProtobufNested {
Q_NAMESPACE_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)

enum class QtProtobufFieldEnum {
    Field1ProtoFieldNumber = 1,
    Field2ProtoFieldNumber = 2,
    Field3ProtoFieldNumber = 3,
    Field4ProtoFieldNumber = 4,
    Field5ProtoFieldNumber = 5,
    Field6ProtoFieldNumber = 6,
    Field7ProtoFieldNumber = 7,
    Field8ProtoFieldNumber = 8,
    Field9ProtoFieldNumber = 9,
    Field10ProtoFieldNumber = 10,
    Field11ProtoFieldNumber = 11,
};
Q_ENUM_NS(QtProtobufFieldEnum)

} // namespace MapScalarTypes_QtProtobufNested

class MessageTypes_QtProtobufData;
class MessageTypes : public QProtobufMessage
{
    Q_PROTOBUF_OBJECT_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::ScalarTypes *field1_p READ field1_p WRITE setField1_p SCRIPTABLE false)
    Q_PROPERTY(bool hasField1 READ hasField1)
    Q_PROPERTY(QList<MyTopLevelNamespace::qt::protobuf::ScalarTypes> field2Data READ field2 WRITE setField2 SCRIPTABLE true)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::ScalarTypes *field3_p READ field3_p WRITE setField3_p SCRIPTABLE false)
    Q_PROPERTY(bool hasField3 READ hasField3)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::EnumTypes::NestedEnum field4 READ field4 WRITE setField4 SCRIPTABLE true)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::MessageTypes::Field5Entry field5 READ field5 WRITE setField5 SCRIPTABLE true)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::ScalarTypes *field6_p READ field6_p WRITE setField6_p SCRIPTABLE false)
    Q_PROPERTY(bool hasField6 READ hasField6)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::ScalarRepeatedTypes *field7_p READ field7_p WRITE setField7_p SCRIPTABLE false)
    Q_PROPERTY(bool hasField7 READ hasField7)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::ScalarOneOfTypes *field8_p READ field8_p WRITE setField8_p SCRIPTABLE false)
    Q_PROPERTY(bool hasField8 READ hasField8)

public:
    using QtProtobufFieldEnum = MessageTypes_QtProtobufNested::QtProtobufFieldEnum;
    using FieldOneOfFields = MessageTypes_QtProtobufNested::FieldOneOfFields;
    using Field5Entry = QHash<QtProtobuf::int32, ScalarTypes>;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MessageTypes();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ~MessageTypes();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MessageTypes(const MessageTypes &other);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MessageTypes &operator =(const MessageTypes &other);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MessageTypes(MessageTypes &&other) noexcept;
    MessageTypes &operator =(MessageTypes &&other) noexcept
    {
        swap(other);
        return *this;
    }
    void swap(MessageTypes &other) noexcept
    {
        QProtobufMessage::swap(other);
        dptr.swap(other.dptr);
    }
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT Q_IMPLICIT operator QVariant() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField1() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const ScalarTypes &field1() const &;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ScalarTypes &mutField1() &;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField1();

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const QList<ScalarTypes> &field2() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField3() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const ScalarTypes &field3() const &;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ScalarTypes &mutField3() &;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField3();

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT EnumTypes_QtProtobufNested::NestedEnum field4() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const MessageTypes::Field5Entry &field5() const &;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField6() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ScalarTypes &field6() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField7() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ScalarRepeatedTypes &field7() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField8() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ScalarOneOfTypes &field8() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT FieldOneOfFields fieldOneOfField() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1(const ScalarTypes &field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1(ScalarTypes &&field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2(const QList<ScalarTypes> &field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2(QList<ScalarTypes> &&field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3(const ScalarTypes &field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3(ScalarTypes &&field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField4(EnumTypes_QtProtobufNested::NestedEnum field4);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField5(const MessageTypes::Field5Entry &field5);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField5(MessageTypes::Field5Entry &&field5);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField6(const ScalarTypes &field6);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField6(ScalarTypes &&field6);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField7(const ScalarRepeatedTypes &field7);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField7(ScalarRepeatedTypes &&field7);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField8(const ScalarOneOfTypes &field8);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField8(ScalarOneOfTypes &&field8);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearFieldOneOf();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT static void registerTypes();

private:
    friend QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool comparesEqual(const MessageTypes &lhs, const MessageTypes &rhs) noexcept;
    friend bool operator==(const MessageTypes &lhs, const MessageTypes &rhs) noexcept
    {
        return comparesEqual(lhs, rhs);
    }
    friend bool operator!=(const MessageTypes &lhs, const MessageTypes &rhs) noexcept
    {
        return !comparesEqual(lhs, rhs);
    }
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ScalarTypes *field1_p();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ScalarTypes *field3_p();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ScalarTypes *field6_p();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ScalarRepeatedTypes *field7_p();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ScalarOneOfTypes *field8_p();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1_p(ScalarTypes *field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField3_p(ScalarTypes *field3);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField6_p(ScalarTypes *field6);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField7_p(ScalarRepeatedTypes *field7);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField8_p(ScalarOneOfTypes *field8);
    QExplicitlySharedDataPointer<MessageTypes_QtProtobufData> dptr;
};
namespace MessageTypes_QtProtobufNested {
Q_NAMESPACE_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)

enum class QtProtobufFieldEnum {
    Field1ProtoFieldNumber = 1,
    Field2ProtoFieldNumber = 2,
    Field3ProtoFieldNumber = 3,
    Field4ProtoFieldNumber = 4,
    Field5ProtoFieldNumber = 5,
    Field6ProtoFieldNumber = 6,
    Field7ProtoFieldNumber = 7,
    Field8ProtoFieldNumber = 8,
};
Q_ENUM_NS(QtProtobufFieldEnum)

enum class FieldOneOfFields : int32_t {
    UninitializedField = QtProtobuf::InvalidFieldNumber,
    Field6 = 6,
    Field7 = 7,
    Field8 = 8,
};
Q_ENUM_NS(FieldOneOfFields)

} // namespace MessageTypes_QtProtobufNested

class MessageNestedTypes_QtProtobufData;
class MessageNestedTypes : public QProtobufMessage
{
    Q_PROTOBUF_OBJECT_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::MessageNestedTypes::NestedMessage *field1_p READ field1_p WRITE setField1_p SCRIPTABLE false)
    Q_PROPERTY(bool hasField1 READ hasField1)

public:
    using QtProtobufFieldEnum = MessageNestedTypes_QtProtobufNested::QtProtobufFieldEnum;
    using NestedMessage = MessageNestedTypes_QtProtobufNested::NestedMessage;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MessageNestedTypes();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT ~MessageNestedTypes();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MessageNestedTypes(const MessageNestedTypes &other);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MessageNestedTypes &operator =(const MessageNestedTypes &other);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MessageNestedTypes(MessageNestedTypes &&other) noexcept;
    MessageNestedTypes &operator =(MessageNestedTypes &&other) noexcept
    {
        swap(other);
        return *this;
    }
    void swap(MessageNestedTypes &other) noexcept
    {
        QProtobufMessage::swap(other);
        dptr.swap(other.dptr);
    }
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT Q_IMPLICIT operator QVariant() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField1() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const MessageNestedTypes_QtProtobufNested::NestedMessage &field1() const &;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MessageNestedTypes_QtProtobufNested::NestedMessage &mutField1() &;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField1();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1(const MessageNestedTypes_QtProtobufNested::NestedMessage &field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1(MessageNestedTypes_QtProtobufNested::NestedMessage &&field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT static void registerTypes();

private:
    friend QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool comparesEqual(const MessageNestedTypes &lhs, const MessageNestedTypes &rhs) noexcept;
    friend bool operator==(const MessageNestedTypes &lhs, const MessageNestedTypes &rhs) noexcept
    {
        return comparesEqual(lhs, rhs);
    }
    friend bool operator!=(const MessageNestedTypes &lhs, const MessageNestedTypes &rhs) noexcept
    {
        return !comparesEqual(lhs, rhs);
    }
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MessageNestedTypes_QtProtobufNested::NestedMessage *field1_p();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1_p(MessageNestedTypes_QtProtobufNested::NestedMessage *field1);
    QExplicitlySharedDataPointer<MessageNestedTypes_QtProtobufData> dptr;
};
namespace MessageNestedTypes_QtProtobufNested {
Q_NAMESPACE_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)

enum class QtProtobufFieldEnum {
    Field1ProtoFieldNumber = 1,
};
Q_ENUM_NS(QtProtobufFieldEnum)


class NestedMessage_QtProtobufData;
class NestedMessage : public QProtobufMessage
{
    Q_PROTOBUF_OBJECT_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)
    Q_PROPERTY(QtProtobuf::int32 field1 READ field1 WRITE setField1 SCRIPTABLE true)
    Q_PROPERTY(MyTopLevelNamespace::qt::protobuf::MessageTypes *field2_p READ field2_p WRITE setField2_p SCRIPTABLE false)
    Q_PROPERTY(bool hasField2 READ hasField2)

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

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT QtProtobuf::int32 field1() const;

    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool hasField2() const;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT const MessageTypes &field2() const &;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MessageTypes &mutField2() &;
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void clearField2();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField1(QtProtobuf::int32 field1);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2(const MessageTypes &field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2(MessageTypes &&field2);
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT static void registerTypes();

private:
    friend QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT bool comparesEqual(const NestedMessage &lhs, const NestedMessage &rhs) noexcept;
    friend bool operator==(const NestedMessage &lhs, const NestedMessage &rhs) noexcept
    {
        return comparesEqual(lhs, rhs);
    }
    friend bool operator!=(const NestedMessage &lhs, const NestedMessage &rhs) noexcept
    {
        return !comparesEqual(lhs, rhs);
    }
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT MessageTypes *field2_p();
    QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT void setField2_p(MessageTypes *field2);
    QExplicitlySharedDataPointer<NestedMessage_QtProtobufData> dptr;
};
namespace NestedMessage_QtProtobufNested {
Q_NAMESPACE_EXPORT(QPB_TST_QTPROTOBUFGEN_EXTRA_NAMESPACE_EXPORT)

enum class QtProtobufFieldEnum {
    Field1ProtoFieldNumber = 1,
    Field2ProtoFieldNumber = 2,
};
Q_ENUM_NS(QtProtobufFieldEnum)

} // namespace NestedMessage_QtProtobufNested
} // namespace MessageNestedTypes_QtProtobufNested
} // namespace MyTopLevelNamespace::qt::protobuf

#endif // QTPROTOBUFGEN_QPB_H
