// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: tensorflow/core/example/example_parser_configuration.proto

#ifndef PROTOBUF_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto__INCLUDED
#define PROTOBUF_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto__INCLUDED

#include <string>

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

#if GOOGLE_PROTOBUF_VERSION < 3001000
#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 3001000 < 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/arena.h>
#include <google/protobuf/arenastring.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/metadata.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/map.h>
#include <google/protobuf/map_field_inl.h>
#include <google/protobuf/unknown_field_set.h>
#include "tensorflow/core/framework/tensor_shape.pb.h"
#include "tensorflow/core/framework/tensor.pb.h"
#include "tensorflow/core/framework/types.pb.h"
// @@protoc_insertion_point(includes)

namespace tensorflow {

// Internal implementation detail -- do not call these.
void protobuf_AddDesc_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto();
void protobuf_InitDefaults_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto();
void protobuf_AssignDesc_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto();
void protobuf_ShutdownFile_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto();

class ExampleParserConfiguration;
class FeatureConfiguration;
class FixedLenFeatureProto;
class VarLenFeatureProto;

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

class VarLenFeatureProto : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.VarLenFeatureProto) */ {
 public:
  VarLenFeatureProto();
  virtual ~VarLenFeatureProto();

  VarLenFeatureProto(const VarLenFeatureProto& from);

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

  inline ::google::protobuf::Arena* GetArena() const { return GetArenaNoVirtual(); }
  inline void* GetMaybeArenaPointer() const {
    return MaybeArenaPtr();
  }
  static const ::google::protobuf::Descriptor* descriptor();
  static const VarLenFeatureProto& default_instance();

  static const VarLenFeatureProto* internal_default_instance();

  void UnsafeArenaSwap(VarLenFeatureProto* other);
  void Swap(VarLenFeatureProto* other);

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

  inline VarLenFeatureProto* New() const { return New(NULL); }

  VarLenFeatureProto* New(::google::protobuf::Arena* arena) const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const VarLenFeatureProto& from);
  void MergeFrom(const VarLenFeatureProto& from);
  void Clear();
  bool IsInitialized() const;

  size_t ByteSizeLong() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const {
    return InternalSerializeWithCachedSizesToArray(false, output);
  }
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(VarLenFeatureProto* other);
  void UnsafeMergeFrom(const VarLenFeatureProto& from);
  protected:
  explicit VarLenFeatureProto(::google::protobuf::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return _internal_metadata_.arena();
  }
  inline void* MaybeArenaPtr() const {
    return _internal_metadata_.raw_arena_ptr();
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const;

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

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

  // optional .tensorflow.DataType dtype = 1;
  void clear_dtype();
  static const int kDtypeFieldNumber = 1;
  ::tensorflow::DataType dtype() const;
  void set_dtype(::tensorflow::DataType value);

  // optional string values_output_tensor_name = 2;
  void clear_values_output_tensor_name();
  static const int kValuesOutputTensorNameFieldNumber = 2;
  const ::std::string& values_output_tensor_name() const;
  void set_values_output_tensor_name(const ::std::string& value);
  void set_values_output_tensor_name(const char* value);
  void set_values_output_tensor_name(const char* value, size_t size);
  ::std::string* mutable_values_output_tensor_name();
  ::std::string* release_values_output_tensor_name();
  void set_allocated_values_output_tensor_name(::std::string* values_output_tensor_name);
  ::std::string* unsafe_arena_release_values_output_tensor_name();
  void unsafe_arena_set_allocated_values_output_tensor_name(
      ::std::string* values_output_tensor_name);

  // optional string indices_output_tensor_name = 3;
  void clear_indices_output_tensor_name();
  static const int kIndicesOutputTensorNameFieldNumber = 3;
  const ::std::string& indices_output_tensor_name() const;
  void set_indices_output_tensor_name(const ::std::string& value);
  void set_indices_output_tensor_name(const char* value);
  void set_indices_output_tensor_name(const char* value, size_t size);
  ::std::string* mutable_indices_output_tensor_name();
  ::std::string* release_indices_output_tensor_name();
  void set_allocated_indices_output_tensor_name(::std::string* indices_output_tensor_name);
  ::std::string* unsafe_arena_release_indices_output_tensor_name();
  void unsafe_arena_set_allocated_indices_output_tensor_name(
      ::std::string* indices_output_tensor_name);

  // optional string shapes_output_tensor_name = 4;
  void clear_shapes_output_tensor_name();
  static const int kShapesOutputTensorNameFieldNumber = 4;
  const ::std::string& shapes_output_tensor_name() const;
  void set_shapes_output_tensor_name(const ::std::string& value);
  void set_shapes_output_tensor_name(const char* value);
  void set_shapes_output_tensor_name(const char* value, size_t size);
  ::std::string* mutable_shapes_output_tensor_name();
  ::std::string* release_shapes_output_tensor_name();
  void set_allocated_shapes_output_tensor_name(::std::string* shapes_output_tensor_name);
  ::std::string* unsafe_arena_release_shapes_output_tensor_name();
  void unsafe_arena_set_allocated_shapes_output_tensor_name(
      ::std::string* shapes_output_tensor_name);

  // @@protoc_insertion_point(class_scope:tensorflow.VarLenFeatureProto)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  friend class ::google::protobuf::Arena;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::google::protobuf::internal::ArenaStringPtr values_output_tensor_name_;
  ::google::protobuf::internal::ArenaStringPtr indices_output_tensor_name_;
  ::google::protobuf::internal::ArenaStringPtr shapes_output_tensor_name_;
  int dtype_;
  mutable int _cached_size_;
  friend void  protobuf_InitDefaults_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto_impl();
  friend void  protobuf_AddDesc_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto_impl();
  friend void protobuf_AssignDesc_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto();
  friend void protobuf_ShutdownFile_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto();

  void InitAsDefaultInstance();
};
extern ::google::protobuf::internal::ExplicitlyConstructed<VarLenFeatureProto> VarLenFeatureProto_default_instance_;

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

