// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: Text.proto
// Protobuf C++ Version: 6.33.5

#ifndef Text_2eproto_2epb_2eh
#define Text_2eproto_2epb_2eh

#include <limits>
#include <string>
#include <type_traits>
#include <utility>

#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 6033005
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/message.h"
#include "google/protobuf/message_lite.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/map.h"  // IWYU pragma: export
#include "google/protobuf/map_type_handler.h"  // IWYU pragma: export
#include "google/protobuf/map_entry.h"
#include "google/protobuf/map_field.h"
#include "google/protobuf/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"

#define PROTOBUF_INTERNAL_EXPORT_Text_2eproto

namespace google {
namespace protobuf {
namespace internal {
template <typename T>
::absl::string_view GetAnyMessageName();
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct TableStruct_Text_2eproto {
  static const ::uint32_t offsets[];
};
extern "C" {
extern const ::google::protobuf::internal::DescriptorTable descriptor_table_Text_2eproto;
}  // extern "C"
namespace mojo {
namespace spec {
enum AccentStripType : int;
extern const uint32_t AccentStripType_internal_data_[];
enum AnalyzerType : int;
extern const uint32_t AnalyzerType_internal_data_[];
enum PytorchNLPModelType : int;
extern const uint32_t PytorchNLPModelType_internal_data_[];
class CountVectorizerOp;
struct CountVectorizerOpDefaultTypeInternal;
extern CountVectorizerOpDefaultTypeInternal _CountVectorizerOp_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull CountVectorizerOp_class_data_;
class KerasTokenizerOp;
struct KerasTokenizerOpDefaultTypeInternal;
extern KerasTokenizerOpDefaultTypeInternal _KerasTokenizerOp_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull KerasTokenizerOp_class_data_;
class PytorchTokenizerOp;
struct PytorchTokenizerOpDefaultTypeInternal;
extern PytorchTokenizerOpDefaultTypeInternal _PytorchTokenizerOp_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull PytorchTokenizerOp_class_data_;
class Vocabulary;
struct VocabularyDefaultTypeInternal;
extern VocabularyDefaultTypeInternal _Vocabulary_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Vocabulary_class_data_;
class Vocabulary_VocEntry_DoNotUse;
struct Vocabulary_VocEntry_DoNotUseDefaultTypeInternal;
extern Vocabulary_VocEntry_DoNotUseDefaultTypeInternal _Vocabulary_VocEntry_DoNotUse_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Vocabulary_VocEntry_DoNotUse_class_data_;
}  // namespace spec
}  // namespace mojo
namespace google {
namespace protobuf {
template <>
internal::EnumTraitsT<::mojo::spec::AccentStripType_internal_data_>
    internal::EnumTraitsImpl::value<::mojo::spec::AccentStripType>;
template <>
internal::EnumTraitsT<::mojo::spec::AnalyzerType_internal_data_>
    internal::EnumTraitsImpl::value<::mojo::spec::AnalyzerType>;
template <>
internal::EnumTraitsT<::mojo::spec::PytorchNLPModelType_internal_data_>
    internal::EnumTraitsImpl::value<::mojo::spec::PytorchNLPModelType>;
}  // namespace protobuf
}  // namespace google

namespace mojo {
namespace spec {
enum AnalyzerType : int {
  UNKNOWN_ANALYZER_TYPE = 0,
  WORD = 1,
  AnalyzerType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  AnalyzerType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t AnalyzerType_internal_data_[];
inline constexpr AnalyzerType AnalyzerType_MIN =
    static_cast<AnalyzerType>(0);
inline constexpr AnalyzerType AnalyzerType_MAX =
    static_cast<AnalyzerType>(1);
inline bool AnalyzerType_IsValid(int value) {
  return 0 <= value && value <= 1;
}
inline constexpr int AnalyzerType_ARRAYSIZE = 1 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL AnalyzerType_descriptor();
template <typename T>
const ::std::string& AnalyzerType_Name(T value) {
  static_assert(::std::is_same<T, AnalyzerType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to AnalyzerType_Name().");
  return AnalyzerType_Name(static_cast<AnalyzerType>(value));
}
template <>
inline const ::std::string& AnalyzerType_Name(AnalyzerType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<AnalyzerType_descriptor, 0, 1>(
      static_cast<int>(value));
}
inline bool AnalyzerType_Parse(
    ::absl::string_view name, AnalyzerType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<AnalyzerType>(AnalyzerType_descriptor(), name,
                                           value);
}
enum AccentStripType : int {
  UNKNOWN_ACCENT_STRIP_TYPE = 0,
  UNICODE = 1,
  AccentStripType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  AccentStripType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t AccentStripType_internal_data_[];
inline constexpr AccentStripType AccentStripType_MIN =
    static_cast<AccentStripType>(0);
inline constexpr AccentStripType AccentStripType_MAX =
    static_cast<AccentStripType>(1);
inline bool AccentStripType_IsValid(int value) {
  return 0 <= value && value <= 1;
}
inline constexpr int AccentStripType_ARRAYSIZE = 1 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL AccentStripType_descriptor();
template <typename T>
const ::std::string& AccentStripType_Name(T value) {
  static_assert(::std::is_same<T, AccentStripType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to AccentStripType_Name().");
  return AccentStripType_Name(static_cast<AccentStripType>(value));
}
template <>
inline const ::std::string& AccentStripType_Name(AccentStripType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<AccentStripType_descriptor, 0, 1>(
      static_cast<int>(value));
}
inline bool AccentStripType_Parse(
    ::absl::string_view name, AccentStripType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<AccentStripType>(AccentStripType_descriptor(), name,
                                           value);
}
enum PytorchNLPModelType : int {
  UNKNOWN_PYTORCH_MODEL_TYPE = 0,
  BERT = 1,
  XLNET = 2,
  XLM = 3,
  ROBERTA = 4,
  DISTILBERT = 5,
  ALBERT = 6,
  CAMEMBERT = 7,
  XLM_ROBERTA = 8,
  DeBERTaV3 = 9,
  PytorchNLPModelType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  PytorchNLPModelType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t PytorchNLPModelType_internal_data_[];
inline constexpr PytorchNLPModelType PytorchNLPModelType_MIN =
    static_cast<PytorchNLPModelType>(0);
inline constexpr PytorchNLPModelType PytorchNLPModelType_MAX =
    static_cast<PytorchNLPModelType>(9);
inline bool PytorchNLPModelType_IsValid(int value) {
  return 0 <= value && value <= 9;
}
inline constexpr int PytorchNLPModelType_ARRAYSIZE = 9 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL PytorchNLPModelType_descriptor();
template <typename T>
const ::std::string& PytorchNLPModelType_Name(T value) {
  static_assert(::std::is_same<T, PytorchNLPModelType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to PytorchNLPModelType_Name().");
  return PytorchNLPModelType_Name(static_cast<PytorchNLPModelType>(value));
}
template <>
inline const ::std::string& PytorchNLPModelType_Name(PytorchNLPModelType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<PytorchNLPModelType_descriptor, 0, 9>(
      static_cast<int>(value));
}
inline bool PytorchNLPModelType_Parse(
    ::absl::string_view name, PytorchNLPModelType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<PytorchNLPModelType>(PytorchNLPModelType_descriptor(), name,
                                           value);
}

// ===================================================================


// -------------------------------------------------------------------

class Vocabulary_VocEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<::std::string, ::int32_t,
                             ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                             ::google::protobuf::internal::WireFormatLite::TYPE_INT32> {
 public:
  using SuperType =
      ::google::protobuf::internal::MapEntry<::std::string, ::int32_t,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_INT32>;
  Vocabulary_VocEntry_DoNotUse();
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Vocabulary_VocEntry_DoNotUse(::google::protobuf::internal::ConstantInitialized);
  explicit Vocabulary_VocEntry_DoNotUse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr const void* PROTOBUF_NONNULL internal_default_instance() {
    return &_Vocabulary_VocEntry_DoNotUse_default_instance_;
  }


  static constexpr auto InternalGenerateClassData_();

 private:
  friend class ::google::protobuf::MessageLite;
  friend struct ::TableStruct_Text_2eproto;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 41,
                                   2>
      _table_;

  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();
};
extern const ::google::protobuf::internal::ClassDataFull Vocabulary_VocEntry_DoNotUse_class_data_;
// -------------------------------------------------------------------

class PytorchTokenizerOp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.PytorchTokenizerOp) */ {
 public:
  inline PytorchTokenizerOp() : PytorchTokenizerOp(nullptr) {}
  ~PytorchTokenizerOp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(PytorchTokenizerOp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(PytorchTokenizerOp));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR PytorchTokenizerOp(::google::protobuf::internal::ConstantInitialized);

  inline PytorchTokenizerOp(const PytorchTokenizerOp& from) : PytorchTokenizerOp(nullptr, from) {}
  inline PytorchTokenizerOp(PytorchTokenizerOp&& from) noexcept
      : PytorchTokenizerOp(nullptr, ::std::move(from)) {}
  inline PytorchTokenizerOp& operator=(const PytorchTokenizerOp& from) {
    CopyFrom(from);
    return *this;
  }
  inline PytorchTokenizerOp& operator=(PytorchTokenizerOp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const PytorchTokenizerOp& default_instance() {
    return *reinterpret_cast<const PytorchTokenizerOp*>(
        &_PytorchTokenizerOp_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(PytorchTokenizerOp& a, PytorchTokenizerOp& b) { a.Swap(&b); }
  inline void Swap(PytorchTokenizerOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PytorchTokenizerOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  PytorchTokenizerOp* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<PytorchTokenizerOp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const PytorchTokenizerOp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const PytorchTokenizerOp& from) { PytorchTokenizerOp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(PytorchTokenizerOp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.PytorchTokenizerOp"; }

  explicit PytorchTokenizerOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  PytorchTokenizerOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const PytorchTokenizerOp& from);
  PytorchTokenizerOp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, PytorchTokenizerOp&& from) noexcept
      : PytorchTokenizerOp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kModelNameFieldNumber = 2,
    kModelTypeFieldNumber = 1,
    kMaxSeqLengthFieldNumber = 3,
    kAddSpecialTokensFieldNumber = 4,
    kPadToMaxLengthFieldNumber = 5,
  };
  // string model_name = 2;
  void clear_model_name() ;
  const ::std::string& model_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_model_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_model_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_model_name();
  void set_allocated_model_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_model_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_model_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_model_name();

  public:
  // .mojo.spec.PytorchNLPModelType model_type = 1;
  void clear_model_type() ;
  ::mojo::spec::PytorchNLPModelType model_type() const;
  void set_model_type(::mojo::spec::PytorchNLPModelType value);

  private:
  ::mojo::spec::PytorchNLPModelType _internal_model_type() const;
  void _internal_set_model_type(::mojo::spec::PytorchNLPModelType value);

  public:
  // int32 max_seq_length = 3;
  void clear_max_seq_length() ;
  ::int32_t max_seq_length() const;
  void set_max_seq_length(::int32_t value);

  private:
  ::int32_t _internal_max_seq_length() const;
  void _internal_set_max_seq_length(::int32_t value);

  public:
  // bool add_special_tokens = 4;
  void clear_add_special_tokens() ;
  bool add_special_tokens() const;
  void set_add_special_tokens(bool value);

  private:
  bool _internal_add_special_tokens() const;
  void _internal_set_add_special_tokens(bool value);

  public:
  // bool pad_to_max_length = 5;
  void clear_pad_to_max_length() ;
  bool pad_to_max_length() const;
  void set_pad_to_max_length(bool value);

  private:
  bool _internal_pad_to_max_length() const;
  void _internal_set_pad_to_max_length(bool value);

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.PytorchTokenizerOp)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 5,
                                   0, 47,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const PytorchTokenizerOp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr model_name_;
    int model_type_;
    ::int32_t max_seq_length_;
    bool add_special_tokens_;
    bool pad_to_max_length_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Text_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull PytorchTokenizerOp_class_data_;
// -------------------------------------------------------------------

class KerasTokenizerOp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.KerasTokenizerOp) */ {
 public:
  inline KerasTokenizerOp() : KerasTokenizerOp(nullptr) {}
  ~KerasTokenizerOp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(KerasTokenizerOp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(KerasTokenizerOp));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR KerasTokenizerOp(::google::protobuf::internal::ConstantInitialized);

  inline KerasTokenizerOp(const KerasTokenizerOp& from) : KerasTokenizerOp(nullptr, from) {}
  inline KerasTokenizerOp(KerasTokenizerOp&& from) noexcept
      : KerasTokenizerOp(nullptr, ::std::move(from)) {}
  inline KerasTokenizerOp& operator=(const KerasTokenizerOp& from) {
    CopyFrom(from);
    return *this;
  }
  inline KerasTokenizerOp& operator=(KerasTokenizerOp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const KerasTokenizerOp& default_instance() {
    return *reinterpret_cast<const KerasTokenizerOp*>(
        &_KerasTokenizerOp_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(KerasTokenizerOp& a, KerasTokenizerOp& b) { a.Swap(&b); }
  inline void Swap(KerasTokenizerOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(KerasTokenizerOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  KerasTokenizerOp* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<KerasTokenizerOp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const KerasTokenizerOp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const KerasTokenizerOp& from) { KerasTokenizerOp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(KerasTokenizerOp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.KerasTokenizerOp"; }

  explicit KerasTokenizerOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  KerasTokenizerOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const KerasTokenizerOp& from);
  KerasTokenizerOp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, KerasTokenizerOp&& from) noexcept
      : KerasTokenizerOp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kFilterFieldNumber = 3,
    kOovTokenFieldNumber = 4,
    kVocabularyFileNameFieldNumber = 5,
    kLowerFieldNumber = 1,
    kCharLevelFieldNumber = 2,
    kNumWordsFieldNumber = 6,
  };
  // string filter = 3;
  void clear_filter() ;
  const ::std::string& filter() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_filter(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_filter();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_filter();
  void set_allocated_filter(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_filter() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_filter(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_filter();

  public:
  // string oov_token = 4;
  void clear_oov_token() ;
  const ::std::string& oov_token() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_oov_token(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_oov_token();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_oov_token();
  void set_allocated_oov_token(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_oov_token() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_oov_token(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_oov_token();

  public:
  // string vocabulary_file_name = 5;
  void clear_vocabulary_file_name() ;
  const ::std::string& vocabulary_file_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_vocabulary_file_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_vocabulary_file_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_vocabulary_file_name();
  void set_allocated_vocabulary_file_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_vocabulary_file_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_vocabulary_file_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_vocabulary_file_name();

  public:
  // bool lower = 1;
  void clear_lower() ;
  bool lower() const;
  void set_lower(bool value);

  private:
  bool _internal_lower() const;
  void _internal_set_lower(bool value);

  public:
  // bool char_level = 2;
  void clear_char_level() ;
  bool char_level() const;
  void set_char_level(bool value);

  private:
  bool _internal_char_level() const;
  void _internal_set_char_level(bool value);

  public:
  // int32 num_words = 6;
  void clear_num_words() ;
  ::int32_t num_words() const;
  void set_num_words(::int32_t value);

  private:
  ::int32_t _internal_num_words() const;
  void _internal_set_num_words(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.KerasTokenizerOp)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 6,
                                   0, 70,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const KerasTokenizerOp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr filter_;
    ::google::protobuf::internal::ArenaStringPtr oov_token_;
    ::google::protobuf::internal::ArenaStringPtr vocabulary_file_name_;
    bool lower_;
    bool char_level_;
    ::int32_t num_words_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Text_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull KerasTokenizerOp_class_data_;
// -------------------------------------------------------------------

class CountVectorizerOp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.CountVectorizerOp) */ {
 public:
  inline CountVectorizerOp() : CountVectorizerOp(nullptr) {}
  ~CountVectorizerOp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(CountVectorizerOp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(CountVectorizerOp));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR CountVectorizerOp(::google::protobuf::internal::ConstantInitialized);

  inline CountVectorizerOp(const CountVectorizerOp& from) : CountVectorizerOp(nullptr, from) {}
  inline CountVectorizerOp(CountVectorizerOp&& from) noexcept
      : CountVectorizerOp(nullptr, ::std::move(from)) {}
  inline CountVectorizerOp& operator=(const CountVectorizerOp& from) {
    CopyFrom(from);
    return *this;
  }
  inline CountVectorizerOp& operator=(CountVectorizerOp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CountVectorizerOp& default_instance() {
    return *reinterpret_cast<const CountVectorizerOp*>(
        &_CountVectorizerOp_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(CountVectorizerOp& a, CountVectorizerOp& b) { a.Swap(&b); }
  inline void Swap(CountVectorizerOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CountVectorizerOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CountVectorizerOp* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<CountVectorizerOp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const CountVectorizerOp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const CountVectorizerOp& from) { CountVectorizerOp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(CountVectorizerOp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.CountVectorizerOp"; }

  explicit CountVectorizerOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  CountVectorizerOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const CountVectorizerOp& from);
  CountVectorizerOp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, CountVectorizerOp&& from) noexcept
      : CountVectorizerOp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kStopWordsFieldNumber = 9,
    kVocabularyFileNameFieldNumber = 5,
    kTokenPatternFieldNumber = 8,
    kBinaryFieldNumber = 1,
    kLowercaseFieldNumber = 2,
    kNgramMinFieldNumber = 3,
    kNgramMaxFieldNumber = 4,
    kAnalyzerFieldNumber = 6,
    kStripFieldNumber = 7,
  };
  // repeated string stop_words = 9;
  int stop_words_size() const;
  private:
  int _internal_stop_words_size() const;

  public:
  void clear_stop_words() ;
  const ::std::string& stop_words(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_stop_words(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_stop_words(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_stop_words();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_stop_words(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& stop_words() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_stop_words();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_stop_words() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_stop_words();

  public:
  // string vocabulary_file_name = 5;
  void clear_vocabulary_file_name() ;
  const ::std::string& vocabulary_file_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_vocabulary_file_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_vocabulary_file_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_vocabulary_file_name();
  void set_allocated_vocabulary_file_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_vocabulary_file_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_vocabulary_file_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_vocabulary_file_name();

  public:
  // string token_pattern = 8;
  void clear_token_pattern() ;
  const ::std::string& token_pattern() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_token_pattern(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_token_pattern();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_token_pattern();
  void set_allocated_token_pattern(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_token_pattern() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_token_pattern(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_token_pattern();

  public:
  // bool binary = 1;
  void clear_binary() ;
  bool binary() const;
  void set_binary(bool value);

  private:
  bool _internal_binary() const;
  void _internal_set_binary(bool value);

  public:
  // bool lowercase = 2;
  void clear_lowercase() ;
  bool lowercase() const;
  void set_lowercase(bool value);

  private:
  bool _internal_lowercase() const;
  void _internal_set_lowercase(bool value);

  public:
  // int32 ngram_min = 3;
  void clear_ngram_min() ;
  ::int32_t ngram_min() const;
  void set_ngram_min(::int32_t value);

  private:
  ::int32_t _internal_ngram_min() const;
  void _internal_set_ngram_min(::int32_t value);

  public:
  // int32 ngram_max = 4;
  void clear_ngram_max() ;
  ::int32_t ngram_max() const;
  void set_ngram_max(::int32_t value);

  private:
  ::int32_t _internal_ngram_max() const;
  void _internal_set_ngram_max(::int32_t value);

  public:
  // .mojo.spec.AnalyzerType analyzer = 6;
  void clear_analyzer() ;
  ::mojo::spec::AnalyzerType analyzer() const;
  void set_analyzer(::mojo::spec::AnalyzerType value);

  private:
  ::mojo::spec::AnalyzerType _internal_analyzer() const;
  void _internal_set_analyzer(::mojo::spec::AnalyzerType value);

  public:
  // .mojo.spec.AccentStripType strip = 7;
  void clear_strip() ;
  ::mojo::spec::AccentStripType strip() const;
  void set_strip(::mojo::spec::AccentStripType value);

  private:
  ::mojo::spec::AccentStripType _internal_strip() const;
  void _internal_set_strip(::mojo::spec::AccentStripType value);

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.CountVectorizerOp)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<4, 9,
                                   0, 87,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CountVectorizerOp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> stop_words_;
    ::google::protobuf::internal::ArenaStringPtr vocabulary_file_name_;
    ::google::protobuf::internal::ArenaStringPtr token_pattern_;
    bool binary_;
    bool lowercase_;
    ::int32_t ngram_min_;
    ::int32_t ngram_max_;
    int analyzer_;
    int strip_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Text_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull CountVectorizerOp_class_data_;
// -------------------------------------------------------------------

class Vocabulary final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.Vocabulary) */ {
 public:
  inline Vocabulary() : Vocabulary(nullptr) {}
  ~Vocabulary() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Vocabulary* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Vocabulary));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Vocabulary(::google::protobuf::internal::ConstantInitialized);

  inline Vocabulary(const Vocabulary& from) : Vocabulary(nullptr, from) {}
  inline Vocabulary(Vocabulary&& from) noexcept
      : Vocabulary(nullptr, ::std::move(from)) {}
  inline Vocabulary& operator=(const Vocabulary& from) {
    CopyFrom(from);
    return *this;
  }
  inline Vocabulary& operator=(Vocabulary&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Vocabulary& default_instance() {
    return *reinterpret_cast<const Vocabulary*>(
        &_Vocabulary_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(Vocabulary& a, Vocabulary& b) { a.Swap(&b); }
  inline void Swap(Vocabulary* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Vocabulary* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  Vocabulary* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Vocabulary>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Vocabulary& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Vocabulary& from) { Vocabulary::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Vocabulary* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.Vocabulary"; }

  explicit Vocabulary(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Vocabulary(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Vocabulary& from);
  Vocabulary(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Vocabulary&& from) noexcept
      : Vocabulary(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kVocFieldNumber = 1,
  };
  // map<string, int32> voc = 1;
  int voc_size() const;
  private:
  int _internal_voc_size() const;

  public:
  void clear_voc() ;
  const ::google::protobuf::Map<::std::string, ::int32_t>& voc() const;
  ::google::protobuf::Map<::std::string, ::int32_t>* PROTOBUF_NONNULL mutable_voc();

  private:
  const ::google::protobuf::Map<::std::string, ::int32_t>& _internal_voc() const;
  ::google::protobuf::Map<::std::string, ::int32_t>* PROTOBUF_NONNULL _internal_mutable_voc();

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.Vocabulary)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   1, 32,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Vocabulary& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::MapField<Vocabulary_VocEntry_DoNotUse, ::std::string, ::int32_t,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_INT32>
        voc_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Text_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Vocabulary_class_data_;

// ===================================================================




// ===================================================================


#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// -------------------------------------------------------------------

// CountVectorizerOp

// bool binary = 1;
inline void CountVectorizerOp::clear_binary() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.binary_ = false;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline bool CountVectorizerOp::binary() const {
  // @@protoc_insertion_point(field_get:mojo.spec.CountVectorizerOp.binary)
  return _internal_binary();
}
inline void CountVectorizerOp::set_binary(bool value) {
  _internal_set_binary(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:mojo.spec.CountVectorizerOp.binary)
}
inline bool CountVectorizerOp::_internal_binary() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.binary_;
}
inline void CountVectorizerOp::_internal_set_binary(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.binary_ = value;
}

// bool lowercase = 2;
inline void CountVectorizerOp::clear_lowercase() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lowercase_ = false;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000010U);
}
inline bool CountVectorizerOp::lowercase() const {
  // @@protoc_insertion_point(field_get:mojo.spec.CountVectorizerOp.lowercase)
  return _internal_lowercase();
}
inline void CountVectorizerOp::set_lowercase(bool value) {
  _internal_set_lowercase(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:mojo.spec.CountVectorizerOp.lowercase)
}
inline bool CountVectorizerOp::_internal_lowercase() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.lowercase_;
}
inline void CountVectorizerOp::_internal_set_lowercase(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lowercase_ = value;
}

// int32 ngram_min = 3;
inline void CountVectorizerOp::clear_ngram_min() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ngram_min_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000020U);
}
inline ::int32_t CountVectorizerOp::ngram_min() const {
  // @@protoc_insertion_point(field_get:mojo.spec.CountVectorizerOp.ngram_min)
  return _internal_ngram_min();
}
inline void CountVectorizerOp::set_ngram_min(::int32_t value) {
  _internal_set_ngram_min(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:mojo.spec.CountVectorizerOp.ngram_min)
}
inline ::int32_t CountVectorizerOp::_internal_ngram_min() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ngram_min_;
}
inline void CountVectorizerOp::_internal_set_ngram_min(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ngram_min_ = value;
}

// int32 ngram_max = 4;
inline void CountVectorizerOp::clear_ngram_max() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ngram_max_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000040U);
}
inline ::int32_t CountVectorizerOp::ngram_max() const {
  // @@protoc_insertion_point(field_get:mojo.spec.CountVectorizerOp.ngram_max)
  return _internal_ngram_max();
}
inline void CountVectorizerOp::set_ngram_max(::int32_t value) {
  _internal_set_ngram_max(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_set:mojo.spec.CountVectorizerOp.ngram_max)
}
inline ::int32_t CountVectorizerOp::_internal_ngram_max() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ngram_max_;
}
inline void CountVectorizerOp::_internal_set_ngram_max(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ngram_max_ = value;
}

// string vocabulary_file_name = 5;
inline void CountVectorizerOp::clear_vocabulary_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.vocabulary_file_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline const ::std::string& CountVectorizerOp::vocabulary_file_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.CountVectorizerOp.vocabulary_file_name)
  return _internal_vocabulary_file_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void CountVectorizerOp::set_vocabulary_file_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.vocabulary_file_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.CountVectorizerOp.vocabulary_file_name)
}
inline ::std::string* PROTOBUF_NONNULL CountVectorizerOp::mutable_vocabulary_file_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_vocabulary_file_name();
  // @@protoc_insertion_point(field_mutable:mojo.spec.CountVectorizerOp.vocabulary_file_name)
  return _s;
}
inline const ::std::string& CountVectorizerOp::_internal_vocabulary_file_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.vocabulary_file_name_.Get();
}
inline void CountVectorizerOp::_internal_set_vocabulary_file_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.vocabulary_file_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL CountVectorizerOp::_internal_mutable_vocabulary_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.vocabulary_file_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE CountVectorizerOp::release_vocabulary_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.CountVectorizerOp.vocabulary_file_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.vocabulary_file_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.vocabulary_file_name_.Set("", GetArena());
  }
  return released;
}
inline void CountVectorizerOp::set_allocated_vocabulary_file_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.vocabulary_file_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.vocabulary_file_name_.IsDefault()) {
    _impl_.vocabulary_file_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.CountVectorizerOp.vocabulary_file_name)
}

// .mojo.spec.AnalyzerType analyzer = 6;
inline void CountVectorizerOp::clear_analyzer() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.analyzer_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000080U);
}
inline ::mojo::spec::AnalyzerType CountVectorizerOp::analyzer() const {
  // @@protoc_insertion_point(field_get:mojo.spec.CountVectorizerOp.analyzer)
  return _internal_analyzer();
}
inline void CountVectorizerOp::set_analyzer(::mojo::spec::AnalyzerType value) {
  _internal_set_analyzer(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  // @@protoc_insertion_point(field_set:mojo.spec.CountVectorizerOp.analyzer)
}
inline ::mojo::spec::AnalyzerType CountVectorizerOp::_internal_analyzer() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::mojo::spec::AnalyzerType>(_impl_.analyzer_);
}
inline void CountVectorizerOp::_internal_set_analyzer(::mojo::spec::AnalyzerType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.analyzer_ = value;
}

// .mojo.spec.AccentStripType strip = 7;
inline void CountVectorizerOp::clear_strip() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.strip_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000100U);
}
inline ::mojo::spec::AccentStripType CountVectorizerOp::strip() const {
  // @@protoc_insertion_point(field_get:mojo.spec.CountVectorizerOp.strip)
  return _internal_strip();
}
inline void CountVectorizerOp::set_strip(::mojo::spec::AccentStripType value) {
  _internal_set_strip(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  // @@protoc_insertion_point(field_set:mojo.spec.CountVectorizerOp.strip)
}
inline ::mojo::spec::AccentStripType CountVectorizerOp::_internal_strip() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::mojo::spec::AccentStripType>(_impl_.strip_);
}
inline void CountVectorizerOp::_internal_set_strip(::mojo::spec::AccentStripType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.strip_ = value;
}

// string token_pattern = 8;
inline void CountVectorizerOp::clear_token_pattern() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.token_pattern_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline const ::std::string& CountVectorizerOp::token_pattern() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.CountVectorizerOp.token_pattern)
  return _internal_token_pattern();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void CountVectorizerOp::set_token_pattern(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.token_pattern_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.CountVectorizerOp.token_pattern)
}
inline ::std::string* PROTOBUF_NONNULL CountVectorizerOp::mutable_token_pattern()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_token_pattern();
  // @@protoc_insertion_point(field_mutable:mojo.spec.CountVectorizerOp.token_pattern)
  return _s;
}
inline const ::std::string& CountVectorizerOp::_internal_token_pattern() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.token_pattern_.Get();
}
inline void CountVectorizerOp::_internal_set_token_pattern(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.token_pattern_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL CountVectorizerOp::_internal_mutable_token_pattern() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.token_pattern_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE CountVectorizerOp::release_token_pattern() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.CountVectorizerOp.token_pattern)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.token_pattern_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.token_pattern_.Set("", GetArena());
  }
  return released;
}
inline void CountVectorizerOp::set_allocated_token_pattern(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  _impl_.token_pattern_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.token_pattern_.IsDefault()) {
    _impl_.token_pattern_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.CountVectorizerOp.token_pattern)
}

// repeated string stop_words = 9;
inline int CountVectorizerOp::_internal_stop_words_size() const {
  return _internal_stop_words().size();
}
inline int CountVectorizerOp::stop_words_size() const {
  return _internal_stop_words_size();
}
inline void CountVectorizerOp::clear_stop_words() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.stop_words_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL CountVectorizerOp::add_stop_words()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_stop_words()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:mojo.spec.CountVectorizerOp.stop_words)
  return _s;
}
inline const ::std::string& CountVectorizerOp::stop_words(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.CountVectorizerOp.stop_words)
  return _internal_stop_words().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL CountVectorizerOp::mutable_stop_words(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:mojo.spec.CountVectorizerOp.stop_words)
  return _internal_mutable_stop_words()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void CountVectorizerOp::set_stop_words(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_stop_words()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:mojo.spec.CountVectorizerOp.stop_words)
}
template <typename Arg_, typename... Args_>
inline void CountVectorizerOp::add_stop_words(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_stop_words(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:mojo.spec.CountVectorizerOp.stop_words)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& CountVectorizerOp::stop_words()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.CountVectorizerOp.stop_words)
  return _internal_stop_words();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
