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

#ifndef PROTOBUF_meta_2eproto__INCLUDED
#define PROTOBUF_meta_2eproto__INCLUDED

#include <string>

#include <google/protobuf/stubs/common.h>

#if GOOGLE_PROTOBUF_VERSION < 3003000
#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 3003000 < GOOGLE_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/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>
// @@protoc_insertion_point(includes)
namespace TuriCreate {
namespace Annotation {
namespace Specification {
class ActivityClassificationMeta;
class ActivityClassificationMetaDefaultTypeInternal;
extern ActivityClassificationMetaDefaultTypeInternal _ActivityClassificationMeta_default_instance_;
class AudioClassificationMeta;
class AudioClassificationMetaDefaultTypeInternal;
extern AudioClassificationMetaDefaultTypeInternal _AudioClassificationMeta_default_instance_;
class DrawingClassificationMeta;
class DrawingClassificationMetaDefaultTypeInternal;
extern DrawingClassificationMetaDefaultTypeInternal _DrawingClassificationMeta_default_instance_;
class ImageClassificationMeta;
class ImageClassificationMetaDefaultTypeInternal;
extern ImageClassificationMetaDefaultTypeInternal _ImageClassificationMeta_default_instance_;
class MetaData;
class MetaDataDefaultTypeInternal;
extern MetaDataDefaultTypeInternal _MetaData_default_instance_;
class MetaLabel;
class MetaLabelDefaultTypeInternal;
extern MetaLabelDefaultTypeInternal _MetaLabel_default_instance_;
class ObjectDetectionMeta;
class ObjectDetectionMetaDefaultTypeInternal;
extern ObjectDetectionMetaDefaultTypeInternal _ObjectDetectionMeta_default_instance_;
}  // namespace Specification
}  // namespace Annotation
}  // namespace TuriCreate

namespace TuriCreate {
namespace Annotation {
namespace Specification {

namespace protobuf_meta_2eproto {
// Internal implementation detail -- do not call these.
struct TableStruct {
  static const ::google::protobuf::internal::ParseTableField entries[];
  static const ::google::protobuf::internal::AuxillaryParseTableField aux[];
  static const ::google::protobuf::internal::ParseTable schema[];
  static const ::google::protobuf::uint32 offsets[];
  static void InitDefaultsImpl();
  static void Shutdown();
};
void AddDescriptors();
void InitDefaults();
}  // namespace protobuf_meta_2eproto

enum MetaData_AnnotationType {
  MetaData_AnnotationType_ACTIVITY_CLASSIFICATION = 0,
  MetaData_AnnotationType_AUDIO_CLASSIFICATION = 1,
  MetaData_AnnotationType_DRAWING_CLASSIFICATION = 2,
  MetaData_AnnotationType_IMAGE_CLASSIFICATION = 3,
  MetaData_AnnotationType_OBJECT_DETECTION = 4,
  MetaData_AnnotationType_MetaData_AnnotationType_INT_MIN_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32min,
  MetaData_AnnotationType_MetaData_AnnotationType_INT_MAX_SENTINEL_DO_NOT_USE_ = ::google::protobuf::kint32max
};
bool MetaData_AnnotationType_IsValid(int value);
const MetaData_AnnotationType MetaData_AnnotationType_AnnotationType_MIN = MetaData_AnnotationType_ACTIVITY_CLASSIFICATION;
const MetaData_AnnotationType MetaData_AnnotationType_AnnotationType_MAX = MetaData_AnnotationType_OBJECT_DETECTION;
const int MetaData_AnnotationType_AnnotationType_ARRAYSIZE = MetaData_AnnotationType_AnnotationType_MAX + 1;

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

class MetaLabel : public ::google::protobuf::MessageLite /* @@protoc_insertion_point(class_definition:TuriCreate.Annotation.Specification.MetaLabel) */ {
 public:
  MetaLabel();
  virtual ~MetaLabel();

  MetaLabel(const MetaLabel& from);

  inline MetaLabel& operator=(const MetaLabel& from) {
    CopyFrom(from);
    return *this;
  }

  static const MetaLabel& default_instance();

  enum LabelCase {
    kStringLabel = 1,
    kIntLabel = 2,
    LABEL_NOT_SET = 0,
  };

  static inline const MetaLabel* internal_default_instance() {
    return reinterpret_cast<const MetaLabel*>(
               &_MetaLabel_default_instance_);
  }
  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
    0;

  void Swap(MetaLabel* other);

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

  inline MetaLabel* New() const PROTOBUF_FINAL { return New(NULL); }

  MetaLabel* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from)
    PROTOBUF_FINAL;
  void CopyFrom(const MetaLabel& from);
  void MergeFrom(const MetaLabel& from);
  void Clear() PROTOBUF_FINAL;
  bool IsInitialized() const PROTOBUF_FINAL;