class FixedLenFeatureProto : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.FixedLenFeatureProto) */ {
 public:
  FixedLenFeatureProto();
  virtual ~FixedLenFeatureProto();

  FixedLenFeatureProto(const FixedLenFeatureProto& from);

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

  inline ::google::protobuf::Arena* GetArena() const { return GetArenaNoVirtual(); }
  inline void* GetMaybeArenaPointer() const {
    return MaybeArenaPtr();
  }
  static const ::google::protobuf::Descriptor* descriptor();
  static const FixedLenFeatureProto& default_instance();

  static const FixedLenFeatureProto* internal_default_instance();

  void UnsafeArenaSwap(FixedLenFeatureProto* other);
  void Swap(FixedLenFeatureProto* other);

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

  inline FixedLenFeatureProto* New() const { return New(NULL); }

  FixedLenFeatureProto* New(::google::protobuf::Arena* arena) const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const FixedLenFeatureProto& from);
  void MergeFrom(const FixedLenFeatureProto& from);
  void Clear();
  bool IsInitialized() const;

  size_t ByteSizeLong() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const {
    return InternalSerializeWithCachedSizesToArray(false, output);
  }
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(FixedLenFeatureProto* other);
  void UnsafeMergeFrom(const FixedLenFeatureProto& from);
  protected:
  explicit FixedLenFeatureProto(::google::protobuf::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return _internal_metadata_.arena();
  }
  inline void* MaybeArenaPtr() const {
    return _internal_metadata_.raw_arena_ptr();
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const;

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

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

  // optional .tensorflow.DataType dtype = 1;
  void clear_dtype();
  static const int kDtypeFieldNumber = 1;
  ::tensorflow::DataType dtype() const;
  void set_dtype(::tensorflow::DataType value);

  // optional .tensorflow.TensorShapeProto shape = 2;
  bool has_shape() const;
  void clear_shape();
  static const int kShapeFieldNumber = 2;
  private:
  void _slow_mutable_shape();
  void _slow_set_allocated_shape(
      ::google::protobuf::Arena* message_arena, ::tensorflow::TensorShapeProto** shape);
  ::tensorflow::TensorShapeProto* _slow_release_shape();
  public:
  const ::tensorflow::TensorShapeProto& shape() const;
  ::tensorflow::TensorShapeProto* mutable_shape();
  ::tensorflow::TensorShapeProto* release_shape();
  void set_allocated_shape(::tensorflow::TensorShapeProto* shape);
  ::tensorflow::TensorShapeProto* unsafe_arena_release_shape();
  void unsafe_arena_set_allocated_shape(
      ::tensorflow::TensorShapeProto* shape);

  // optional .tensorflow.TensorProto default_value = 3;
  bool has_default_value() const;
  void clear_default_value();
  static const int kDefaultValueFieldNumber = 3;
  private:
  void _slow_mutable_default_value();
  void _slow_set_allocated_default_value(
      ::google::protobuf::Arena* message_arena, ::tensorflow::TensorProto** default_value);
  ::tensorflow::TensorProto* _slow_release_default_value();
  public:
  const ::tensorflow::TensorProto& default_value() const;
  ::tensorflow::TensorProto* mutable_default_value();
  ::tensorflow::TensorProto* release_default_value();
  void set_allocated_default_value(::tensorflow::TensorProto* default_value);
  ::tensorflow::TensorProto* unsafe_arena_release_default_value();
  void unsafe_arena_set_allocated_default_value(
      ::tensorflow::TensorProto* default_value);

  // optional string values_output_tensor_name = 4;
  void clear_values_output_tensor_name();
  static const int kValuesOutputTensorNameFieldNumber = 4;
  const ::std::string& values_output_tensor_name() const;
  void set_values_output_tensor_name(const ::std::string& value);
  void set_values_output_tensor_name(const char* value);
  void set_values_output_tensor_name(const char* value, size_t size);
  ::std::string* mutable_values_output_tensor_name();
  ::std::string* release_values_output_tensor_name();
  void set_allocated_values_output_tensor_name(::std::string* values_output_tensor_name);
  ::std::string* unsafe_arena_release_values_output_tensor_name();
  void unsafe_arena_set_allocated_values_output_tensor_name(
      ::std::string* values_output_tensor_name);

  // @@protoc_insertion_point(class_scope:tensorflow.FixedLenFeatureProto)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  friend class ::google::protobuf::Arena;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::google::protobuf::internal::ArenaStringPtr values_output_tensor_name_;
  ::tensorflow::TensorShapeProto* shape_;
  ::tensorflow::TensorProto* default_value_;
  int dtype_;
  mutable int _cached_size_;
  friend void  protobuf_InitDefaults_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto_impl();
  friend void  protobuf_AddDesc_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto_impl();
  friend void protobuf_AssignDesc_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto();
  friend void protobuf_ShutdownFile_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto();

  void InitAsDefaultInstance();
};
extern ::google::protobuf::internal::ExplicitlyConstructed<FixedLenFeatureProto> FixedLenFeatureProto_default_instance_;

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