CountVectorizerOp::mutable_stop_words() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.CountVectorizerOp.stop_words)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_stop_words();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
CountVectorizerOp::_internal_stop_words() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.stop_words_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
CountVectorizerOp::_internal_mutable_stop_words() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.stop_words_;
}

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// Vocabulary

// map<string, int32> voc = 1;
inline int Vocabulary::_internal_voc_size() const {
  return _internal_voc().size();
}
inline int Vocabulary::voc_size() const {
  return _internal_voc_size();
}
inline void Vocabulary::clear_voc() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.voc_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::google::protobuf::Map<::std::string, ::int32_t>& Vocabulary::_internal_voc() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.voc_.GetMap();
}
inline const ::google::protobuf::Map<::std::string, ::int32_t>& Vocabulary::voc() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:mojo.spec.Vocabulary.voc)
  return _internal_voc();
}
inline ::google::protobuf::Map<::std::string, ::int32_t>* PROTOBUF_NONNULL Vocabulary::_internal_mutable_voc() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.voc_.MutableMap();
}
inline ::google::protobuf::Map<::std::string, ::int32_t>* PROTOBUF_NONNULL Vocabulary::mutable_voc()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_map:mojo.spec.Vocabulary.voc)
  return _internal_mutable_voc();
}

// -------------------------------------------------------------------

