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

#ifndef API_QPB_H
#define API_QPB_H

#include "google/protobuf/source_context.qpb.h"
#include "google/protobuf/type.qpb.h"
#include "protobufwellknowntypes_exports.qpb.h"

#include <QtProtobuf/qprotobuflazymessagepointer.h>
#include <QtProtobuf/qprotobufmessage.h>
#include <QtProtobuf/qprotobufobject.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>

namespace google::protobuf {
class Api;
namespace Api_QtProtobufNested {
enum class QtProtobufFieldEnum;
} // namespace Api_QtProtobufNested

class Method;
namespace Method_QtProtobufNested {
enum class QtProtobufFieldEnum;
} // namespace Method_QtProtobufNested

class Mixin;
namespace Mixin_QtProtobufNested {
enum class QtProtobufFieldEnum;
} // namespace Mixin_QtProtobufNested

#ifdef QT_USE_PROTOBUF_LIST_ALIASES
using ApiRepeated = QList<Api>;
using MethodRepeated = QList<Method>;
using MixinRepeated = QList<Mixin>;
#endif // QT_USE_PROTOBUF_LIST_ALIASES

class Api_QtProtobufData;
class Api : public QProtobufMessage
{
    Q_PROTOBUF_OBJECT_EXPORT(QPB_PROTOBUFWELLKNOWNTYPES_EXPORT)
    Q_PROPERTY(QString name READ name WRITE setName SCRIPTABLE true)
    Q_PROPERTY(QList<google::protobuf::Method> methodsData READ methods WRITE setMethods SCRIPTABLE true)
    Q_PROPERTY(QList<google::protobuf::Option> optionsData READ options WRITE setOptions SCRIPTABLE true)
    Q_PROPERTY(QString version READ version WRITE setVersion SCRIPTABLE true)
    Q_PROPERTY(google::protobuf::SourceContext *sourceContext_p READ sourceContext_p WRITE setSourceContext_p SCRIPTABLE false)
    Q_PROPERTY(bool hasSourceContext READ hasSourceContext)
    Q_PROPERTY(QList<google::protobuf::Mixin> mixinsData READ mixins WRITE setMixins SCRIPTABLE true)
    Q_PROPERTY(google::protobuf::SyntaxGadget::Syntax syntax READ syntax WRITE setSyntax SCRIPTABLE true)

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

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT const QString &name() const &;

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT const QList<Method> &methods() const &;

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT const QList<Option> &options() const &;

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT const QString &version() const &;

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT bool hasSourceContext() const;
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT const SourceContext &sourceContext() const &;
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void clearSourceContext();

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT const QList<Mixin> &mixins() const &;

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT SyntaxGadget::Syntax syntax() const;
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setName(const QString &name);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setName(QString &&name);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setMethods(const QList<Method> &methods);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setMethods(QList<Method> &&methods);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setOptions(const QList<Option> &options);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setOptions(QList<Option> &&options);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setVersion(const QString &version);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setVersion(QString &&version);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setSourceContext(const SourceContext &sourceContext);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setSourceContext(SourceContext &&sourceContext);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setMixins(const QList<Mixin> &mixins);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setMixins(QList<Mixin> &&mixins);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setSyntax(SyntaxGadget::Syntax syntax);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT static void registerTypes();

private:
    friend QPB_PROTOBUFWELLKNOWNTYPES_EXPORT bool comparesEqual(const Api &lhs, const Api &rhs) noexcept;
    friend bool operator==(const Api &lhs, const Api &rhs) noexcept
    {
        return comparesEqual(lhs, rhs);
    }
    friend bool operator!=(const Api &lhs, const Api &rhs) noexcept
    {
        return !comparesEqual(lhs, rhs);
    }
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT SourceContext *sourceContext_p();
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setSourceContext_p(SourceContext *sourceContext);
    QExplicitlySharedDataPointer<Api_QtProtobufData> dptr;
};
namespace Api_QtProtobufNested {
Q_NAMESPACE_EXPORT(QPB_PROTOBUFWELLKNOWNTYPES_EXPORT)

enum class QtProtobufFieldEnum {
    NameProtoFieldNumber = 1,
    MethodsProtoFieldNumber = 2,
    OptionsProtoFieldNumber = 3,
    VersionProtoFieldNumber = 4,
    SourceContextProtoFieldNumber = 5,
    MixinsProtoFieldNumber = 6,
    SyntaxProtoFieldNumber = 7,
};
Q_ENUM_NS(QtProtobufFieldEnum)

} // namespace Api_QtProtobufNested

class Method_QtProtobufData;
class Method : public QProtobufMessage
{
    Q_PROTOBUF_OBJECT_EXPORT(QPB_PROTOBUFWELLKNOWNTYPES_EXPORT)
    Q_PROPERTY(QString name READ name WRITE setName SCRIPTABLE true)
    Q_PROPERTY(QString requestTypeUrl READ requestTypeUrl WRITE setRequestTypeUrl SCRIPTABLE true)
    Q_PROPERTY(bool requestStreaming READ requestStreaming WRITE setRequestStreaming SCRIPTABLE true)
    Q_PROPERTY(QString responseTypeUrl READ responseTypeUrl WRITE setResponseTypeUrl SCRIPTABLE true)
    Q_PROPERTY(bool responseStreaming READ responseStreaming WRITE setResponseStreaming SCRIPTABLE true)
    Q_PROPERTY(QList<google::protobuf::Option> optionsData READ options WRITE setOptions SCRIPTABLE true)
    Q_PROPERTY(google::protobuf::SyntaxGadget::Syntax syntax READ syntax WRITE setSyntax SCRIPTABLE true)

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

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT const QString &name() const &;

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT const QString &requestTypeUrl() const &;

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT bool requestStreaming() const;

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT const QString &responseTypeUrl() const &;

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT bool responseStreaming() const;

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT const QList<Option> &options() const &;

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT SyntaxGadget::Syntax syntax() const;
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setName(const QString &name);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setName(QString &&name);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setRequestTypeUrl(const QString &requestTypeUrl);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setRequestTypeUrl(QString &&requestTypeUrl);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setRequestStreaming(bool requestStreaming);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setResponseTypeUrl(const QString &responseTypeUrl);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setResponseTypeUrl(QString &&responseTypeUrl);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setResponseStreaming(bool responseStreaming);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setOptions(const QList<Option> &options);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setOptions(QList<Option> &&options);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setSyntax(SyntaxGadget::Syntax syntax);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT static void registerTypes();

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

enum class QtProtobufFieldEnum {
    NameProtoFieldNumber = 1,
    RequestTypeUrlProtoFieldNumber = 2,
    RequestStreamingProtoFieldNumber = 3,
    ResponseTypeUrlProtoFieldNumber = 4,
    ResponseStreamingProtoFieldNumber = 5,
    OptionsProtoFieldNumber = 6,
    SyntaxProtoFieldNumber = 7,
};
Q_ENUM_NS(QtProtobufFieldEnum)

} // namespace Method_QtProtobufNested

class Mixin_QtProtobufData;
class Mixin : public QProtobufMessage
{
    Q_PROTOBUF_OBJECT_EXPORT(QPB_PROTOBUFWELLKNOWNTYPES_EXPORT)
    Q_PROPERTY(QString name READ name WRITE setName SCRIPTABLE true)
    Q_PROPERTY(QString root READ root WRITE setRoot SCRIPTABLE true)

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

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT const QString &name() const &;

    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT const QString &root() const &;
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setName(const QString &name);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setName(QString &&name);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setRoot(const QString &root);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT void setRoot(QString &&root);
    QPB_PROTOBUFWELLKNOWNTYPES_EXPORT static void registerTypes();

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

enum class QtProtobufFieldEnum {
    NameProtoFieldNumber = 1,
    RootProtoFieldNumber = 2,
};
Q_ENUM_NS(QtProtobufFieldEnum)

} // namespace Mixin_QtProtobufNested
} // namespace google::protobuf

#endif // API_QPB_H