class FeatureConfiguration : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.FeatureConfiguration) */ {
 public:
  FeatureConfiguration();
  virtual ~FeatureConfiguration();

  FeatureConfiguration(const FeatureConfiguration& from);

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

  inline ::google::protobuf::Arena* GetArena() const { return GetArenaNoVirtual(); }
  inline void* GetMaybeArenaPointer() const {
    return MaybeArenaPtr();
  }
  static const ::google::protobuf::Descriptor* descriptor();
  static const FeatureConfiguration& default_instance();

  enum ConfigCase {
    kFixedLenFeature = 1,
    kVarLenFeature = 2,
    CONFIG_NOT_SET = 0,
  };

  static const FeatureConfiguration* internal_default_instance();

  void UnsafeArenaSwap(FeatureConfiguration* other);
  void Swap(FeatureConfiguration* other);

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

  inline FeatureConfiguration* New() const { return New(NULL); }

  FeatureConfiguration* New(::google::protobuf::Arena* arena) const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const FeatureConfiguration& from);
  void MergeFrom(const FeatureConfiguration& from);
  void Clear();
  bool IsInitialized() const;

  size_t ByteSizeLong() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const {
    return InternalSerializeWithCachedSizesToArray(false, output);
  }
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(FeatureConfiguration* other);
  void UnsafeMergeFrom(const FeatureConfiguration& from);
  protected:
  explicit FeatureConfiguration(::google::protobuf::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return _internal_metadata_.arena();
  }
  inline void* MaybeArenaPtr() const {
    return _internal_metadata_.raw_arena_ptr();
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const;

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

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

  // optional .tensorflow.FixedLenFeatureProto fixed_len_feature = 1;
  bool has_fixed_len_feature() const;
  void clear_fixed_len_feature();
  static const int kFixedLenFeatureFieldNumber = 1;
  private:
  void _slow_mutable_fixed_len_feature();
  void _slow_set_allocated_fixed_len_feature(
      ::google::protobuf::Arena* message_arena, ::tensorflow::FixedLenFeatureProto** fixed_len_feature);
  ::tensorflow::FixedLenFeatureProto* _slow_release_fixed_len_feature();
  public:
  const ::tensorflow::FixedLenFeatureProto& fixed_len_feature() const;
  ::tensorflow::FixedLenFeatureProto* mutable_fixed_len_feature();
  ::tensorflow::FixedLenFeatureProto* release_fixed_len_feature();
  void set_allocated_fixed_len_feature(::tensorflow::FixedLenFeatureProto* fixed_len_feature);
  ::tensorflow::FixedLenFeatureProto* unsafe_arena_release_fixed_len_feature();
  void unsafe_arena_set_allocated_fixed_len_feature(
      ::tensorflow::FixedLenFeatureProto* fixed_len_feature);

  // optional .tensorflow.VarLenFeatureProto var_len_feature = 2;
  bool has_var_len_feature() const;
  void clear_var_len_feature();
  static const int kVarLenFeatureFieldNumber = 2;
  private:
  void _slow_mutable_var_len_feature();
  void _slow_set_allocated_var_len_feature(
      ::google::protobuf::Arena* message_arena, ::tensorflow::VarLenFeatureProto** var_len_feature);
  ::tensorflow::VarLenFeatureProto* _slow_release_var_len_feature();
  public:
  const ::tensorflow::VarLenFeatureProto& var_len_feature() const;
  ::tensorflow::VarLenFeatureProto* mutable_var_len_feature();
  ::tensorflow::VarLenFeatureProto* release_var_len_feature();
  void set_allocated_var_len_feature(::tensorflow::VarLenFeatureProto* var_len_feature);
  ::tensorflow::VarLenFeatureProto* unsafe_arena_release_var_len_feature();
  void unsafe_arena_set_allocated_var_len_feature(
      ::tensorflow::VarLenFeatureProto* var_len_feature);

  ConfigCase config_case() const;
  // @@protoc_insertion_point(class_scope:tensorflow.FeatureConfiguration)
 private:
  inline void set_has_fixed_len_feature();
  inline void set_has_var_len_feature();

  inline bool has_config() const;
  void clear_config();
  inline void clear_has_config();

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  friend class ::google::protobuf::Arena;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  union ConfigUnion {
    ConfigUnion() {}
    ::tensorflow::FixedLenFeatureProto* fixed_len_feature_;
    ::tensorflow::VarLenFeatureProto* var_len_feature_;
  } config_;
  mutable int _cached_size_;
  ::google::protobuf::uint32 _oneof_case_[1];

  friend void  protobuf_InitDefaults_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto_impl();
  friend void  protobuf_AddDesc_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto_impl();
  friend void protobuf_AssignDesc_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto();
  friend void protobuf_ShutdownFile_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto();

  void InitAsDefaultInstance();
};
extern ::google::protobuf::internal::ExplicitlyConstructed<FeatureConfiguration> FeatureConfiguration_default_instance_;

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

class ExampleParserConfiguration : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:tensorflow.ExampleParserConfiguration) */ {
 public:
  ExampleParserConfiguration();
  virtual ~ExampleParserConfiguration();

  ExampleParserConfiguration(const ExampleParserConfiguration& from);

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

  inline ::google::protobuf::Arena* GetArena() const { return GetArenaNoVirtual(); }
  inline void* GetMaybeArenaPointer() const {
    return MaybeArenaPtr();
  }
  static const ::google::protobuf::Descriptor* descriptor();
  static const ExampleParserConfiguration& default_instance();