// KerasTokenizerOp

// bool lower = 1;
inline void KerasTokenizerOp::clear_lower() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lower_ = false;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline bool KerasTokenizerOp::lower() const {
  // @@protoc_insertion_point(field_get:mojo.spec.KerasTokenizerOp.lower)
  return _internal_lower();
}
inline void KerasTokenizerOp::set_lower(bool value) {
  _internal_set_lower(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:mojo.spec.KerasTokenizerOp.lower)
}
inline bool KerasTokenizerOp::_internal_lower() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.lower_;
}
inline void KerasTokenizerOp::_internal_set_lower(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.lower_ = value;
}

// bool char_level = 2;
inline void KerasTokenizerOp::clear_char_level() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.char_level_ = false;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000010U);
}
inline bool KerasTokenizerOp::char_level() const {
  // @@protoc_insertion_point(field_get:mojo.spec.KerasTokenizerOp.char_level)
  return _internal_char_level();
}
inline void KerasTokenizerOp::set_char_level(bool value) {
  _internal_set_char_level(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:mojo.spec.KerasTokenizerOp.char_level)
}
inline bool KerasTokenizerOp::_internal_char_level() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.char_level_;
}
inline void KerasTokenizerOp::_internal_set_char_level(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.char_level_ = value;
}

// string filter = 3;
inline void KerasTokenizerOp::clear_filter() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.filter_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::std::string& KerasTokenizerOp::filter() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.KerasTokenizerOp.filter)
  return _internal_filter();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void KerasTokenizerOp::set_filter(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.filter_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.KerasTokenizerOp.filter)
}
inline ::std::string* PROTOBUF_NONNULL KerasTokenizerOp::mutable_filter()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_filter();
  // @@protoc_insertion_point(field_mutable:mojo.spec.KerasTokenizerOp.filter)
  return _s;
}
inline const ::std::string& KerasTokenizerOp::_internal_filter() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.filter_.Get();
}
inline void KerasTokenizerOp::_internal_set_filter(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.filter_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL KerasTokenizerOp::_internal_mutable_filter() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.filter_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE KerasTokenizerOp::release_filter() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.KerasTokenizerOp.filter)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.filter_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.filter_.Set("", GetArena());
  }
  return released;
}
inline void KerasTokenizerOp::set_allocated_filter(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.filter_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.filter_.IsDefault()) {
    _impl_.filter_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.KerasTokenizerOp.filter)
}

