// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: OneHotEncoder.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_OneHotEncoder_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_OneHotEncoder_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3019000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 3019000 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/port_undef.inc>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/arenastring.h>
#include <google/protobuf/generated_message_table_driven.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/metadata_lite.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/generated_enum_util.h>
#include "DataStructures.pb.h"
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_OneHotEncoder_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_OneHotEncoder_2eproto {
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[1]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
  static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
  static const uint32_t offsets[];
};
namespace CoreML {
namespace Specification {
class OneHotEncoder;
struct OneHotEncoderDefaultTypeInternal;
extern OneHotEncoderDefaultTypeInternal _OneHotEncoder_default_instance_;
}  // namespace Specification
}  // namespace CoreML
PROTOBUF_NAMESPACE_OPEN
template<> ::CoreML::Specification::OneHotEncoder* Arena::CreateMaybeMessage<::CoreML::Specification::OneHotEncoder>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace CoreML {
namespace Specification {

enum OneHotEncoder_HandleUnknown : int {
  OneHotEncoder_HandleUnknown_ErrorOnUnknown = 0,
  OneHotEncoder_HandleUnknown_IgnoreUnknown = 1,
  OneHotEncoder_HandleUnknown_OneHotEncoder_HandleUnknown_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(),
  OneHotEncoder_HandleUnknown_OneHotEncoder_HandleUnknown_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::max()
};
bool OneHotEncoder_HandleUnknown_IsValid(int value);
constexpr OneHotEncoder_HandleUnknown OneHotEncoder_HandleUnknown_HandleUnknown_MIN = OneHotEncoder_HandleUnknown_ErrorOnUnknown;
constexpr OneHotEncoder_HandleUnknown OneHotEncoder_HandleUnknown_HandleUnknown_MAX = OneHotEncoder_HandleUnknown_IgnoreUnknown;
constexpr int OneHotEncoder_HandleUnknown_HandleUnknown_ARRAYSIZE = OneHotEncoder_HandleUnknown_HandleUnknown_MAX + 1;

const std::string& OneHotEncoder_HandleUnknown_Name(OneHotEncoder_HandleUnknown value);
template<typename T>
inline const std::string& OneHotEncoder_HandleUnknown_Name(T enum_t_value) {
  static_assert(::std::is_same<T, OneHotEncoder_HandleUnknown>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function OneHotEncoder_HandleUnknown_Name.");
  return OneHotEncoder_HandleUnknown_Name(static_cast<OneHotEncoder_HandleUnknown>(enum_t_value));
}
bool OneHotEncoder_HandleUnknown_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, OneHotEncoder_HandleUnknown* value);
// ===================================================================

class OneHotEncoder final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:CoreML.Specification.OneHotEncoder) */ {
 public:
  inline OneHotEncoder() : OneHotEncoder(nullptr) {}
  ~OneHotEncoder() override;
  explicit constexpr OneHotEncoder(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  OneHotEncoder(const OneHotEncoder& from);
  OneHotEncoder(OneHotEncoder&& from) noexcept
    : OneHotEncoder() {
    *this = ::std::move(from);
  }

  inline OneHotEncoder& operator=(const OneHotEncoder& from) {
    CopyFrom(from);
    return *this;
  }
  inline OneHotEncoder& operator=(OneHotEncoder&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const OneHotEncoder& default_instance() {
    return *internal_default_instance();
  }
  enum CategoryTypeCase {
    kStringCategories = 1,
    kInt64Categories = 2,
    CATEGORYTYPE_NOT_SET = 0,
  };

  static inline const OneHotEncoder* internal_default_instance() {
    return reinterpret_cast<const OneHotEncoder*>(
               &_OneHotEncoder_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(OneHotEncoder& a, OneHotEncoder& b) {
    a.Swap(&b);
  }
  inline void Swap(OneHotEncoder* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(OneHotEncoder* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  OneHotEncoder* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<OneHotEncoder>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const OneHotEncoder& from);
  void MergeFrom(const OneHotEncoder& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(OneHotEncoder* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CoreML.Specification.OneHotEncoder";
  }
  protected:
  explicit OneHotEncoder(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  std::string GetTypeName() const final;

  // nested types ----------------------------------------------------

  typedef OneHotEncoder_HandleUnknown HandleUnknown;
  static constexpr HandleUnknown ErrorOnUnknown =
    OneHotEncoder_HandleUnknown_ErrorOnUnknown;
  static constexpr HandleUnknown IgnoreUnknown =
    OneHotEncoder_HandleUnknown_IgnoreUnknown;
  static inline bool HandleUnknown_IsValid(int value) {
    return OneHotEncoder_HandleUnknown_IsValid(value);
  }
  static constexpr HandleUnknown HandleUnknown_MIN =
    OneHotEncoder_HandleUnknown_HandleUnknown_MIN;
  static constexpr HandleUnknown HandleUnknown_MAX =
    OneHotEncoder_HandleUnknown_HandleUnknown_MAX;
  static constexpr int HandleUnknown_ARRAYSIZE =
    OneHotEncoder_HandleUnknown_HandleUnknown_ARRAYSIZE;
  template<typename T>
  static inline const std::string& HandleUnknown_Name(T enum_t_value) {
    static_assert(::std::is_same<T, HandleUnknown>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function HandleUnknown_Name.");
    return OneHotEncoder_HandleUnknown_Name(enum_t_value);
  }
  static inline bool HandleUnknown_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      HandleUnknown* value) {
    return OneHotEncoder_HandleUnknown_Parse(name, value);
  }

  // accessors -------------------------------------------------------

  enum : int {
    kOutputSparseFieldNumber = 10,
    kHandleUnknownFieldNumber = 11,
    kStringCategoriesFieldNumber = 1,
    kInt64CategoriesFieldNumber = 2,
  };
  // bool outputSparse = 10;
  void clear_outputsparse();
  bool outputsparse() const;
  void set_outputsparse(bool value);
  private:
  bool _internal_outputsparse() const;
  void _internal_set_outputsparse(bool value);
  public:

  // .CoreML.Specification.OneHotEncoder.HandleUnknown handleUnknown = 11;
  void clear_handleunknown();
  ::CoreML::Specification::OneHotEncoder_HandleUnknown handleunknown() const;
  void set_handleunknown(::CoreML::Specification::OneHotEncoder_HandleUnknown value);
  private:
  ::CoreML::Specification::OneHotEncoder_HandleUnknown _internal_handleunknown() const;
  void _internal_set_handleunknown(::CoreML::Specification::OneHotEncoder_HandleUnknown value);
  public:

  // .CoreML.Specification.StringVector stringCategories = 1;
  bool has_stringcategories() const;
  private:
  bool _internal_has_stringcategories() const;
  public:
  void clear_stringcategories();
  const ::CoreML::Specification::StringVector& stringcategories() const;
  PROTOBUF_NODISCARD ::CoreML::Specification::StringVector* release_stringcategories();
  ::CoreML::Specification::StringVector* mutable_stringcategories();
  void set_allocated_stringcategories(::CoreML::Specification::StringVector* stringcategories);
  private:
  const ::CoreML::Specification::StringVector& _internal_stringcategories() const;
  ::CoreML::Specification::StringVector* _internal_mutable_stringcategories();
  public:
  void unsafe_arena_set_allocated_stringcategories(
      ::CoreML::Specification::StringVector* stringcategories);
  ::CoreML::Specification::StringVector* unsafe_arena_release_stringcategories();

  // .CoreML.Specification.Int64Vector int64Categories = 2;
  bool has_int64categories() const;
  private:
  bool _internal_has_int64categories() const;
  public:
  void clear_int64categories();
  const ::CoreML::Specification::Int64Vector& int64categories() const;
  PROTOBUF_NODISCARD ::CoreML::Specification::Int64Vector* release_int64categories();
  ::CoreML::Specification::Int64Vector* mutable_int64categories();
  void set_allocated_int64categories(::CoreML::Specification::Int64Vector* int64categories);
  private:
  const ::CoreML::Specification::Int64Vector& _internal_int64categories() const;
  ::CoreML::Specification::Int64Vector* _internal_mutable_int64categories();
  public:
  void unsafe_arena_set_allocated_int64categories(
      ::CoreML::Specification::Int64Vector* int64categories);
  ::CoreML::Specification::Int64Vector* unsafe_arena_release_int64categories();

  void clear_CategoryType();
  CategoryTypeCase CategoryType_case() const;
  // @@protoc_insertion_point(class_scope:CoreML.Specification.OneHotEncoder)
 private:
  class _Internal;
  void set_has_stringcategories();
  void set_has_int64categories();

  inline bool has_CategoryType() const;
  inline void clear_has_CategoryType();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  bool outputsparse_;
  int handleunknown_;
  union CategoryTypeUnion {
    constexpr CategoryTypeUnion() : _constinit_{} {}
      ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
    ::CoreML::Specification::StringVector* stringcategories_;
    ::CoreML::Specification::Int64Vector* int64categories_;
  } CategoryType_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  uint32_t _oneof_case_[1];

  friend struct ::TableStruct_OneHotEncoder_2eproto;
};
// ===================================================================


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

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

// .CoreML.Specification.StringVector stringCategories = 1;
inline bool OneHotEncoder::_internal_has_stringcategories() const {
  return CategoryType_case() == kStringCategories;
}
inline bool OneHotEncoder::has_stringcategories() const {
  return _internal_has_stringcategories();
}
inline void OneHotEncoder::set_has_stringcategories() {
  _oneof_case_[0] = kStringCategories;
}
inline ::CoreML::Specification::StringVector* OneHotEncoder::release_stringcategories() {
  // @@protoc_insertion_point(field_release:CoreML.Specification.OneHotEncoder.stringCategories)
  if (_internal_has_stringcategories()) {
    clear_has_CategoryType();
      ::CoreML::Specification::StringVector* temp = CategoryType_.stringcategories_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    CategoryType_.stringcategories_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::CoreML::Specification::StringVector& OneHotEncoder::_internal_stringcategories() const {
  return _internal_has_stringcategories()
      ? *CategoryType_.stringcategories_
      : reinterpret_cast< ::CoreML::Specification::StringVector&>(::CoreML::Specification::_StringVector_default_instance_);
}
inline const ::CoreML::Specification::StringVector& OneHotEncoder::stringcategories() const {
  // @@protoc_insertion_point(field_get:CoreML.Specification.OneHotEncoder.stringCategories)
  return _internal_stringcategories();
}
inline ::CoreML::Specification::StringVector* OneHotEncoder::unsafe_arena_release_stringcategories() {
  // @@protoc_insertion_point(field_unsafe_arena_release:CoreML.Specification.OneHotEncoder.stringCategories)
  if (_internal_has_stringcategories()) {
    clear_has_CategoryType();
    ::CoreML::Specification::StringVector* temp = CategoryType_.stringcategories_;
    CategoryType_.stringcategories_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void OneHotEncoder::unsafe_arena_set_allocated_stringcategories(::CoreML::Specification::StringVector* stringcategories) {
  clear_CategoryType();
  if (stringcategories) {
    set_has_stringcategories();
    CategoryType_.stringcategories_ = stringcategories;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:CoreML.Specification.OneHotEncoder.stringCategories)
}
inline ::CoreML::Specification::StringVector* OneHotEncoder::_internal_mutable_stringcategories() {
  if (!_internal_has_stringcategories()) {
    clear_CategoryType();
    set_has_stringcategories();
    CategoryType_.stringcategories_ = CreateMaybeMessage< ::CoreML::Specification::StringVector >(GetArenaForAllocation());
  }
  return CategoryType_.stringcategories_;
}
inline ::CoreML::Specification::StringVector* OneHotEncoder::mutable_stringcategories() {
  ::CoreML::Specification::StringVector* _msg = _internal_mutable_stringcategories();
  // @@protoc_insertion_point(field_mutable:CoreML.Specification.OneHotEncoder.stringCategories)
  return _msg;
}

// .CoreML.Specification.Int64Vector int64Categories = 2;
inline bool OneHotEncoder::_internal_has_int64categories() const {
  return CategoryType_case() == kInt64Categories;
}
inline bool OneHotEncoder::has_int64categories() const {
  return _internal_has_int64categories();
}
inline void OneHotEncoder::set_has_int64categories() {
  _oneof_case_[0] = kInt64Categories;
}
inline ::CoreML::Specification::Int64Vector* OneHotEncoder::release_int64categories() {
  // @@protoc_insertion_point(field_release:CoreML.Specification.OneHotEncoder.int64Categories)
  if (_internal_has_int64categories()) {
    clear_has_CategoryType();
      ::CoreML::Specification::Int64Vector* temp = CategoryType_.int64categories_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    CategoryType_.int64categories_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::CoreML::Specification::Int64Vector& OneHotEncoder::_internal_int64categories() const {
  return _internal_has_int64categories()
      ? *CategoryType_.int64categories_
      : reinterpret_cast< ::CoreML::Specification::Int64Vector&>(::CoreML::Specification::_Int64Vector_default_instance_);
}
inline const ::CoreML::Specification::Int64Vector& OneHotEncoder::int64categories() const {
  // @@protoc_insertion_point(field_get:CoreML.Specification.OneHotEncoder.int64Categories)
  return _internal_int64categories();
}
inline ::CoreML::Specification::Int64Vector* OneHotEncoder::unsafe_arena_release_int64categories() {
  // @@protoc_insertion_point(field_unsafe_arena_release:CoreML.Specification.OneHotEncoder.int64Categories)
  if (_internal_has_int64categories()) {
    clear_has_CategoryType();
    ::CoreML::Specification::Int64Vector* temp = CategoryType_.int64categories_;
    CategoryType_.int64categories_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void OneHotEncoder::unsafe_arena_set_allocated_int64categories(::CoreML::Specification::Int64Vector* int64categories) {
  clear_CategoryType();
  if (int64categories) {
    set_has_int64categories();
    CategoryType_.int64categories_ = int64categories;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:CoreML.Specification.OneHotEncoder.int64Categories)
}
inline ::CoreML::Specification::Int64Vector* OneHotEncoder::_internal_mutable_int64categories() {
  if (!_internal_has_int64categories()) {
    clear_CategoryType();
    set_has_int64categories();
    CategoryType_.int64categories_ = CreateMaybeMessage< ::CoreML::Specification::Int64Vector >(GetArenaForAllocation());
  }
  return CategoryType_.int64categories_;
}
inline ::CoreML::Specification::Int64Vector* OneHotEncoder::mutable_int64categories() {
  ::CoreML::Specification::Int64Vector* _msg = _internal_mutable_int64categories();
  // @@protoc_insertion_point(field_mutable:CoreML.Specification.OneHotEncoder.int64Categories)
  return _msg;
}

// bool outputSparse = 10;
inline void OneHotEncoder::clear_outputsparse() {
  outputsparse_ = false;
}
inline bool OneHotEncoder::_internal_outputsparse() const {
  return outputsparse_;
}
inline bool OneHotEncoder::outputsparse() const {
  // @@protoc_insertion_point(field_get:CoreML.Specification.OneHotEncoder.outputSparse)
  return _internal_outputsparse();
}
inline void OneHotEncoder::_internal_set_outputsparse(bool value) {
  
  outputsparse_ = value;
}
inline void OneHotEncoder::set_outputsparse(bool value) {
  _internal_set_outputsparse(value);
  // @@protoc_insertion_point(field_set:CoreML.Specification.OneHotEncoder.outputSparse)
}

// .CoreML.Specification.OneHotEncoder.HandleUnknown handleUnknown = 11;
inline void OneHotEncoder::clear_handleunknown() {
  handleunknown_ = 0;
}
inline ::CoreML::Specification::OneHotEncoder_HandleUnknown OneHotEncoder::_internal_handleunknown() const {
  return static_cast< ::CoreML::Specification::OneHotEncoder_HandleUnknown >(handleunknown_);
}
inline ::CoreML::Specification::OneHotEncoder_HandleUnknown OneHotEncoder::handleunknown() const {
  // @@protoc_insertion_point(field_get:CoreML.Specification.OneHotEncoder.handleUnknown)
  return _internal_handleunknown();
}
inline void OneHotEncoder::_internal_set_handleunknown(::CoreML::Specification::OneHotEncoder_HandleUnknown value) {
  
  handleunknown_ = value;
}
inline void OneHotEncoder::set_handleunknown(::CoreML::Specification::OneHotEncoder_HandleUnknown value) {
  _internal_set_handleunknown(value);
  // @@protoc_insertion_point(field_set:CoreML.Specification.OneHotEncoder.handleUnknown)
}

inline bool OneHotEncoder::has_CategoryType() const {
  return CategoryType_case() != CATEGORYTYPE_NOT_SET;
}
inline void OneHotEncoder::clear_has_CategoryType() {
  _oneof_case_[0] = CATEGORYTYPE_NOT_SET;
}
inline OneHotEncoder::CategoryTypeCase OneHotEncoder::CategoryType_case() const {
  return OneHotEncoder::CategoryTypeCase(_oneof_case_[0]);
}
#ifdef __GNUC__
  #pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)

}  // namespace Specification
}  // namespace CoreML

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::CoreML::Specification::OneHotEncoder_HandleUnknown> : ::std::true_type {};

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_OneHotEncoder_2eproto