  static const ExampleParserConfiguration* internal_default_instance();

  void UnsafeArenaSwap(ExampleParserConfiguration* other);
  void Swap(ExampleParserConfiguration* other);

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

  inline ExampleParserConfiguration* New() const { return New(NULL); }

  ExampleParserConfiguration* New(::google::protobuf::Arena* arena) const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const ExampleParserConfiguration& from);
  void MergeFrom(const ExampleParserConfiguration& from);
  void Clear();
  bool IsInitialized() const;

  size_t ByteSizeLong() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
      bool deterministic, ::google::protobuf::uint8* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const {
    return InternalSerializeWithCachedSizesToArray(false, output);
  }
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  void InternalSwap(ExampleParserConfiguration* other);
  void UnsafeMergeFrom(const ExampleParserConfiguration& from);
  protected:
  explicit ExampleParserConfiguration(::google::protobuf::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::google::protobuf::Arena* arena);
  private:
  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
    return _internal_metadata_.arena();
  }
  inline void* MaybeArenaPtr() const {
    return _internal_metadata_.raw_arena_ptr();
  }
  public:

  ::google::protobuf::Metadata GetMetadata() const;

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


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

  // map<string, .tensorflow.FeatureConfiguration> feature_map = 1;
  int feature_map_size() const;
  void clear_feature_map();
  static const int kFeatureMapFieldNumber = 1;
  const ::google::protobuf::Map< ::std::string, ::tensorflow::FeatureConfiguration >&
      feature_map() const;
  ::google::protobuf::Map< ::std::string, ::tensorflow::FeatureConfiguration >*
      mutable_feature_map();

  // @@protoc_insertion_point(class_scope:tensorflow.ExampleParserConfiguration)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  friend class ::google::protobuf::Arena;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  typedef ::google::protobuf::internal::MapEntryLite<
      ::std::string, ::tensorflow::FeatureConfiguration,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 >
      ExampleParserConfiguration_FeatureMapEntry;
  ::google::protobuf::internal::MapField<
      ::std::string, ::tensorflow::FeatureConfiguration,
      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE,
      0 > feature_map_;
  mutable int _cached_size_;
  friend void  protobuf_InitDefaults_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto_impl();
  friend void  protobuf_AddDesc_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto_impl();
  friend void protobuf_AssignDesc_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto();
  friend void protobuf_ShutdownFile_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto();

  void InitAsDefaultInstance();
};
extern ::google::protobuf::internal::ExplicitlyConstructed<ExampleParserConfiguration> ExampleParserConfiguration_default_instance_;

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


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

#if !PROTOBUF_INLINE_NOT_IN_HEADERS
// VarLenFeatureProto

// optional .tensorflow.DataType dtype = 1;
inline void VarLenFeatureProto::clear_dtype() {
  dtype_ = 0;
}
inline ::tensorflow::DataType VarLenFeatureProto::dtype() const {
  // @@protoc_insertion_point(field_get:tensorflow.VarLenFeatureProto.dtype)
  return static_cast< ::tensorflow::DataType >(dtype_);
}
inline void VarLenFeatureProto::set_dtype(::tensorflow::DataType value) {
  
  dtype_ = value;
  // @@protoc_insertion_point(field_set:tensorflow.VarLenFeatureProto.dtype)
}

// optional string values_output_tensor_name = 2;
inline void VarLenFeatureProto::clear_values_output_tensor_name() {
  values_output_tensor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline const ::std::string& VarLenFeatureProto::values_output_tensor_name() const {
  // @@protoc_insertion_point(field_get:tensorflow.VarLenFeatureProto.values_output_tensor_name)
  return values_output_tensor_name_.Get(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void VarLenFeatureProto::set_values_output_tensor_name(const ::std::string& value) {
  
  values_output_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set:tensorflow.VarLenFeatureProto.values_output_tensor_name)
}
inline void VarLenFeatureProto::set_values_output_tensor_name(const char* value) {
  
  values_output_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_char:tensorflow.VarLenFeatureProto.values_output_tensor_name)
}
inline void VarLenFeatureProto::set_values_output_tensor_name(const char* value,
    size_t size) {
  
  values_output_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_pointer:tensorflow.VarLenFeatureProto.values_output_tensor_name)
}
inline ::std::string* VarLenFeatureProto::mutable_values_output_tensor_name() {
  
  // @@protoc_insertion_point(field_mutable:tensorflow.VarLenFeatureProto.values_output_tensor_name)
  return values_output_tensor_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* VarLenFeatureProto::release_values_output_tensor_name() {
  // @@protoc_insertion_point(field_release:tensorflow.VarLenFeatureProto.values_output_tensor_name)
  
  return values_output_tensor_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* VarLenFeatureProto::unsafe_arena_release_values_output_tensor_name() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.VarLenFeatureProto.values_output_tensor_name)
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  
  return values_output_tensor_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
}
inline void VarLenFeatureProto::set_allocated_values_output_tensor_name(::std::string* values_output_tensor_name) {
  if (values_output_tensor_name != NULL) {
    
  } else {
    
  }
  values_output_tensor_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), values_output_tensor_name,
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_allocated:tensorflow.VarLenFeatureProto.values_output_tensor_name)
}
inline void VarLenFeatureProto::unsafe_arena_set_allocated_values_output_tensor_name(
    ::std::string* values_output_tensor_name) {
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  if (values_output_tensor_name != NULL) {
    
  } else {
    
  }
  values_output_tensor_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      values_output_tensor_name, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.VarLenFeatureProto.values_output_tensor_name)
}