// string oov_token = 4;
inline void KerasTokenizerOp::clear_oov_token() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.oov_token_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline const ::std::string& KerasTokenizerOp::oov_token() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.KerasTokenizerOp.oov_token)
  return _internal_oov_token();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void KerasTokenizerOp::set_oov_token(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.oov_token_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.KerasTokenizerOp.oov_token)
}
inline ::std::string* PROTOBUF_NONNULL KerasTokenizerOp::mutable_oov_token()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_oov_token();
  // @@protoc_insertion_point(field_mutable:mojo.spec.KerasTokenizerOp.oov_token)
  return _s;
}
inline const ::std::string& KerasTokenizerOp::_internal_oov_token() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.oov_token_.Get();
}
inline void KerasTokenizerOp::_internal_set_oov_token(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.oov_token_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL KerasTokenizerOp::_internal_mutable_oov_token() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.oov_token_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE KerasTokenizerOp::release_oov_token() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.KerasTokenizerOp.oov_token)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.oov_token_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.oov_token_.Set("", GetArena());
  }
  return released;
}
inline void KerasTokenizerOp::set_allocated_oov_token(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.oov_token_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.oov_token_.IsDefault()) {
    _impl_.oov_token_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.KerasTokenizerOp.oov_token)
}

// string vocabulary_file_name = 5;
inline void KerasTokenizerOp::clear_vocabulary_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.vocabulary_file_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline const ::std::string& KerasTokenizerOp::vocabulary_file_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.KerasTokenizerOp.vocabulary_file_name)
  return _internal_vocabulary_file_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void KerasTokenizerOp::set_vocabulary_file_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.vocabulary_file_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.KerasTokenizerOp.vocabulary_file_name)
}
inline ::std::string* PROTOBUF_NONNULL KerasTokenizerOp::mutable_vocabulary_file_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_vocabulary_file_name();
  // @@protoc_insertion_point(field_mutable:mojo.spec.KerasTokenizerOp.vocabulary_file_name)
  return _s;
}
inline const ::std::string& KerasTokenizerOp::_internal_vocabulary_file_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.vocabulary_file_name_.Get();
}
inline void KerasTokenizerOp::_internal_set_vocabulary_file_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.vocabulary_file_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL KerasTokenizerOp::_internal_mutable_vocabulary_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.vocabulary_file_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE KerasTokenizerOp::release_vocabulary_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.KerasTokenizerOp.vocabulary_file_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.vocabulary_file_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.vocabulary_file_name_.Set("", GetArena());
  }
  return released;
}
inline void KerasTokenizerOp::set_allocated_vocabulary_file_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  _impl_.vocabulary_file_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.vocabulary_file_name_.IsDefault()) {
    _impl_.vocabulary_file_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.KerasTokenizerOp.vocabulary_file_name)
}