  size_t ByteSizeLong() const PROTOBUF_FINAL;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
  void DiscardUnknownFields();
  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(MetaLabel* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::std::string GetTypeName() const PROTOBUF_FINAL;

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

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

  // int64 elementCount = 3;
  void clear_elementcount();
  static const int kElementCountFieldNumber = 3;
  ::google::protobuf::int64 elementcount() const;
  void set_elementcount(::google::protobuf::int64 value);

  // string stringLabel = 1;
  private:
  bool has_stringlabel() const;
  public:
  void clear_stringlabel();
  static const int kStringLabelFieldNumber = 1;
  const ::std::string& stringlabel() const;
  void set_stringlabel(const ::std::string& value);
  #if LANG_CXX11
  void set_stringlabel(::std::string&& value);
  #endif
  void set_stringlabel(const char* value);
  void set_stringlabel(const char* value, size_t size);
  ::std::string* mutable_stringlabel();
  ::std::string* release_stringlabel();
  void set_allocated_stringlabel(::std::string* stringlabel);

  // int64 intLabel = 2;
  private:
  bool has_intlabel() const;
  public:
  void clear_intlabel();
  static const int kIntLabelFieldNumber = 2;
  ::google::protobuf::int64 intlabel() const;
  void set_intlabel(::google::protobuf::int64 value);

  LabelCase Label_case() const;
  // @@protoc_insertion_point(class_scope:TuriCreate.Annotation.Specification.MetaLabel)
 private:
  void set_has_stringlabel();
  void set_has_intlabel();

  inline bool has_Label() const;
  void clear_Label();
  inline void clear_has_Label();

  ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_;
  ::google::protobuf::int64 elementcount_;
  union LabelUnion {
    LabelUnion() {}
    ::google::protobuf::internal::ArenaStringPtr stringlabel_;
    ::google::protobuf::int64 intlabel_;
  } Label_;
  mutable int _cached_size_;
  ::google::protobuf::uint32 _oneof_case_[1];

  friend struct protobuf_meta_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class ActivityClassificationMeta : public ::google::protobuf::MessageLite /* @@protoc_insertion_point(class_definition:TuriCreate.Annotation.Specification.ActivityClassificationMeta) */ {
 public:
  ActivityClassificationMeta();
  virtual ~ActivityClassificationMeta();

  ActivityClassificationMeta(const ActivityClassificationMeta& from);

  inline ActivityClassificationMeta& operator=(const ActivityClassificationMeta& from) {
    CopyFrom(from);
    return *this;
  }

  static const ActivityClassificationMeta& default_instance();

  static inline const ActivityClassificationMeta* internal_default_instance() {
    return reinterpret_cast<const ActivityClassificationMeta*>(
               &_ActivityClassificationMeta_default_instance_);
  }
  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
    1;

  void Swap(ActivityClassificationMeta* other);

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

  inline ActivityClassificationMeta* New() const PROTOBUF_FINAL { return New(NULL); }

  ActivityClassificationMeta* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from)
    PROTOBUF_FINAL;
  void CopyFrom(const ActivityClassificationMeta& from);
  void MergeFrom(const ActivityClassificationMeta& from);
  void Clear() PROTOBUF_FINAL;
  bool IsInitialized() const PROTOBUF_FINAL;

  size_t ByteSizeLong() const PROTOBUF_FINAL;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
  void DiscardUnknownFields();
  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(ActivityClassificationMeta* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::std::string GetTypeName() const PROTOBUF_FINAL;

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

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

  // repeated .TuriCreate.Annotation.Specification.MetaLabel label = 1;
  int label_size() const;
  void clear_label();
  static const int kLabelFieldNumber = 1;
  const ::TuriCreate::Annotation::Specification::MetaLabel& label(int index) const;
  ::TuriCreate::Annotation::Specification::MetaLabel* mutable_label(int index);
  ::TuriCreate::Annotation::Specification::MetaLabel* add_label();
  ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >*
      mutable_label();
  const ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >&
      label() const;

  // @@protoc_insertion_point(class_scope:TuriCreate.Annotation.Specification.ActivityClassificationMeta)
 private:

  ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_;
  ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel > label_;
  mutable int _cached_size_;
  friend struct protobuf_meta_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class AudioClassificationMeta : public ::google::protobuf::MessageLite /* @@protoc_insertion_point(class_definition:TuriCreate.Annotation.Specification.AudioClassificationMeta) */ {
 public:
  AudioClassificationMeta();
  virtual ~AudioClassificationMeta();

  AudioClassificationMeta(const AudioClassificationMeta& from);

  inline AudioClassificationMeta& operator=(const AudioClassificationMeta& from) {
    CopyFrom(from);
    return *this;
  }

  static const AudioClassificationMeta& default_instance();

  static inline const AudioClassificationMeta* internal_default_instance() {
    return reinterpret_cast<const AudioClassificationMeta*>(
               &_AudioClassificationMeta_default_instance_);
  }
  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
    2;

  void Swap(AudioClassificationMeta* other);

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

  inline AudioClassificationMeta* New() const PROTOBUF_FINAL { return New(NULL); }

  AudioClassificationMeta* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from)
    PROTOBUF_FINAL;
  void CopyFrom(const AudioClassificationMeta& from);
  void MergeFrom(const AudioClassificationMeta& from);
  void Clear() PROTOBUF_FINAL;
  bool IsInitialized() const PROTOBUF_FINAL;

  size_t ByteSizeLong() const PROTOBUF_FINAL;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
  void DiscardUnknownFields();
  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(AudioClassificationMeta* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::std::string GetTypeName() const PROTOBUF_FINAL;

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

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

  // repeated .TuriCreate.Annotation.Specification.MetaLabel label = 1;
  int label_size() const;
  void clear_label();
  static const int kLabelFieldNumber = 1;
  const ::TuriCreate::Annotation::Specification::MetaLabel& label(int index) const;
  ::TuriCreate::Annotation::Specification::MetaLabel* mutable_label(int index);
  ::TuriCreate::Annotation::Specification::MetaLabel* add_label();
  ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >*
      mutable_label();
  const ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >&
      label() const;

  // @@protoc_insertion_point(class_scope:TuriCreate.Annotation.Specification.AudioClassificationMeta)
 private:

  ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_;
  ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel > label_;
  mutable int _cached_size_;
  friend struct protobuf_meta_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class DrawingClassificationMeta : public ::google::protobuf::MessageLite /* @@protoc_insertion_point(class_definition:TuriCreate.Annotation.Specification.DrawingClassificationMeta) */ {
 public:
  DrawingClassificationMeta();
  virtual ~DrawingClassificationMeta();

  DrawingClassificationMeta(const DrawingClassificationMeta& from);

  inline DrawingClassificationMeta& operator=(const DrawingClassificationMeta& from) {
    CopyFrom(from);
    return *this;
  }

  static const DrawingClassificationMeta& default_instance();

  static inline const DrawingClassificationMeta* internal_default_instance() {
    return reinterpret_cast<const DrawingClassificationMeta*>(
               &_DrawingClassificationMeta_default_instance_);
  }
  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
    3;

  void Swap(DrawingClassificationMeta* other);

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

  inline DrawingClassificationMeta* New() const PROTOBUF_FINAL { return New(NULL); }

  DrawingClassificationMeta* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from)
    PROTOBUF_FINAL;
  void CopyFrom(const DrawingClassificationMeta& from);
  void MergeFrom(const DrawingClassificationMeta& from);
  void Clear() PROTOBUF_FINAL;
  bool IsInitialized() const PROTOBUF_FINAL;

  size_t ByteSizeLong() const PROTOBUF_FINAL;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
  void DiscardUnknownFields();
  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(DrawingClassificationMeta* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::std::string GetTypeName() const PROTOBUF_FINAL;

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

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

  // repeated .TuriCreate.Annotation.Specification.MetaLabel label = 1;
  int label_size() const;
  void clear_label();
  static const int kLabelFieldNumber = 1;
  const ::TuriCreate::Annotation::Specification::MetaLabel& label(int index) const;
  ::TuriCreate::Annotation::Specification::MetaLabel* mutable_label(int index);
  ::TuriCreate::Annotation::Specification::MetaLabel* add_label();
  ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >*
      mutable_label();
  const ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >&
      label() const;

  // @@protoc_insertion_point(class_scope:TuriCreate.Annotation.Specification.DrawingClassificationMeta)
 private:

  ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_;
  ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel > label_;
  mutable int _cached_size_;
  friend struct protobuf_meta_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class ImageClassificationMeta : public ::google::protobuf::MessageLite /* @@protoc_insertion_point(class_definition:TuriCreate.Annotation.Specification.ImageClassificationMeta) */ {
 public:
  ImageClassificationMeta();
  virtual ~ImageClassificationMeta();

  ImageClassificationMeta(const ImageClassificationMeta& from);

  inline ImageClassificationMeta& operator=(const ImageClassificationMeta& from) {
    CopyFrom(from);
    return *this;
  }

  static const ImageClassificationMeta& default_instance();

  static inline const ImageClassificationMeta* internal_default_instance() {
    return reinterpret_cast<const ImageClassificationMeta*>(
               &_ImageClassificationMeta_default_instance_);
  }
  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
    4;

  void Swap(ImageClassificationMeta* other);

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

  inline ImageClassificationMeta* New() const PROTOBUF_FINAL { return New(NULL); }

  ImageClassificationMeta* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from)
    PROTOBUF_FINAL;
  void CopyFrom(const ImageClassificationMeta& from);
  void MergeFrom(const ImageClassificationMeta& from);
  void Clear() PROTOBUF_FINAL;
  bool IsInitialized() const PROTOBUF_FINAL;

  size_t ByteSizeLong() const PROTOBUF_FINAL;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
  void DiscardUnknownFields();
  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(ImageClassificationMeta* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::std::string GetTypeName() const PROTOBUF_FINAL;

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

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

  // repeated .TuriCreate.Annotation.Specification.MetaLabel label = 1;
  int label_size() const;
  void clear_label();
  static const int kLabelFieldNumber = 1;
  const ::TuriCreate::Annotation::Specification::MetaLabel& label(int index) const;
  ::TuriCreate::Annotation::Specification::MetaLabel* mutable_label(int index);
  ::TuriCreate::Annotation::Specification::MetaLabel* add_label();
  ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >*
      mutable_label();
  const ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >&
      label() const;

  // @@protoc_insertion_point(class_scope:TuriCreate.Annotation.Specification.ImageClassificationMeta)
 private:

  ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_;
  ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel > label_;
  mutable int _cached_size_;
  friend struct protobuf_meta_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class ObjectDetectionMeta : public ::google::protobuf::MessageLite /* @@protoc_insertion_point(class_definition:TuriCreate.Annotation.Specification.ObjectDetectionMeta) */ {
 public:
  ObjectDetectionMeta();
  virtual ~ObjectDetectionMeta();

  ObjectDetectionMeta(const ObjectDetectionMeta& from);

  inline ObjectDetectionMeta& operator=(const ObjectDetectionMeta& from) {
    CopyFrom(from);
    return *this;
  }

  static const ObjectDetectionMeta& default_instance();

  static inline const ObjectDetectionMeta* internal_default_instance() {
    return reinterpret_cast<const ObjectDetectionMeta*>(
               &_ObjectDetectionMeta_default_instance_);
  }
  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
    5;

  void Swap(ObjectDetectionMeta* other);

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

  inline ObjectDetectionMeta* New() const PROTOBUF_FINAL { return New(NULL); }

  ObjectDetectionMeta* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from)
    PROTOBUF_FINAL;
  void CopyFrom(const ObjectDetectionMeta& from);
  void MergeFrom(const ObjectDetectionMeta& from);
  void Clear() PROTOBUF_FINAL;
  bool IsInitialized() const PROTOBUF_FINAL;

  size_t ByteSizeLong() const PROTOBUF_FINAL;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
  void DiscardUnknownFields();
  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(ObjectDetectionMeta* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::std::string GetTypeName() const PROTOBUF_FINAL;

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

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

  // repeated .TuriCreate.Annotation.Specification.MetaLabel label = 1;
  int label_size() const;
  void clear_label();
  static const int kLabelFieldNumber = 1;
  const ::TuriCreate::Annotation::Specification::MetaLabel& label(int index) const;
  ::TuriCreate::Annotation::Specification::MetaLabel* mutable_label(int index);
  ::TuriCreate::Annotation::Specification::MetaLabel* add_label();
  ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >*
      mutable_label();
  const ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >&
      label() const;

  // @@protoc_insertion_point(class_scope:TuriCreate.Annotation.Specification.ObjectDetectionMeta)
 private:

  ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_;
  ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel > label_;
  mutable int _cached_size_;
  friend struct protobuf_meta_2eproto::TableStruct;
};
// -------------------------------------------------------------------

class MetaData : public ::google::protobuf::MessageLite /* @@protoc_insertion_point(class_definition:TuriCreate.Annotation.Specification.MetaData) */ {
 public:
  MetaData();
  virtual ~MetaData();

  MetaData(const MetaData& from);

  inline MetaData& operator=(const MetaData& from) {
    CopyFrom(from);
    return *this;
  }

  static const MetaData& default_instance();

  enum TypeCase {
    kActivityClassification = 100,
    kAudioClassification = 101,
    kDrawingClassification = 102,
    kImageClassification = 103,
    kObjectDetection = 104,
    TYPE_NOT_SET = 0,
  };

  static inline const MetaData* internal_default_instance() {
    return reinterpret_cast<const MetaData*>(
               &_MetaData_default_instance_);
  }
  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
    6;

  void Swap(MetaData* other);

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

  inline MetaData* New() const PROTOBUF_FINAL { return New(NULL); }

  MetaData* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from)
    PROTOBUF_FINAL;
  void CopyFrom(const MetaData& from);
  void MergeFrom(const MetaData& from);
  void Clear() PROTOBUF_FINAL;
  bool IsInitialized() const PROTOBUF_FINAL;

  size_t ByteSizeLong() const PROTOBUF_FINAL;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
  void DiscardUnknownFields();
  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(MetaData* other);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return NULL;
  }
  inline void* MaybeArenaPtr() const {
    return NULL;
  }
  public:

  ::std::string GetTypeName() const PROTOBUF_FINAL;

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

  typedef MetaData_AnnotationType AnnotationType;
  static const AnnotationType ACTIVITY_CLASSIFICATION =
    MetaData_AnnotationType_ACTIVITY_CLASSIFICATION;
  static const AnnotationType AUDIO_CLASSIFICATION =
    MetaData_AnnotationType_AUDIO_CLASSIFICATION;
  static const AnnotationType DRAWING_CLASSIFICATION =
    MetaData_AnnotationType_DRAWING_CLASSIFICATION;
  static const AnnotationType IMAGE_CLASSIFICATION =
    MetaData_AnnotationType_IMAGE_CLASSIFICATION;
  static const AnnotationType OBJECT_DETECTION =
    MetaData_AnnotationType_OBJECT_DETECTION;
  static inline bool AnnotationType_IsValid(int value) {
    return MetaData_AnnotationType_IsValid(value);
  }
  static const AnnotationType AnnotationType_MIN =
    MetaData_AnnotationType_AnnotationType_MIN;
  static const AnnotationType AnnotationType_MAX =
    MetaData_AnnotationType_AnnotationType_MAX;
  static const int AnnotationType_ARRAYSIZE =
    MetaData_AnnotationType_AnnotationType_ARRAYSIZE;

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

  // int64 num_examples = 1;
  void clear_num_examples();
  static const int kNumExamplesFieldNumber = 1;
  ::google::protobuf::int64 num_examples() const;
  void set_num_examples(::google::protobuf::int64 value);

  // .TuriCreate.Annotation.Specification.MetaData.AnnotationType type = 2;
  void clear_type();
  static const int kTypeFieldNumber = 2;
  ::TuriCreate::Annotation::Specification::MetaData_AnnotationType type() const;
  void set_type(::TuriCreate::Annotation::Specification::MetaData_AnnotationType value);

  // .TuriCreate.Annotation.Specification.ActivityClassificationMeta activity_classification = 100;
  bool has_activity_classification() const;
  void clear_activity_classification();
  static const int kActivityClassificationFieldNumber = 100;
  const ::TuriCreate::Annotation::Specification::ActivityClassificationMeta& activity_classification() const;
  ::TuriCreate::Annotation::Specification::ActivityClassificationMeta* mutable_activity_classification();
  ::TuriCreate::Annotation::Specification::ActivityClassificationMeta* release_activity_classification();
  void set_allocated_activity_classification(::TuriCreate::Annotation::Specification::ActivityClassificationMeta* activity_classification);

  // .TuriCreate.Annotation.Specification.AudioClassificationMeta audio_classification = 101;
  bool has_audio_classification() const;
  void clear_audio_classification();
  static const int kAudioClassificationFieldNumber = 101;
  const ::TuriCreate::Annotation::Specification::AudioClassificationMeta& audio_classification() const;
  ::TuriCreate::Annotation::Specification::AudioClassificationMeta* mutable_audio_classification();
  ::TuriCreate::Annotation::Specification::AudioClassificationMeta* release_audio_classification();
  void set_allocated_audio_classification(::TuriCreate::Annotation::Specification::AudioClassificationMeta* audio_classification);

  // .TuriCreate.Annotation.Specification.DrawingClassificationMeta drawing_classification = 102;
  bool has_drawing_classification() const;
  void clear_drawing_classification();
  static const int kDrawingClassificationFieldNumber = 102;
  const ::TuriCreate::Annotation::Specification::DrawingClassificationMeta& drawing_classification() const;
  ::TuriCreate::Annotation::Specification::DrawingClassificationMeta* mutable_drawing_classification();
  ::TuriCreate::Annotation::Specification::DrawingClassificationMeta* release_drawing_classification();
  void set_allocated_drawing_classification(::TuriCreate::Annotation::Specification::DrawingClassificationMeta* drawing_classification);

  // .TuriCreate.Annotation.Specification.ImageClassificationMeta image_classification = 103;
  bool has_image_classification() const;
  void clear_image_classification();
  static const int kImageClassificationFieldNumber = 103;
  const ::TuriCreate::Annotation::Specification::ImageClassificationMeta& image_classification() const;
  ::TuriCreate::Annotation::Specification::ImageClassificationMeta* mutable_image_classification();
  ::TuriCreate::Annotation::Specification::ImageClassificationMeta* release_image_classification();
  void set_allocated_image_classification(::TuriCreate::Annotation::Specification::ImageClassificationMeta* image_classification);

  // .TuriCreate.Annotation.Specification.ObjectDetectionMeta object_detection = 104;
  bool has_object_detection() const;
  void clear_object_detection();
  static const int kObjectDetectionFieldNumber = 104;
  const ::TuriCreate::Annotation::Specification::ObjectDetectionMeta& object_detection() const;
  ::TuriCreate::Annotation::Specification::ObjectDetectionMeta* mutable_object_detection();
  ::TuriCreate::Annotation::Specification::ObjectDetectionMeta* release_object_detection();
  void set_allocated_object_detection(::TuriCreate::Annotation::Specification::ObjectDetectionMeta* object_detection);

  TypeCase Type_case() const;
  // @@protoc_insertion_point(class_scope:TuriCreate.Annotation.Specification.MetaData)
 private:
  void set_has_activity_classification();
  void set_has_audio_classification();
  void set_has_drawing_classification();
  void set_has_image_classification();
  void set_has_object_detection();

  inline bool has_Type() const;
  void clear_Type();
  inline void clear_has_Type();

  ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_;
  ::google::protobuf::int64 num_examples_;
  int type_;
  union TypeUnion {
    TypeUnion() {}
    ::TuriCreate::Annotation::Specification::ActivityClassificationMeta* activity_classification_;
    ::TuriCreate::Annotation::Specification::AudioClassificationMeta* audio_classification_;
    ::TuriCreate::Annotation::Specification::DrawingClassificationMeta* drawing_classification_;
    ::TuriCreate::Annotation::Specification::ImageClassificationMeta* image_classification_;
    ::TuriCreate::Annotation::Specification::ObjectDetectionMeta* object_detection_;
  } Type_;
  mutable int _cached_size_;
  ::google::protobuf::uint32 _oneof_case_[1];

  friend struct protobuf_meta_2eproto::TableStruct;
};
// ===================================================================


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

#if !PROTOBUF_INLINE_NOT_IN_HEADERS
// MetaLabel

// string stringLabel = 1;
inline bool MetaLabel::has_stringlabel() const {
  return Label_case() == kStringLabel;
}
inline void MetaLabel::set_has_stringlabel() {
  _oneof_case_[0] = kStringLabel;
}
inline void MetaLabel::clear_stringlabel() {
  if (has_stringlabel()) {
    Label_.stringlabel_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    clear_has_Label();
  }
}
inline const ::std::string& MetaLabel::stringlabel() const {
  // @@protoc_insertion_point(field_get:TuriCreate.Annotation.Specification.MetaLabel.stringLabel)
  if (has_stringlabel()) {
    return Label_.stringlabel_.GetNoArena();
  }
  return *&::google::protobuf::internal::GetEmptyStringAlreadyInited();
}
inline void MetaLabel::set_stringlabel(const ::std::string& value) {
  // @@protoc_insertion_point(field_set:TuriCreate.Annotation.Specification.MetaLabel.stringLabel)
  if (!has_stringlabel()) {
    clear_Label();
    set_has_stringlabel();
    Label_.stringlabel_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  Label_.stringlabel_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:TuriCreate.Annotation.Specification.MetaLabel.stringLabel)
}
#if LANG_CXX11
inline void MetaLabel::set_stringlabel(::std::string&& value) {
  // @@protoc_insertion_point(field_set:TuriCreate.Annotation.Specification.MetaLabel.stringLabel)
  if (!has_stringlabel()) {
    clear_Label();
    set_has_stringlabel();
    Label_.stringlabel_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  Label_.stringlabel_.SetNoArena(
    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
  // @@protoc_insertion_point(field_set_rvalue:TuriCreate.Annotation.Specification.MetaLabel.stringLabel)
}
#endif
inline void MetaLabel::set_stringlabel(const char* value) {
  GOOGLE_DCHECK(value != NULL);
  if (!has_stringlabel()) {
    clear_Label();
    set_has_stringlabel();
    Label_.stringlabel_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  Label_.stringlabel_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(value));
  // @@protoc_insertion_point(field_set_char:TuriCreate.Annotation.Specification.MetaLabel.stringLabel)
}
inline void MetaLabel::set_stringlabel(const char* value, size_t size) {
  if (!has_stringlabel()) {
    clear_Label();
    set_has_stringlabel();
    Label_.stringlabel_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  Label_.stringlabel_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:TuriCreate.Annotation.Specification.MetaLabel.stringLabel)
}
inline ::std::string* MetaLabel::mutable_stringlabel() {
  if (!has_stringlabel()) {
    clear_Label();
    set_has_stringlabel();
    Label_.stringlabel_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  // @@protoc_insertion_point(field_mutable:TuriCreate.Annotation.Specification.MetaLabel.stringLabel)
  return Label_.stringlabel_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* MetaLabel::release_stringlabel() {
  // @@protoc_insertion_point(field_release:TuriCreate.Annotation.Specification.MetaLabel.stringLabel)
  if (has_stringlabel()) {
    clear_has_Label();
    return Label_.stringlabel_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  } else {
    return NULL;
  }
}
inline void MetaLabel::set_allocated_stringlabel(::std::string* stringlabel) {
  if (!has_stringlabel()) {
    Label_.stringlabel_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  clear_Label();
  if (stringlabel != NULL) {
    set_has_stringlabel();
    Label_.stringlabel_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        stringlabel);
  }
  // @@protoc_insertion_point(field_set_allocated:TuriCreate.Annotation.Specification.MetaLabel.stringLabel)
}

// int64 intLabel = 2;
inline bool MetaLabel::has_intlabel() const {
  return Label_case() == kIntLabel;
}
inline void MetaLabel::set_has_intlabel() {
  _oneof_case_[0] = kIntLabel;
}
inline void MetaLabel::clear_intlabel() {
  if (has_intlabel()) {
    Label_.intlabel_ = GOOGLE_LONGLONG(0);
    clear_has_Label();
  }
}
inline ::google::protobuf::int64 MetaLabel::intlabel() const {
  // @@protoc_insertion_point(field_get:TuriCreate.Annotation.Specification.MetaLabel.intLabel)
  if (has_intlabel()) {
    return Label_.intlabel_;
  }
  return GOOGLE_LONGLONG(0);
}
inline void MetaLabel::set_intlabel(::google::protobuf::int64 value) {
  if (!has_intlabel()) {
    clear_Label();
    set_has_intlabel();
  }
  Label_.intlabel_ = value;
  // @@protoc_insertion_point(field_set:TuriCreate.Annotation.Specification.MetaLabel.intLabel)
}

// int64 elementCount = 3;
inline void MetaLabel::clear_elementcount() {
  elementcount_ = GOOGLE_LONGLONG(0);
}
inline ::google::protobuf::int64 MetaLabel::elementcount() const {
  // @@protoc_insertion_point(field_get:TuriCreate.Annotation.Specification.MetaLabel.elementCount)
  return elementcount_;
}
inline void MetaLabel::set_elementcount(::google::protobuf::int64 value) {
  
  elementcount_ = value;
  // @@protoc_insertion_point(field_set:TuriCreate.Annotation.Specification.MetaLabel.elementCount)
}

inline bool MetaLabel::has_Label() const {
  return Label_case() != LABEL_NOT_SET;
}
inline void MetaLabel::clear_has_Label() {
  _oneof_case_[0] = LABEL_NOT_SET;
}
inline MetaLabel::LabelCase MetaLabel::Label_case() const {
  return MetaLabel::LabelCase(_oneof_case_[0]);
}
// -------------------------------------------------------------------

// ActivityClassificationMeta

// repeated .TuriCreate.Annotation.Specification.MetaLabel label = 1;
inline int ActivityClassificationMeta::label_size() const {
  return label_.size();
}
inline void ActivityClassificationMeta::clear_label() {
  label_.Clear();
}
inline const ::TuriCreate::Annotation::Specification::MetaLabel& ActivityClassificationMeta::label(int index) const {
  // @@protoc_insertion_point(field_get:TuriCreate.Annotation.Specification.ActivityClassificationMeta.label)
  return label_.Get(index);
}
inline ::TuriCreate::Annotation::Specification::MetaLabel* ActivityClassificationMeta::mutable_label(int index) {
  // @@protoc_insertion_point(field_mutable:TuriCreate.Annotation.Specification.ActivityClassificationMeta.label)
  return label_.Mutable(index);
}
inline ::TuriCreate::Annotation::Specification::MetaLabel* ActivityClassificationMeta::add_label() {
  // @@protoc_insertion_point(field_add:TuriCreate.Annotation.Specification.ActivityClassificationMeta.label)
  return label_.Add();
}
inline ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >*
ActivityClassificationMeta::mutable_label() {
  // @@protoc_insertion_point(field_mutable_list:TuriCreate.Annotation.Specification.ActivityClassificationMeta.label)
  return &label_;
}
inline const ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >&
ActivityClassificationMeta::label() const {
  // @@protoc_insertion_point(field_list:TuriCreate.Annotation.Specification.ActivityClassificationMeta.label)
  return label_;
}

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

// AudioClassificationMeta

// repeated .TuriCreate.Annotation.Specification.MetaLabel label = 1;
inline int AudioClassificationMeta::label_size() const {
  return label_.size();
}
inline void AudioClassificationMeta::clear_label() {
  label_.Clear();
}
inline const ::TuriCreate::Annotation::Specification::MetaLabel& AudioClassificationMeta::label(int index) const {
  // @@protoc_insertion_point(field_get:TuriCreate.Annotation.Specification.AudioClassificationMeta.label)
  return label_.Get(index);
}
inline ::TuriCreate::Annotation::Specification::MetaLabel* AudioClassificationMeta::mutable_label(int index) {
  // @@protoc_insertion_point(field_mutable:TuriCreate.Annotation.Specification.AudioClassificationMeta.label)
  return label_.Mutable(index);
}
inline ::TuriCreate::Annotation::Specification::MetaLabel* AudioClassificationMeta::add_label() {
  // @@protoc_insertion_point(field_add:TuriCreate.Annotation.Specification.AudioClassificationMeta.label)
  return label_.Add();
}
inline ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >*
AudioClassificationMeta::mutable_label() {
  // @@protoc_insertion_point(field_mutable_list:TuriCreate.Annotation.Specification.AudioClassificationMeta.label)
  return &label_;
}
inline const ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >&
AudioClassificationMeta::label() const {
  // @@protoc_insertion_point(field_list:TuriCreate.Annotation.Specification.AudioClassificationMeta.label)
  return label_;
}

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

// DrawingClassificationMeta

// repeated .TuriCreate.Annotation.Specification.MetaLabel label = 1;
inline int DrawingClassificationMeta::label_size() const {
  return label_.size();
}
inline void DrawingClassificationMeta::clear_label() {
  label_.Clear();
}
inline const ::TuriCreate::Annotation::Specification::MetaLabel& DrawingClassificationMeta::label(int index) const {
  // @@protoc_insertion_point(field_get:TuriCreate.Annotation.Specification.DrawingClassificationMeta.label)
  return label_.Get(index);
}
inline ::TuriCreate::Annotation::Specification::MetaLabel* DrawingClassificationMeta::mutable_label(int index) {
  // @@protoc_insertion_point(field_mutable:TuriCreate.Annotation.Specification.DrawingClassificationMeta.label)
  return label_.Mutable(index);
}
inline ::TuriCreate::Annotation::Specification::MetaLabel* DrawingClassificationMeta::add_label() {
  // @@protoc_insertion_point(field_add:TuriCreate.Annotation.Specification.DrawingClassificationMeta.label)
  return label_.Add();
}
inline ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >*
DrawingClassificationMeta::mutable_label() {
  // @@protoc_insertion_point(field_mutable_list:TuriCreate.Annotation.Specification.DrawingClassificationMeta.label)
  return &label_;
}
inline const ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >&
DrawingClassificationMeta::label() const {
  // @@protoc_insertion_point(field_list:TuriCreate.Annotation.Specification.DrawingClassificationMeta.label)
  return label_;
}

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

// ImageClassificationMeta

// repeated .TuriCreate.Annotation.Specification.MetaLabel label = 1;
inline int ImageClassificationMeta::label_size() const {
  return label_.size();
}
inline void ImageClassificationMeta::clear_label() {
  label_.Clear();
}
inline const ::TuriCreate::Annotation::Specification::MetaLabel& ImageClassificationMeta::label(int index) const {
  // @@protoc_insertion_point(field_get:TuriCreate.Annotation.Specification.ImageClassificationMeta.label)
  return label_.Get(index);
}
inline ::TuriCreate::Annotation::Specification::MetaLabel* ImageClassificationMeta::mutable_label(int index) {
  // @@protoc_insertion_point(field_mutable:TuriCreate.Annotation.Specification.ImageClassificationMeta.label)
  return label_.Mutable(index);
}
inline ::TuriCreate::Annotation::Specification::MetaLabel* ImageClassificationMeta::add_label() {
  // @@protoc_insertion_point(field_add:TuriCreate.Annotation.Specification.ImageClassificationMeta.label)
  return label_.Add();
}
inline ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >*
ImageClassificationMeta::mutable_label() {
  // @@protoc_insertion_point(field_mutable_list:TuriCreate.Annotation.Specification.ImageClassificationMeta.label)
  return &label_;
}
inline const ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >&
ImageClassificationMeta::label() const {
  // @@protoc_insertion_point(field_list:TuriCreate.Annotation.Specification.ImageClassificationMeta.label)
  return label_;
}

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

// ObjectDetectionMeta

// repeated .TuriCreate.Annotation.Specification.MetaLabel label = 1;
inline int ObjectDetectionMeta::label_size() const {
  return label_.size();
}
inline void ObjectDetectionMeta::clear_label() {
  label_.Clear();
}
inline const ::TuriCreate::Annotation::Specification::MetaLabel& ObjectDetectionMeta::label(int index) const {
  // @@protoc_insertion_point(field_get:TuriCreate.Annotation.Specification.ObjectDetectionMeta.label)
  return label_.Get(index);
}
inline ::TuriCreate::Annotation::Specification::MetaLabel* ObjectDetectionMeta::mutable_label(int index) {
  // @@protoc_insertion_point(field_mutable:TuriCreate.Annotation.Specification.ObjectDetectionMeta.label)
  return label_.Mutable(index);
}
inline ::TuriCreate::Annotation::Specification::MetaLabel* ObjectDetectionMeta::add_label() {
  // @@protoc_insertion_point(field_add:TuriCreate.Annotation.Specification.ObjectDetectionMeta.label)
  return label_.Add();
}
inline ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >*
ObjectDetectionMeta::mutable_label() {
  // @@protoc_insertion_point(field_mutable_list:TuriCreate.Annotation.Specification.ObjectDetectionMeta.label)
  return &label_;
}
inline const ::google::protobuf::RepeatedPtrField< ::TuriCreate::Annotation::Specification::MetaLabel >&
ObjectDetectionMeta::label() const {
  // @@protoc_insertion_point(field_list:TuriCreate.Annotation.Specification.ObjectDetectionMeta.label)
  return label_;
}

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

// MetaData

// int64 num_examples = 1;
inline void MetaData::clear_num_examples() {
  num_examples_ = GOOGLE_LONGLONG(0);
}
inline ::google::protobuf::int64 MetaData::num_examples() const {
  // @@protoc_insertion_point(field_get:TuriCreate.Annotation.Specification.MetaData.num_examples)
  return num_examples_;
}
inline void MetaData::set_num_examples(::google::protobuf::int64 value) {
  
  num_examples_ = value;
  // @@protoc_insertion_point(field_set:TuriCreate.Annotation.Specification.MetaData.num_examples)
}

// .TuriCreate.Annotation.Specification.MetaData.AnnotationType type = 2;
inline void MetaData::clear_type() {
  type_ = 0;
}
inline ::TuriCreate::Annotation::Specification::MetaData_AnnotationType MetaData::type() const {
  // @@protoc_insertion_point(field_get:TuriCreate.Annotation.Specification.MetaData.type)
  return static_cast< ::TuriCreate::Annotation::Specification::MetaData_AnnotationType >(type_);
}
inline void MetaData::set_type(::TuriCreate::Annotation::Specification::MetaData_AnnotationType value) {
  
  type_ = value;
  // @@protoc_insertion_point(field_set:TuriCreate.Annotation.Specification.MetaData.type)
}

// .TuriCreate.Annotation.Specification.ActivityClassificationMeta activity_classification = 100;
inline bool MetaData::has_activity_classification() const {
  return Type_case() == kActivityClassification;
}
inline void MetaData::set_has_activity_classification() {
  _oneof_case_[0] = kActivityClassification;
}
inline void MetaData::clear_activity_classification() {
  if (has_activity_classification()) {
    delete Type_.activity_classification_;
    clear_has_Type();
  }
}
inline  const ::TuriCreate::Annotation::Specification::ActivityClassificationMeta& MetaData::activity_classification() const {
  // @@protoc_insertion_point(field_get:TuriCreate.Annotation.Specification.MetaData.activity_classification)
  return has_activity_classification()
      ? *Type_.activity_classification_
      : ::TuriCreate::Annotation::Specification::ActivityClassificationMeta::default_instance();
}
inline ::TuriCreate::Annotation::Specification::ActivityClassificationMeta* MetaData::mutable_activity_classification() {
  if (!has_activity_classification()) {
    clear_Type();
    set_has_activity_classification();
    Type_.activity_classification_ = new ::TuriCreate::Annotation::Specification::ActivityClassificationMeta;
  }
  // @@protoc_insertion_point(field_mutable:TuriCreate.Annotation.Specification.MetaData.activity_classification)
  return Type_.activity_classification_;
}
inline ::TuriCreate::Annotation::Specification::ActivityClassificationMeta* MetaData::release_activity_classification() {
  // @@protoc_insertion_point(field_release:TuriCreate.Annotation.Specification.MetaData.activity_classification)
  if (has_activity_classification()) {
    clear_has_Type();
    ::TuriCreate::Annotation::Specification::ActivityClassificationMeta* temp = Type_.activity_classification_;
    Type_.activity_classification_ = NULL;
    return temp;
  } else {
    return NULL;
  }
}
inline void MetaData::set_allocated_activity_classification(::TuriCreate::Annotation::Specification::ActivityClassificationMeta* activity_classification) {
  clear_Type();
  if (activity_classification) {
    set_has_activity_classification();
    Type_.activity_classification_ = activity_classification;
  }
  // @@protoc_insertion_point(field_set_allocated:TuriCreate.Annotation.Specification.MetaData.activity_classification)
}

// .TuriCreate.Annotation.Specification.AudioClassificationMeta audio_classification = 101;
inline bool MetaData::has_audio_classification() const {
  return Type_case() == kAudioClassification;
}
inline void MetaData::set_has_audio_classification() {
  _oneof_case_[0] = kAudioClassification;
}
inline void MetaData::clear_audio_classification() {
  if (has_audio_classification()) {
    delete Type_.audio_classification_;
    clear_has_Type();
  }
}
inline  const ::TuriCreate::Annotation::Specification::AudioClassificationMeta& MetaData::audio_classification() const {
  // @@protoc_insertion_point(field_get:TuriCreate.Annotation.Specification.MetaData.audio_classification)
  return has_audio_classification()
      ? *Type_.audio_classification_
      : ::TuriCreate::Annotation::Specification::AudioClassificationMeta::default_instance();
}
inline ::TuriCreate::Annotation::Specification::AudioClassificationMeta* MetaData::mutable_audio_classification() {
  if (!has_audio_classification()) {
    clear_Type();
    set_has_audio_classification();
    Type_.audio_classification_ = new ::TuriCreate::Annotation::Specification::AudioClassificationMeta;
  }
  // @@protoc_insertion_point(field_mutable:TuriCreate.Annotation.Specification.MetaData.audio_classification)
  return Type_.audio_classification_;
}
inline ::TuriCreate::Annotation::Specification::AudioClassificationMeta* MetaData::release_audio_classification() {
  // @@protoc_insertion_point(field_release:TuriCreate.Annotation.Specification.MetaData.audio_classification)
  if (has_audio_classification()) {
    clear_has_Type();
    ::TuriCreate::Annotation::Specification::AudioClassificationMeta* temp = Type_.audio_classification_;
    Type_.audio_classification_ = NULL;
    return temp;
  } else {
    return NULL;
  }
}
inline void MetaData::set_allocated_audio_classification(::TuriCreate::Annotation::Specification::AudioClassificationMeta* audio_classification) {
  clear_Type();
  if (audio_classification) {
    set_has_audio_classification();
    Type_.audio_classification_ = audio_classification;
  }
  // @@protoc_insertion_point(field_set_allocated:TuriCreate.Annotation.Specification.MetaData.audio_classification)
}

// .TuriCreate.Annotation.Specification.DrawingClassificationMeta drawing_classification = 102;
inline bool MetaData::has_drawing_classification() const {
  return Type_case() == kDrawingClassification;
}
inline void MetaData::set_has_drawing_classification() {
  _oneof_case_[0] = kDrawingClassification;
}
inline void MetaData::clear_drawing_classification() {
  if (has_drawing_classification()) {
    delete Type_.drawing_classification_;
    clear_has_Type();
  }
}
inline  const ::TuriCreate::Annotation::Specification::DrawingClassificationMeta& MetaData::drawing_classification() const {
  // @@protoc_insertion_point(field_get:TuriCreate.Annotation.Specification.MetaData.drawing_classification)
  return has_drawing_classification()
      ? *Type_.drawing_classification_
      : ::TuriCreate::Annotation::Specification::DrawingClassificationMeta::default_instance();
}
inline ::TuriCreate::Annotation::Specification::DrawingClassificationMeta* MetaData::mutable_drawing_classification() {
  if (!has_drawing_classification()) {
    clear_Type();
    set_has_drawing_classification();
    Type_.drawing_classification_ = new ::TuriCreate::Annotation::Specification::DrawingClassificationMeta;
  }
  // @@protoc_insertion_point(field_mutable:TuriCreate.Annotation.Specification.MetaData.drawing_classification)
  return Type_.drawing_classification_;
}
inline ::TuriCreate::Annotation::Specification::DrawingClassificationMeta* MetaData::release_drawing_classification() {
  // @@protoc_insertion_point(field_release:TuriCreate.Annotation.Specification.MetaData.drawing_classification)
  if (has_drawing_classification()) {
    clear_has_Type();
    ::TuriCreate::Annotation::Specification::DrawingClassificationMeta* temp = Type_.drawing_classification_;
    Type_.drawing_classification_ = NULL;
    return temp;
  } else {
    return NULL;
  }
}
inline void MetaData::set_allocated_drawing_classification(::TuriCreate::Annotation::Specification::DrawingClassificationMeta* drawing_classification) {
  clear_Type();
  if (drawing_classification) {
    set_has_drawing_classification();
    Type_.drawing_classification_ = drawing_classification;
  }
  // @@protoc_insertion_point(field_set_allocated:TuriCreate.Annotation.Specification.MetaData.drawing_classification)
}

// .TuriCreate.Annotation.Specification.ImageClassificationMeta image_classification = 103;
inline bool MetaData::has_image_classification() const {
  return Type_case() == kImageClassification;
}
inline void MetaData::set_has_image_classification() {
  _oneof_case_[0] = kImageClassification;
}
inline void MetaData::clear_image_classification() {
  if (has_image_classification()) {
    delete Type_.image_classification_;
    clear_has_Type();
  }
}
inline  const ::TuriCreate::Annotation::Specification::ImageClassificationMeta& MetaData::image_classification() const {
  // @@protoc_insertion_point(field_get:TuriCreate.Annotation.Specification.MetaData.image_classification)
  return has_image_classification()
      ? *Type_.image_classification_
      : ::TuriCreate::Annotation::Specification::ImageClassificationMeta::default_instance();
}
inline ::TuriCreate::Annotation::Specification::ImageClassificationMeta* MetaData::mutable_image_classification() {
  if (!has_image_classification()) {
    clear_Type();
    set_has_image_classification();
    Type_.image_classification_ = new ::TuriCreate::Annotation::Specification::ImageClassificationMeta;
  }
  // @@protoc_insertion_point(field_mutable:TuriCreate.Annotation.Specification.MetaData.image_classification)
  return Type_.image_classification_;
}
inline ::TuriCreate::Annotation::Specification::ImageClassificationMeta* MetaData::release_image_classification() {
  // @@protoc_insertion_point(field_release:TuriCreate.Annotation.Specification.MetaData.image_classification)
  if (has_image_classification()) {
    clear_has_Type();
    ::TuriCreate::Annotation::Specification::ImageClassificationMeta* temp = Type_.image_classification_;
    Type_.image_classification_ = NULL;
    return temp;
  } else {
    return NULL;
  }
}
inline void MetaData::set_allocated_image_classification(::TuriCreate::Annotation::Specification::ImageClassificationMeta* image_classification) {
  clear_Type();
  if (image_classification) {
    set_has_image_classification();
    Type_.image_classification_ = image_classification;
  }
  // @@protoc_insertion_point(field_set_allocated:TuriCreate.Annotation.Specification.MetaData.image_classification)
}

// .TuriCreate.Annotation.Specification.ObjectDetectionMeta object_detection = 104;
inline bool MetaData::has_object_detection() const {
  return Type_case() == kObjectDetection;
}
inline void MetaData::set_has_object_detection() {
  _oneof_case_[0] = kObjectDetection;
}
inline void MetaData::clear_object_detection() {
  if (has_object_detection()) {
    delete Type_.object_detection_;
    clear_has_Type();
  }
}
inline  const ::TuriCreate::Annotation::Specification::ObjectDetectionMeta& MetaData::object_detection() const {
  // @@protoc_insertion_point(field_get:TuriCreate.Annotation.Specification.MetaData.object_detection)
  return has_object_detection()
      ? *Type_.object_detection_
      : ::TuriCreate::Annotation::Specification::ObjectDetectionMeta::default_instance();
}
inline ::TuriCreate::Annotation::Specification::ObjectDetectionMeta* MetaData::mutable_object_detection() {
  if (!has_object_detection()) {
    clear_Type();
    set_has_object_detection();
    Type_.object_detection_ = new ::TuriCreate::Annotation::Specification::ObjectDetectionMeta;
  }
  // @@protoc_insertion_point(field_mutable:TuriCreate.Annotation.Specification.MetaData.object_detection)
  return Type_.object_detection_;
}
inline ::TuriCreate::Annotation::Specification::ObjectDetectionMeta* MetaData::release_object_detection() {
  // @@protoc_insertion_point(field_release:TuriCreate.Annotation.Specification.MetaData.object_detection)
  if (has_object_detection()) {
    clear_has_Type();
    ::TuriCreate::Annotation::Specification::ObjectDetectionMeta* temp = Type_.object_detection_;
    Type_.object_detection_ = NULL;
    return temp;
  } else {
    return NULL;
  }
}
inline void MetaData::set_allocated_object_detection(::TuriCreate::Annotation::Specification::ObjectDetectionMeta* object_detection) {
  clear_Type();
  if (object_detection) {
    set_has_object_detection();
    Type_.object_detection_ = object_detection;
  }
  // @@protoc_insertion_point(field_set_allocated:TuriCreate.Annotation.Specification.MetaData.object_detection)
}

inline bool MetaData::has_Type() const {
  return Type_case() != TYPE_NOT_SET;
}
inline void MetaData::clear_has_Type() {
  _oneof_case_[0] = TYPE_NOT_SET;
}
inline MetaData::TypeCase MetaData::Type_case() const {
  return MetaData::TypeCase(_oneof_case_[0]);
}
#endif  // !PROTOBUF_INLINE_NOT_IN_HEADERS
// -------------------------------------------------------------------

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

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

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

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

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


// @@protoc_insertion_point(namespace_scope)


}  // namespace Specification
}  // namespace Annotation
}  // namespace TuriCreate

#ifndef SWIG
namespace google {
namespace protobuf {

template <> struct is_proto_enum< ::TuriCreate::Annotation::Specification::MetaData_AnnotationType> : ::google::protobuf::internal::true_type {};

}  // namespace protobuf
}  // namespace google
#endif  // SWIG

// @@protoc_insertion_point(global_scope)

#endif  // PROTOBUF_meta_2eproto__INCLUDED