// optional string indices_output_tensor_name = 3;
inline void VarLenFeatureProto::clear_indices_output_tensor_name() {
  indices_output_tensor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline const ::std::string& VarLenFeatureProto::indices_output_tensor_name() const {
  // @@protoc_insertion_point(field_get:tensorflow.VarLenFeatureProto.indices_output_tensor_name)
  return indices_output_tensor_name_.Get(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void VarLenFeatureProto::set_indices_output_tensor_name(const ::std::string& value) {
  
  indices_output_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set:tensorflow.VarLenFeatureProto.indices_output_tensor_name)
}
inline void VarLenFeatureProto::set_indices_output_tensor_name(const char* value) {
  
  indices_output_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_char:tensorflow.VarLenFeatureProto.indices_output_tensor_name)
}
inline void VarLenFeatureProto::set_indices_output_tensor_name(const char* value,
    size_t size) {
  
  indices_output_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_pointer:tensorflow.VarLenFeatureProto.indices_output_tensor_name)
}
inline ::std::string* VarLenFeatureProto::mutable_indices_output_tensor_name() {
  
  // @@protoc_insertion_point(field_mutable:tensorflow.VarLenFeatureProto.indices_output_tensor_name)
  return indices_output_tensor_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* VarLenFeatureProto::release_indices_output_tensor_name() {
  // @@protoc_insertion_point(field_release:tensorflow.VarLenFeatureProto.indices_output_tensor_name)
  
  return indices_output_tensor_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* VarLenFeatureProto::unsafe_arena_release_indices_output_tensor_name() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.VarLenFeatureProto.indices_output_tensor_name)
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  
  return indices_output_tensor_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
}
inline void VarLenFeatureProto::set_allocated_indices_output_tensor_name(::std::string* indices_output_tensor_name) {
  if (indices_output_tensor_name != NULL) {
    
  } else {
    
  }
  indices_output_tensor_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), indices_output_tensor_name,
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_allocated:tensorflow.VarLenFeatureProto.indices_output_tensor_name)
}
inline void VarLenFeatureProto::unsafe_arena_set_allocated_indices_output_tensor_name(
    ::std::string* indices_output_tensor_name) {
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  if (indices_output_tensor_name != NULL) {
    
  } else {
    
  }
  indices_output_tensor_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      indices_output_tensor_name, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.VarLenFeatureProto.indices_output_tensor_name)
}

// optional string shapes_output_tensor_name = 4;
inline void VarLenFeatureProto::clear_shapes_output_tensor_name() {
  shapes_output_tensor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline const ::std::string& VarLenFeatureProto::shapes_output_tensor_name() const {
  // @@protoc_insertion_point(field_get:tensorflow.VarLenFeatureProto.shapes_output_tensor_name)
  return shapes_output_tensor_name_.Get(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void VarLenFeatureProto::set_shapes_output_tensor_name(const ::std::string& value) {
  
  shapes_output_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set:tensorflow.VarLenFeatureProto.shapes_output_tensor_name)
}
inline void VarLenFeatureProto::set_shapes_output_tensor_name(const char* value) {
  
  shapes_output_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_char:tensorflow.VarLenFeatureProto.shapes_output_tensor_name)
}
inline void VarLenFeatureProto::set_shapes_output_tensor_name(const char* value,
    size_t size) {
  
  shapes_output_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_pointer:tensorflow.VarLenFeatureProto.shapes_output_tensor_name)
}
inline ::std::string* VarLenFeatureProto::mutable_shapes_output_tensor_name() {
  
  // @@protoc_insertion_point(field_mutable:tensorflow.VarLenFeatureProto.shapes_output_tensor_name)
  return shapes_output_tensor_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* VarLenFeatureProto::release_shapes_output_tensor_name() {
  // @@protoc_insertion_point(field_release:tensorflow.VarLenFeatureProto.shapes_output_tensor_name)
  
  return shapes_output_tensor_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* VarLenFeatureProto::unsafe_arena_release_shapes_output_tensor_name() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.VarLenFeatureProto.shapes_output_tensor_name)
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  
  return shapes_output_tensor_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
}
inline void VarLenFeatureProto::set_allocated_shapes_output_tensor_name(::std::string* shapes_output_tensor_name) {
  if (shapes_output_tensor_name != NULL) {
    
  } else {
    
  }
  shapes_output_tensor_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), shapes_output_tensor_name,
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_allocated:tensorflow.VarLenFeatureProto.shapes_output_tensor_name)
}
inline void VarLenFeatureProto::unsafe_arena_set_allocated_shapes_output_tensor_name(
    ::std::string* shapes_output_tensor_name) {
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  if (shapes_output_tensor_name != NULL) {
    
  } else {
    
  }
  shapes_output_tensor_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      shapes_output_tensor_name, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.VarLenFeatureProto.shapes_output_tensor_name)
}

inline const VarLenFeatureProto* VarLenFeatureProto::internal_default_instance() {
  return &VarLenFeatureProto_default_instance_.get();
}
// -------------------------------------------------------------------

// FixedLenFeatureProto

// optional .tensorflow.DataType dtype = 1;
inline void FixedLenFeatureProto::clear_dtype() {
  dtype_ = 0;
}
inline ::tensorflow::DataType FixedLenFeatureProto::dtype() const {
  // @@protoc_insertion_point(field_get:tensorflow.FixedLenFeatureProto.dtype)
  return static_cast< ::tensorflow::DataType >(dtype_);
}
inline void FixedLenFeatureProto::set_dtype(::tensorflow::DataType value) {
  
  dtype_ = value;
  // @@protoc_insertion_point(field_set:tensorflow.FixedLenFeatureProto.dtype)
}