// int32 num_words = 6;
inline void KerasTokenizerOp::clear_num_words() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_words_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000020U);
}
inline ::int32_t KerasTokenizerOp::num_words() const {
  // @@protoc_insertion_point(field_get:mojo.spec.KerasTokenizerOp.num_words)
  return _internal_num_words();
}
inline void KerasTokenizerOp::set_num_words(::int32_t value) {
  _internal_set_num_words(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:mojo.spec.KerasTokenizerOp.num_words)
}
inline ::int32_t KerasTokenizerOp::_internal_num_words() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_words_;
}
inline void KerasTokenizerOp::_internal_set_num_words(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_words_ = value;
}

// -------------------------------------------------------------------

// PytorchTokenizerOp

// .mojo.spec.PytorchNLPModelType model_type = 1;
inline void PytorchTokenizerOp::clear_model_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.model_type_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::mojo::spec::PytorchNLPModelType PytorchTokenizerOp::model_type() const {
  // @@protoc_insertion_point(field_get:mojo.spec.PytorchTokenizerOp.model_type)
  return _internal_model_type();
}
inline void PytorchTokenizerOp::set_model_type(::mojo::spec::PytorchNLPModelType value) {
  _internal_set_model_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:mojo.spec.PytorchTokenizerOp.model_type)
}
inline ::mojo::spec::PytorchNLPModelType PytorchTokenizerOp::_internal_model_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::mojo::spec::PytorchNLPModelType>(_impl_.model_type_);
}
inline void PytorchTokenizerOp::_internal_set_model_type(::mojo::spec::PytorchNLPModelType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.model_type_ = value;
}

