/* 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 <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;
using ApiRepeated = QList<Api>;
namespace Api_QtProtobufNested {
enum class QtProtobufFieldEnum;
} // namespace Api_QtProtobufNested

class Method;
using MethodRepeated = QList<Method>;
namespace Method_QtProtobufNested {
enum class QtProtobufFieldEnum;
} // namespace Method_QtProtobufNested

class Mixin;
using MixinRepeated = QList<Mixin>;
namespace Mixin_QtProtobufNested {
enum class QtProtobufFieldEnum;
} // namespace Mixin_QtProtobufNested


class Api_QtProtobufData;
class Api : public QProtobufMessage
{
    Q_PROTOBUF_OBJECT
    Q_PROPERTY(QString name READ name WRITE setName SCRIPTABLE true)
    Q_PROPERTY(google::protobuf::MethodRepeated methodsData READ methods WRITE setMethods SCRIPTABLE true)
    Q_PROPERTY(google::protobuf::OptionRepeated 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(google::protobuf::MixinRepeated 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;
    Api();
    ~Api();
    Api(const Api &other);
    Api &operator =(const Api &other);
    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);
    }

    QString name() const;

    MethodRepeated methods() const;

    OptionRepeated options() const;

    QString version() const;

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

    MixinRepeated mixins() const;

    SyntaxGadget::Syntax syntax() const;
    void setName(const QString &name);
    void setMethods(const MethodRepeated &methods);
    void setOptions(const OptionRepeated &options);
    void setVersion(const QString &version);
    void setSourceContext(const SourceContext &sourceContext);
    void setMixins(const MixinRepeated &mixins);
    void setSyntax(const SyntaxGadget::Syntax &syntax);
    static void registerTypes();

private:
    friend 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);
    }
    SourceContext *sourceContext_p();
    void setSourceContext_p(SourceContext *sourceContext);
    QExplicitlySharedDataPointer<Api_QtProtobufData> dptr;
};
namespace Api_QtProtobufNested {
Q_NAMESPACE

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
    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(google::protobuf::OptionRepeated 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;
    Method();
    ~Method();
    Method(const Method &other);
    Method &operator =(const Method &other);
    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);
    }

    QString name() const;

    QString requestTypeUrl() const;

    bool requestStreaming() const;

    QString responseTypeUrl() const;

    bool responseStreaming() const;

    OptionRepeated options() const;

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

private:
    friend 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

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
    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;
    Mixin();
    ~Mixin();
    Mixin(const Mixin &other);
    Mixin &operator =(const Mixin &other);
    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);
    }

    QString name() const;

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

private:
    friend 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

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

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

#endif // API_QPB_H