// optional .tensorflow.TensorShapeProto shape = 2;
inline bool FixedLenFeatureProto::has_shape() const {
  return this != internal_default_instance() && shape_ != NULL;
}
inline void FixedLenFeatureProto::clear_shape() {
  if (GetArenaNoVirtual() == NULL && shape_ != NULL) delete shape_;
  shape_ = NULL;
}
inline const ::tensorflow::TensorShapeProto& FixedLenFeatureProto::shape() const {
  // @@protoc_insertion_point(field_get:tensorflow.FixedLenFeatureProto.shape)
  return shape_ != NULL ? *shape_
                         : *::tensorflow::TensorShapeProto::internal_default_instance();
}
inline ::tensorflow::TensorShapeProto* FixedLenFeatureProto::mutable_shape() {
  
  if (shape_ == NULL) {
    _slow_mutable_shape();
  }
  // @@protoc_insertion_point(field_mutable:tensorflow.FixedLenFeatureProto.shape)
  return shape_;
}
inline ::tensorflow::TensorShapeProto* FixedLenFeatureProto::release_shape() {
  // @@protoc_insertion_point(field_release:tensorflow.FixedLenFeatureProto.shape)
  
  if (GetArenaNoVirtual() != NULL) {
    return _slow_release_shape();
  } else {
    ::tensorflow::TensorShapeProto* temp = shape_;
    shape_ = NULL;
    return temp;
  }
}
inline  void FixedLenFeatureProto::set_allocated_shape(::tensorflow::TensorShapeProto* shape) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete shape_;
  }
  if (shape != NULL) {
    _slow_set_allocated_shape(message_arena, &shape);
  }
  shape_ = shape;
  if (shape) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_set_allocated:tensorflow.FixedLenFeatureProto.shape)
}

// optional .tensorflow.TensorProto default_value = 3;
inline bool FixedLenFeatureProto::has_default_value() const {
  return this != internal_default_instance() && default_value_ != NULL;
}
inline void FixedLenFeatureProto::clear_default_value() {
  if (GetArenaNoVirtual() == NULL && default_value_ != NULL) delete default_value_;
  default_value_ = NULL;
}
inline const ::tensorflow::TensorProto& FixedLenFeatureProto::default_value() const {
  // @@protoc_insertion_point(field_get:tensorflow.FixedLenFeatureProto.default_value)
  return default_value_ != NULL ? *default_value_
                         : *::tensorflow::TensorProto::internal_default_instance();
}
inline ::tensorflow::TensorProto* FixedLenFeatureProto::mutable_default_value() {
  
  if (default_value_ == NULL) {
    _slow_mutable_default_value();
  }
  // @@protoc_insertion_point(field_mutable:tensorflow.FixedLenFeatureProto.default_value)
  return default_value_;
}
inline ::tensorflow::TensorProto* FixedLenFeatureProto::release_default_value() {
  // @@protoc_insertion_point(field_release:tensorflow.FixedLenFeatureProto.default_value)
  
  if (GetArenaNoVirtual() != NULL) {
    return _slow_release_default_value();
  } else {
    ::tensorflow::TensorProto* temp = default_value_;
    default_value_ = NULL;
    return temp;
  }
}
inline  void FixedLenFeatureProto::set_allocated_default_value(::tensorflow::TensorProto* default_value) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete default_value_;
  }
  if (default_value != NULL) {
    _slow_set_allocated_default_value(message_arena, &default_value);
  }
  default_value_ = default_value;
  if (default_value) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_set_allocated:tensorflow.FixedLenFeatureProto.default_value)
}

// optional string values_output_tensor_name = 4;
inline void FixedLenFeatureProto::clear_values_output_tensor_name() {
  values_output_tensor_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline const ::std::string& FixedLenFeatureProto::values_output_tensor_name() const {
  // @@protoc_insertion_point(field_get:tensorflow.FixedLenFeatureProto.values_output_tensor_name)
  return values_output_tensor_name_.Get(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void FixedLenFeatureProto::set_values_output_tensor_name(const ::std::string& value) {
  
  values_output_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set:tensorflow.FixedLenFeatureProto.values_output_tensor_name)
}
inline void FixedLenFeatureProto::set_values_output_tensor_name(const char* value) {
  
  values_output_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_char:tensorflow.FixedLenFeatureProto.values_output_tensor_name)
}
inline void FixedLenFeatureProto::set_values_output_tensor_name(const char* value,
    size_t size) {
  
  values_output_tensor_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_pointer:tensorflow.FixedLenFeatureProto.values_output_tensor_name)
}
inline ::std::string* FixedLenFeatureProto::mutable_values_output_tensor_name() {
  
  // @@protoc_insertion_point(field_mutable:tensorflow.FixedLenFeatureProto.values_output_tensor_name)
  return values_output_tensor_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* FixedLenFeatureProto::release_values_output_tensor_name() {
  // @@protoc_insertion_point(field_release:tensorflow.FixedLenFeatureProto.values_output_tensor_name)
  
  return values_output_tensor_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* FixedLenFeatureProto::unsafe_arena_release_values_output_tensor_name() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.FixedLenFeatureProto.values_output_tensor_name)
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  
  return values_output_tensor_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
}
inline void FixedLenFeatureProto::set_allocated_values_output_tensor_name(::std::string* values_output_tensor_name) {
  if (values_output_tensor_name != NULL) {
    
  } else {
    
  }
  values_output_tensor_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), values_output_tensor_name,
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_allocated:tensorflow.FixedLenFeatureProto.values_output_tensor_name)
}
inline void FixedLenFeatureProto::unsafe_arena_set_allocated_values_output_tensor_name(
    ::std::string* values_output_tensor_name) {
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  if (values_output_tensor_name != NULL) {
    
  } else {
    
  }
  values_output_tensor_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      values_output_tensor_name, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.FixedLenFeatureProto.values_output_tensor_name)
}