// string model_name = 2;
inline void PytorchTokenizerOp::clear_model_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.model_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::std::string& PytorchTokenizerOp::model_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.PytorchTokenizerOp.model_name)
  return _internal_model_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void PytorchTokenizerOp::set_model_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.model_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.PytorchTokenizerOp.model_name)
}
inline ::std::string* PROTOBUF_NONNULL PytorchTokenizerOp::mutable_model_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_model_name();
  // @@protoc_insertion_point(field_mutable:mojo.spec.PytorchTokenizerOp.model_name)
  return _s;
}
inline const ::std::string& PytorchTokenizerOp::_internal_model_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.model_name_.Get();
}
inline void PytorchTokenizerOp::_internal_set_model_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.model_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL PytorchTokenizerOp::_internal_mutable_model_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.model_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE PytorchTokenizerOp::release_model_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.PytorchTokenizerOp.model_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.model_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.model_name_.Set("", GetArena());
  }
  return released;
}
inline void PytorchTokenizerOp::set_allocated_model_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.model_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.model_name_.IsDefault()) {
    _impl_.model_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.PytorchTokenizerOp.model_name)
}

// int32 max_seq_length = 3;
inline void PytorchTokenizerOp::clear_max_seq_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.max_seq_length_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::int32_t PytorchTokenizerOp::max_seq_length() const {
  // @@protoc_insertion_point(field_get:mojo.spec.PytorchTokenizerOp.max_seq_length)
  return _internal_max_seq_length();
}
inline void PytorchTokenizerOp::set_max_seq_length(::int32_t value) {
  _internal_set_max_seq_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:mojo.spec.PytorchTokenizerOp.max_seq_length)
}
inline ::int32_t PytorchTokenizerOp::_internal_max_seq_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.max_seq_length_;
}
inline void PytorchTokenizerOp::_internal_set_max_seq_length(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.max_seq_length_ = value;
}