inline const FixedLenFeatureProto* FixedLenFeatureProto::internal_default_instance() {
  return &FixedLenFeatureProto_default_instance_.get();
}
// -------------------------------------------------------------------

// FeatureConfiguration

// optional .tensorflow.FixedLenFeatureProto fixed_len_feature = 1;
inline bool FeatureConfiguration::has_fixed_len_feature() const {
  return config_case() == kFixedLenFeature;
}
inline void FeatureConfiguration::set_has_fixed_len_feature() {
  _oneof_case_[0] = kFixedLenFeature;
}
inline void FeatureConfiguration::clear_fixed_len_feature() {
  if (has_fixed_len_feature()) {
    if (GetArenaNoVirtual() == NULL) {
      delete config_.fixed_len_feature_;
    }
    clear_has_config();
  }
}
inline  const ::tensorflow::FixedLenFeatureProto& FeatureConfiguration::fixed_len_feature() const {
  // @@protoc_insertion_point(field_get:tensorflow.FeatureConfiguration.fixed_len_feature)
  return has_fixed_len_feature()
      ? *config_.fixed_len_feature_
      : ::tensorflow::FixedLenFeatureProto::default_instance();
}
inline ::tensorflow::FixedLenFeatureProto* FeatureConfiguration::mutable_fixed_len_feature() {
  if (!has_fixed_len_feature()) {
    clear_config();
    set_has_fixed_len_feature();
    config_.fixed_len_feature_ = 
      ::google::protobuf::Arena::CreateMessage< ::tensorflow::FixedLenFeatureProto >(
      GetArenaNoVirtual());
  }
  // @@protoc_insertion_point(field_mutable:tensorflow.FeatureConfiguration.fixed_len_feature)
  return config_.fixed_len_feature_;
}
inline ::tensorflow::FixedLenFeatureProto* FeatureConfiguration::release_fixed_len_feature() {
  // @@protoc_insertion_point(field_release:tensorflow.FeatureConfiguration.fixed_len_feature)
  if (has_fixed_len_feature()) {
    clear_has_config();
    if (GetArenaNoVirtual() != NULL) {
      ::tensorflow::FixedLenFeatureProto* temp = new ::tensorflow::FixedLenFeatureProto(*config_.fixed_len_feature_);
      config_.fixed_len_feature_ = NULL;
      return temp;
    } else {
      ::tensorflow::FixedLenFeatureProto* temp = config_.fixed_len_feature_;
      config_.fixed_len_feature_ = NULL;
      return temp;
    }
  } else {
    return NULL;
  }
}
inline void FeatureConfiguration::set_allocated_fixed_len_feature(::tensorflow::FixedLenFeatureProto* fixed_len_feature) {
  clear_config();
  if (fixed_len_feature) {
    if (GetArenaNoVirtual() != NULL &&
        ::google::protobuf::Arena::GetArena(fixed_len_feature) == NULL) {
      GetArenaNoVirtual()->Own(fixed_len_feature);
    } else if (GetArenaNoVirtual() !=
               ::google::protobuf::Arena::GetArena(fixed_len_feature)) {
      ::tensorflow::FixedLenFeatureProto* new_fixed_len_feature = 
          ::google::protobuf::Arena::CreateMessage< ::tensorflow::FixedLenFeatureProto >(
          GetArenaNoVirtual());
      new_fixed_len_feature->CopyFrom(*fixed_len_feature);
      fixed_len_feature = new_fixed_len_feature;
    }
    set_has_fixed_len_feature();
    config_.fixed_len_feature_ = fixed_len_feature;
  }
  // @@protoc_insertion_point(field_set_allocated:tensorflow.FeatureConfiguration.fixed_len_feature)
}
inline  ::tensorflow::FixedLenFeatureProto* FeatureConfiguration::unsafe_arena_release_fixed_len_feature() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.FeatureConfiguration.fixed_len_feature)
  if (has_fixed_len_feature()) {
    clear_has_config();
    ::tensorflow::FixedLenFeatureProto* temp = config_.fixed_len_feature_;
    config_.fixed_len_feature_ = NULL;
    return temp;
  } else {
    return NULL;
  }
}
inline  void FeatureConfiguration::unsafe_arena_set_allocated_fixed_len_feature(::tensorflow::FixedLenFeatureProto* fixed_len_feature) {
  clear_config();
  if (fixed_len_feature) {
    set_has_fixed_len_feature();
    config_.fixed_len_feature_ = fixed_len_feature;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.FeatureConfiguration.fixed_len_feature)
}

// optional .tensorflow.VarLenFeatureProto var_len_feature = 2;
inline bool FeatureConfiguration::has_var_len_feature() const {
  return config_case() == kVarLenFeature;
}
inline void FeatureConfiguration::set_has_var_len_feature() {
  _oneof_case_[0] = kVarLenFeature;
}
inline void FeatureConfiguration::clear_var_len_feature() {
  if (has_var_len_feature()) {
    if (GetArenaNoVirtual() == NULL) {
      delete config_.var_len_feature_;
    }
    clear_has_config();
  }
}
inline  const ::tensorflow::VarLenFeatureProto& FeatureConfiguration::var_len_feature() const {
  // @@protoc_insertion_point(field_get:tensorflow.FeatureConfiguration.var_len_feature)
  return has_var_len_feature()
      ? *config_.var_len_feature_
      : ::tensorflow::VarLenFeatureProto::default_instance();
}
inline ::tensorflow::VarLenFeatureProto* FeatureConfiguration::mutable_var_len_feature() {
  if (!has_var_len_feature()) {
    clear_config();
    set_has_var_len_feature();
    config_.var_len_feature_ = 
      ::google::protobuf::Arena::CreateMessage< ::tensorflow::VarLenFeatureProto >(
      GetArenaNoVirtual());
  }
  // @@protoc_insertion_point(field_mutable:tensorflow.FeatureConfiguration.var_len_feature)
  return config_.var_len_feature_;
}
inline ::tensorflow::VarLenFeatureProto* FeatureConfiguration::release_var_len_feature() {
  // @@protoc_insertion_point(field_release:tensorflow.FeatureConfiguration.var_len_feature)
  if (has_var_len_feature()) {
    clear_has_config();
    if (GetArenaNoVirtual() != NULL) {
      ::tensorflow::VarLenFeatureProto* temp = new ::tensorflow::VarLenFeatureProto(*config_.var_len_feature_);
      config_.var_len_feature_ = NULL;
      return temp;
    } else {
      ::tensorflow::VarLenFeatureProto* temp = config_.var_len_feature_;
      config_.var_len_feature_ = NULL;
      return temp;
    }
  } else {
    return NULL;
  }
}
inline void FeatureConfiguration::set_allocated_var_len_feature(::tensorflow::VarLenFeatureProto* var_len_feature) {
  clear_config();
  if (var_len_feature) {
    if (GetArenaNoVirtual() != NULL &&
        ::google::protobuf::Arena::GetArena(var_len_feature) == NULL) {
      GetArenaNoVirtual()->Own(var_len_feature);
    } else if (GetArenaNoVirtual() !=
               ::google::protobuf::Arena::GetArena(var_len_feature)) {
      ::tensorflow::VarLenFeatureProto* new_var_len_feature = 
          ::google::protobuf::Arena::CreateMessage< ::tensorflow::VarLenFeatureProto >(
          GetArenaNoVirtual());
      new_var_len_feature->CopyFrom(*var_len_feature);
      var_len_feature = new_var_len_feature;
    }
    set_has_var_len_feature();
    config_.var_len_feature_ = var_len_feature;
  }
  // @@protoc_insertion_point(field_set_allocated:tensorflow.FeatureConfiguration.var_len_feature)
}
inline  ::tensorflow::VarLenFeatureProto* FeatureConfiguration::unsafe_arena_release_var_len_feature() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.FeatureConfiguration.var_len_feature)
  if (has_var_len_feature()) {
    clear_has_config();
    ::tensorflow::VarLenFeatureProto* temp = config_.var_len_feature_;
    config_.var_len_feature_ = NULL;
    return temp;
  } else {
    return NULL;
  }
}
inline  void FeatureConfiguration::unsafe_arena_set_allocated_var_len_feature(::tensorflow::VarLenFeatureProto* var_len_feature) {
  clear_config();
  if (var_len_feature) {
    set_has_var_len_feature();
    config_.var_len_feature_ = var_len_feature;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.FeatureConfiguration.var_len_feature)
}

inline bool FeatureConfiguration::has_config() const {
  return config_case() != CONFIG_NOT_SET;
}
inline void FeatureConfiguration::clear_has_config() {
  _oneof_case_[0] = CONFIG_NOT_SET;
}
inline FeatureConfiguration::ConfigCase FeatureConfiguration::config_case() const {
  return FeatureConfiguration::ConfigCase(_oneof_case_[0]);
}
inline const FeatureConfiguration* FeatureConfiguration::internal_default_instance() {
  return &FeatureConfiguration_default_instance_.get();
}
// -------------------------------------------------------------------

// ExampleParserConfiguration

// map<string, .tensorflow.FeatureConfiguration> feature_map = 1;
inline int ExampleParserConfiguration::feature_map_size() const {
  return feature_map_.size();
}
inline void ExampleParserConfiguration::clear_feature_map() {
  feature_map_.Clear();
}
inline const ::google::protobuf::Map< ::std::string, ::tensorflow::FeatureConfiguration >&
ExampleParserConfiguration::feature_map() const {
  // @@protoc_insertion_point(field_map:tensorflow.ExampleParserConfiguration.feature_map)
  return feature_map_.GetMap();
}
inline ::google::protobuf::Map< ::std::string, ::tensorflow::FeatureConfiguration >*
ExampleParserConfiguration::mutable_feature_map() {
  // @@protoc_insertion_point(field_mutable_map:tensorflow.ExampleParserConfiguration.feature_map)
  return feature_map_.MutableMap();
}

inline const ExampleParserConfiguration* ExampleParserConfiguration::internal_default_instance() {
  return &ExampleParserConfiguration_default_instance_.get();
}
#endif  // !PROTOBUF_INLINE_NOT_IN_HEADERS
// -------------------------------------------------------------------

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace tensorflow

// @@protoc_insertion_point(global_scope)

#endif  // PROTOBUF_tensorflow_2fcore_2fexample_2fexample_5fparser_5fconfiguration_2eproto__INCLUDED