// bool add_special_tokens = 4;
inline void PytorchTokenizerOp::clear_add_special_tokens() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.add_special_tokens_ = false;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline bool PytorchTokenizerOp::add_special_tokens() const {
  // @@protoc_insertion_point(field_get:mojo.spec.PytorchTokenizerOp.add_special_tokens)
  return _internal_add_special_tokens();
}
inline void PytorchTokenizerOp::set_add_special_tokens(bool value) {
  _internal_set_add_special_tokens(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:mojo.spec.PytorchTokenizerOp.add_special_tokens)
}
inline bool PytorchTokenizerOp::_internal_add_special_tokens() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.add_special_tokens_;
}
inline void PytorchTokenizerOp::_internal_set_add_special_tokens(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.add_special_tokens_ = value;
}

// bool pad_to_max_length = 5;
inline void PytorchTokenizerOp::clear_pad_to_max_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pad_to_max_length_ = false;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000010U);
}
inline bool PytorchTokenizerOp::pad_to_max_length() const {
  // @@protoc_insertion_point(field_get:mojo.spec.PytorchTokenizerOp.pad_to_max_length)
  return _internal_pad_to_max_length();
}
inline void PytorchTokenizerOp::set_pad_to_max_length(bool value) {
  _internal_set_pad_to_max_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:mojo.spec.PytorchTokenizerOp.pad_to_max_length)
}
inline bool PytorchTokenizerOp::_internal_pad_to_max_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.pad_to_max_length_;
}
inline void PytorchTokenizerOp::_internal_set_pad_to_max_length(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pad_to_max_length_ = value;
}

#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)
}  // namespace spec
}  // namespace mojo


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::mojo::spec::AnalyzerType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::mojo::spec::AnalyzerType>() {
  return ::mojo::spec::AnalyzerType_descriptor();
}
template <>
struct is_proto_enum<::mojo::spec::AccentStripType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::mojo::spec::AccentStripType>() {
  return ::mojo::spec::AccentStripType_descriptor();
}
template <>
struct is_proto_enum<::mojo::spec::PytorchNLPModelType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::mojo::spec::PytorchNLPModelType>() {
  return ::mojo::spec::PytorchNLPModelType_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // Text_2eproto_2epb_2eh
