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

#ifndef PROTOBUF_tensorflow_2fcore_2fframework_2fsummary_2eproto__INCLUDED
#define PROTOBUF_tensorflow_2fcore_2fframework_2fsummary_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/unknown_field_set.h>
#include "tensorflow/core/framework/tensor.pb.h"
// @@protoc_insertion_point(includes)

namespace tensorflow {

// Internal implementation detail -- do not call these.
void protobuf_AddDesc_tensorflow_2fcore_2fframework_2fsummary_2eproto();
void protobuf_InitDefaults_tensorflow_2fcore_2fframework_2fsummary_2eproto();
void protobuf_AssignDesc_tensorflow_2fcore_2fframework_2fsummary_2eproto();
void protobuf_ShutdownFile_tensorflow_2fcore_2fframework_2fsummary_2eproto();

class HistogramProto;
class Summary;
class SummaryDescription;
class Summary_Audio;
class Summary_Image;
class Summary_Value;

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

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

  SummaryDescription(const SummaryDescription& from);

  inline SummaryDescription& operator=(const SummaryDescription& 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 SummaryDescription& default_instance();

  static const SummaryDescription* internal_default_instance();

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

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

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

  SummaryDescription* New(::google::protobuf::Arena* arena) const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const SummaryDescription& from);
  void MergeFrom(const SummaryDescription& 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(SummaryDescription* other);
  void UnsafeMergeFrom(const SummaryDescription& from);
  protected:
  explicit SummaryDescription(::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 string type_hint = 1;
  void clear_type_hint();
  static const int kTypeHintFieldNumber = 1;
  const ::std::string& type_hint() const;
  void set_type_hint(const ::std::string& value);
  void set_type_hint(const char* value);
  void set_type_hint(const char* value, size_t size);
  ::std::string* mutable_type_hint();
  ::std::string* release_type_hint();
  void set_allocated_type_hint(::std::string* type_hint);
  ::std::string* unsafe_arena_release_type_hint();
  void unsafe_arena_set_allocated_type_hint(
      ::std::string* type_hint);

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

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  friend class ::google::protobuf::Arena;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::google::protobuf::internal::ArenaStringPtr type_hint_;
  mutable int _cached_size_;
  friend void  protobuf_InitDefaults_tensorflow_2fcore_2fframework_2fsummary_2eproto_impl();
  friend void  protobuf_AddDesc_tensorflow_2fcore_2fframework_2fsummary_2eproto_impl();
  friend void protobuf_AssignDesc_tensorflow_2fcore_2fframework_2fsummary_2eproto();
  friend void protobuf_ShutdownFile_tensorflow_2fcore_2fframework_2fsummary_2eproto();

  void InitAsDefaultInstance();
};
extern ::google::protobuf::internal::ExplicitlyConstructed<SummaryDescription> SummaryDescription_default_instance_;

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

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

  HistogramProto(const HistogramProto& from);

  inline HistogramProto& operator=(const HistogramProto& 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 HistogramProto& default_instance();

  static const HistogramProto* internal_default_instance();

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

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

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

  HistogramProto* New(::google::protobuf::Arena* arena) const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const HistogramProto& from);
  void MergeFrom(const HistogramProto& 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(HistogramProto* other);
  void UnsafeMergeFrom(const HistogramProto& from);
  protected:
  explicit HistogramProto(::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 double min = 1;
  void clear_min();
  static const int kMinFieldNumber = 1;
  double min() const;
  void set_min(double value);

  // optional double max = 2;
  void clear_max();
  static const int kMaxFieldNumber = 2;
  double max() const;
  void set_max(double value);

  // optional double num = 3;
  void clear_num();
  static const int kNumFieldNumber = 3;
  double num() const;
  void set_num(double value);

  // optional double sum = 4;
  void clear_sum();
  static const int kSumFieldNumber = 4;
  double sum() const;
  void set_sum(double value);

  // optional double sum_squares = 5;
  void clear_sum_squares();
  static const int kSumSquaresFieldNumber = 5;
  double sum_squares() const;
  void set_sum_squares(double value);

  // repeated double bucket_limit = 6 [packed = true];
  int bucket_limit_size() const;
  void clear_bucket_limit();
  static const int kBucketLimitFieldNumber = 6;
  double bucket_limit(int index) const;
  void set_bucket_limit(int index, double value);
  void add_bucket_limit(double value);
  const ::google::protobuf::RepeatedField< double >&
      bucket_limit() const;
  ::google::protobuf::RepeatedField< double >*
      mutable_bucket_limit();

  // repeated double bucket = 7 [packed = true];
  int bucket_size() const;
  void clear_bucket();
  static const int kBucketFieldNumber = 7;
  double bucket(int index) const;
  void set_bucket(int index, double value);
  void add_bucket(double value);
  const ::google::protobuf::RepeatedField< double >&
      bucket() const;
  ::google::protobuf::RepeatedField< double >*
      mutable_bucket();

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

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  friend class ::google::protobuf::Arena;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::google::protobuf::RepeatedField< double > bucket_limit_;
  mutable int _bucket_limit_cached_byte_size_;
  ::google::protobuf::RepeatedField< double > bucket_;
  mutable int _bucket_cached_byte_size_;
  double min_;
  double max_;
  double num_;
  double sum_;
  double sum_squares_;
  mutable int _cached_size_;
  friend void  protobuf_InitDefaults_tensorflow_2fcore_2fframework_2fsummary_2eproto_impl();
  friend void  protobuf_AddDesc_tensorflow_2fcore_2fframework_2fsummary_2eproto_impl();
  friend void protobuf_AssignDesc_tensorflow_2fcore_2fframework_2fsummary_2eproto();
  friend void protobuf_ShutdownFile_tensorflow_2fcore_2fframework_2fsummary_2eproto();

  void InitAsDefaultInstance();
};
extern ::google::protobuf::internal::ExplicitlyConstructed<HistogramProto> HistogramProto_default_instance_;

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

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

  Summary_Image(const Summary_Image& from);

  inline Summary_Image& operator=(const Summary_Image& 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 Summary_Image& default_instance();

  static const Summary_Image* internal_default_instance();

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

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

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

  Summary_Image* New(::google::protobuf::Arena* arena) const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const Summary_Image& from);
  void MergeFrom(const Summary_Image& 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(Summary_Image* other);
  void UnsafeMergeFrom(const Summary_Image& from);
  protected:
  explicit Summary_Image(::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 int32 height = 1;
  void clear_height();
  static const int kHeightFieldNumber = 1;
  ::google::protobuf::int32 height() const;
  void set_height(::google::protobuf::int32 value);

  // optional int32 width = 2;
  void clear_width();
  static const int kWidthFieldNumber = 2;
  ::google::protobuf::int32 width() const;
  void set_width(::google::protobuf::int32 value);

  // optional int32 colorspace = 3;
  void clear_colorspace();
  static const int kColorspaceFieldNumber = 3;
  ::google::protobuf::int32 colorspace() const;
  void set_colorspace(::google::protobuf::int32 value);

  // optional bytes encoded_image_string = 4;
  void clear_encoded_image_string();
  static const int kEncodedImageStringFieldNumber = 4;
  const ::std::string& encoded_image_string() const;
  void set_encoded_image_string(const ::std::string& value);
  void set_encoded_image_string(const char* value);
  void set_encoded_image_string(const void* value, size_t size);
  ::std::string* mutable_encoded_image_string();
  ::std::string* release_encoded_image_string();
  void set_allocated_encoded_image_string(::std::string* encoded_image_string);
  ::std::string* unsafe_arena_release_encoded_image_string();
  void unsafe_arena_set_allocated_encoded_image_string(
      ::std::string* encoded_image_string);

  // @@protoc_insertion_point(class_scope:tensorflow.Summary.Image)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  friend class ::google::protobuf::Arena;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::google::protobuf::internal::ArenaStringPtr encoded_image_string_;
  ::google::protobuf::int32 height_;
  ::google::protobuf::int32 width_;
  ::google::protobuf::int32 colorspace_;
  mutable int _cached_size_;
  friend void  protobuf_InitDefaults_tensorflow_2fcore_2fframework_2fsummary_2eproto_impl();
  friend void  protobuf_AddDesc_tensorflow_2fcore_2fframework_2fsummary_2eproto_impl();
  friend void protobuf_AssignDesc_tensorflow_2fcore_2fframework_2fsummary_2eproto();
  friend void protobuf_ShutdownFile_tensorflow_2fcore_2fframework_2fsummary_2eproto();

  void InitAsDefaultInstance();
};
extern ::google::protobuf::internal::ExplicitlyConstructed<Summary_Image> Summary_Image_default_instance_;

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

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

  Summary_Audio(const Summary_Audio& from);

  inline Summary_Audio& operator=(const Summary_Audio& 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 Summary_Audio& default_instance();

  static const Summary_Audio* internal_default_instance();

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

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

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

  Summary_Audio* New(::google::protobuf::Arena* arena) const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const Summary_Audio& from);
  void MergeFrom(const Summary_Audio& 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(Summary_Audio* other);
  void UnsafeMergeFrom(const Summary_Audio& from);
  protected:
  explicit Summary_Audio(::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 float sample_rate = 1;
  void clear_sample_rate();
  static const int kSampleRateFieldNumber = 1;
  float sample_rate() const;
  void set_sample_rate(float value);

  // optional int64 num_channels = 2;
  void clear_num_channels();
  static const int kNumChannelsFieldNumber = 2;
  ::google::protobuf::int64 num_channels() const;
  void set_num_channels(::google::protobuf::int64 value);

  // optional int64 length_frames = 3;
  void clear_length_frames();
  static const int kLengthFramesFieldNumber = 3;
  ::google::protobuf::int64 length_frames() const;
  void set_length_frames(::google::protobuf::int64 value);

  // optional bytes encoded_audio_string = 4;
  void clear_encoded_audio_string();
  static const int kEncodedAudioStringFieldNumber = 4;
  const ::std::string& encoded_audio_string() const;
  void set_encoded_audio_string(const ::std::string& value);
  void set_encoded_audio_string(const char* value);
  void set_encoded_audio_string(const void* value, size_t size);
  ::std::string* mutable_encoded_audio_string();
  ::std::string* release_encoded_audio_string();
  void set_allocated_encoded_audio_string(::std::string* encoded_audio_string);
  ::std::string* unsafe_arena_release_encoded_audio_string();
  void unsafe_arena_set_allocated_encoded_audio_string(
      ::std::string* encoded_audio_string);

  // optional string content_type = 5;
  void clear_content_type();
  static const int kContentTypeFieldNumber = 5;
  const ::std::string& content_type() const;
  void set_content_type(const ::std::string& value);
  void set_content_type(const char* value);
  void set_content_type(const char* value, size_t size);
  ::std::string* mutable_content_type();
  ::std::string* release_content_type();
  void set_allocated_content_type(::std::string* content_type);
  ::std::string* unsafe_arena_release_content_type();
  void unsafe_arena_set_allocated_content_type(
      ::std::string* content_type);

  // @@protoc_insertion_point(class_scope:tensorflow.Summary.Audio)
 private:

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  friend class ::google::protobuf::Arena;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::google::protobuf::internal::ArenaStringPtr encoded_audio_string_;
  ::google::protobuf::internal::ArenaStringPtr content_type_;
  ::google::protobuf::int64 num_channels_;
  ::google::protobuf::int64 length_frames_;
  float sample_rate_;
  mutable int _cached_size_;
  friend void  protobuf_InitDefaults_tensorflow_2fcore_2fframework_2fsummary_2eproto_impl();
  friend void  protobuf_AddDesc_tensorflow_2fcore_2fframework_2fsummary_2eproto_impl();
  friend void protobuf_AssignDesc_tensorflow_2fcore_2fframework_2fsummary_2eproto();
  friend void protobuf_ShutdownFile_tensorflow_2fcore_2fframework_2fsummary_2eproto();

  void InitAsDefaultInstance();
};
extern ::google::protobuf::internal::ExplicitlyConstructed<Summary_Audio> Summary_Audio_default_instance_;

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

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

  Summary_Value(const Summary_Value& from);

  inline Summary_Value& operator=(const Summary_Value& 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 Summary_Value& default_instance();

  enum ValueCase {
    kSimpleValue = 2,
    kObsoleteOldStyleHistogram = 3,
    kImage = 4,
    kHisto = 5,
    kAudio = 6,
    kTensor = 8,
    VALUE_NOT_SET = 0,
  };

  static const Summary_Value* internal_default_instance();

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

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

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

  Summary_Value* New(::google::protobuf::Arena* arena) const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const Summary_Value& from);
  void MergeFrom(const Summary_Value& 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(Summary_Value* other);
  void UnsafeMergeFrom(const Summary_Value& from);
  protected:
  explicit Summary_Value(::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 string node_name = 7;
  void clear_node_name();
  static const int kNodeNameFieldNumber = 7;
  const ::std::string& node_name() const;
  void set_node_name(const ::std::string& value);
  void set_node_name(const char* value);
  void set_node_name(const char* value, size_t size);
  ::std::string* mutable_node_name();
  ::std::string* release_node_name();
  void set_allocated_node_name(::std::string* node_name);
  ::std::string* unsafe_arena_release_node_name();
  void unsafe_arena_set_allocated_node_name(
      ::std::string* node_name);

  // optional string tag = 1;
  void clear_tag();
  static const int kTagFieldNumber = 1;
  const ::std::string& tag() const;
  void set_tag(const ::std::string& value);
  void set_tag(const char* value);
  void set_tag(const char* value, size_t size);
  ::std::string* mutable_tag();
  ::std::string* release_tag();
  void set_allocated_tag(::std::string* tag);
  ::std::string* unsafe_arena_release_tag();
  void unsafe_arena_set_allocated_tag(
      ::std::string* tag);

  // optional float simple_value = 2;
  private:
  bool has_simple_value() const;
  public:
  void clear_simple_value();
  static const int kSimpleValueFieldNumber = 2;
  float simple_value() const;
  void set_simple_value(float value);

  // optional bytes obsolete_old_style_histogram = 3;
  private:
  bool has_obsolete_old_style_histogram() const;
  public:
  void clear_obsolete_old_style_histogram();
  static const int kObsoleteOldStyleHistogramFieldNumber = 3;
  const ::std::string& obsolete_old_style_histogram() const;
  void set_obsolete_old_style_histogram(const ::std::string& value);
  void set_obsolete_old_style_histogram(const char* value);
  void set_obsolete_old_style_histogram(const void* value, size_t size);
  ::std::string* mutable_obsolete_old_style_histogram();
  ::std::string* release_obsolete_old_style_histogram();
  void set_allocated_obsolete_old_style_histogram(::std::string* obsolete_old_style_histogram);
  ::std::string* unsafe_arena_release_obsolete_old_style_histogram();
  void unsafe_arena_set_allocated_obsolete_old_style_histogram(
      ::std::string* obsolete_old_style_histogram);

  // optional .tensorflow.Summary.Image image = 4;
  bool has_image() const;
  void clear_image();
  static const int kImageFieldNumber = 4;
  private:
  void _slow_mutable_image();
  void _slow_set_allocated_image(
      ::google::protobuf::Arena* message_arena, ::tensorflow::Summary_Image** image);
  ::tensorflow::Summary_Image* _slow_release_image();
  public:
  const ::tensorflow::Summary_Image& image() const;
  ::tensorflow::Summary_Image* mutable_image();
  ::tensorflow::Summary_Image* release_image();
  void set_allocated_image(::tensorflow::Summary_Image* image);
  ::tensorflow::Summary_Image* unsafe_arena_release_image();
  void unsafe_arena_set_allocated_image(
      ::tensorflow::Summary_Image* image);

  // optional .tensorflow.HistogramProto histo = 5;
  bool has_histo() const;
  void clear_histo();
  static const int kHistoFieldNumber = 5;
  private:
  void _slow_mutable_histo();
  void _slow_set_allocated_histo(
      ::google::protobuf::Arena* message_arena, ::tensorflow::HistogramProto** histo);
  ::tensorflow::HistogramProto* _slow_release_histo();
  public:
  const ::tensorflow::HistogramProto& histo() const;
  ::tensorflow::HistogramProto* mutable_histo();
  ::tensorflow::HistogramProto* release_histo();
  void set_allocated_histo(::tensorflow::HistogramProto* histo);
  ::tensorflow::HistogramProto* unsafe_arena_release_histo();
  void unsafe_arena_set_allocated_histo(
      ::tensorflow::HistogramProto* histo);

  // optional .tensorflow.Summary.Audio audio = 6;
  bool has_audio() const;
  void clear_audio();
  static const int kAudioFieldNumber = 6;
  private:
  void _slow_mutable_audio();
  void _slow_set_allocated_audio(
      ::google::protobuf::Arena* message_arena, ::tensorflow::Summary_Audio** audio);
  ::tensorflow::Summary_Audio* _slow_release_audio();
  public:
  const ::tensorflow::Summary_Audio& audio() const;
  ::tensorflow::Summary_Audio* mutable_audio();
  ::tensorflow::Summary_Audio* release_audio();
  void set_allocated_audio(::tensorflow::Summary_Audio* audio);
  ::tensorflow::Summary_Audio* unsafe_arena_release_audio();
  void unsafe_arena_set_allocated_audio(
      ::tensorflow::Summary_Audio* audio);

  // optional .tensorflow.TensorProto tensor = 8;
  bool has_tensor() const;
  void clear_tensor();
  static const int kTensorFieldNumber = 8;
  private:
  void _slow_mutable_tensor();
  void _slow_set_allocated_tensor(
      ::google::protobuf::Arena* message_arena, ::tensorflow::TensorProto** tensor);
  ::tensorflow::TensorProto* _slow_release_tensor();
  public:
  const ::tensorflow::TensorProto& tensor() const;
  ::tensorflow::TensorProto* mutable_tensor();
  ::tensorflow::TensorProto* release_tensor();
  void set_allocated_tensor(::tensorflow::TensorProto* tensor);
  ::tensorflow::TensorProto* unsafe_arena_release_tensor();
  void unsafe_arena_set_allocated_tensor(
      ::tensorflow::TensorProto* tensor);

  ValueCase value_case() const;
  // @@protoc_insertion_point(class_scope:tensorflow.Summary.Value)
 private:
  inline void set_has_simple_value();
  inline void set_has_obsolete_old_style_histogram();
  inline void set_has_image();
  inline void set_has_histo();
  inline void set_has_audio();
  inline void set_has_tensor();

  inline bool has_value() const;
  void clear_value();
  inline void clear_has_value();

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  friend class ::google::protobuf::Arena;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::google::protobuf::internal::ArenaStringPtr node_name_;
  ::google::protobuf::internal::ArenaStringPtr tag_;
  union ValueUnion {
    ValueUnion() {}
    float simple_value_;
    ::google::protobuf::internal::ArenaStringPtr obsolete_old_style_histogram_;
    ::tensorflow::Summary_Image* image_;
    ::tensorflow::HistogramProto* histo_;
    ::tensorflow::Summary_Audio* audio_;
    ::tensorflow::TensorProto* tensor_;
  } value_;
  mutable int _cached_size_;
  ::google::protobuf::uint32 _oneof_case_[1];

  friend void  protobuf_InitDefaults_tensorflow_2fcore_2fframework_2fsummary_2eproto_impl();
  friend void  protobuf_AddDesc_tensorflow_2fcore_2fframework_2fsummary_2eproto_impl();
  friend void protobuf_AssignDesc_tensorflow_2fcore_2fframework_2fsummary_2eproto();
  friend void protobuf_ShutdownFile_tensorflow_2fcore_2fframework_2fsummary_2eproto();

  void InitAsDefaultInstance();
};
extern ::google::protobuf::internal::ExplicitlyConstructed<Summary_Value> Summary_Value_default_instance_;

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

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

  Summary(const Summary& from);

  inline Summary& operator=(const Summary& 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 Summary& default_instance();

  static const Summary* internal_default_instance();

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

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

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

  Summary* New(::google::protobuf::Arena* arena) const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const Summary& from);
  void MergeFrom(const Summary& 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(Summary* other);
  void UnsafeMergeFrom(const Summary& from);
  protected:
  explicit Summary(::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 ----------------------------------------------------

  typedef Summary_Image Image;
  typedef Summary_Audio Audio;
  typedef Summary_Value Value;

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

  // repeated .tensorflow.Summary.Value value = 1;
  int value_size() const;
  void clear_value();
  static const int kValueFieldNumber = 1;
  const ::tensorflow::Summary_Value& value(int index) const;
  ::tensorflow::Summary_Value* mutable_value(int index);
  ::tensorflow::Summary_Value* add_value();
  ::google::protobuf::RepeatedPtrField< ::tensorflow::Summary_Value >*
      mutable_value();
  const ::google::protobuf::RepeatedPtrField< ::tensorflow::Summary_Value >&
      value() const;

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

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  friend class ::google::protobuf::Arena;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::google::protobuf::RepeatedPtrField< ::tensorflow::Summary_Value > value_;
  mutable int _cached_size_;
  friend void  protobuf_InitDefaults_tensorflow_2fcore_2fframework_2fsummary_2eproto_impl();
  friend void  protobuf_AddDesc_tensorflow_2fcore_2fframework_2fsummary_2eproto_impl();
  friend void protobuf_AssignDesc_tensorflow_2fcore_2fframework_2fsummary_2eproto();
  friend void protobuf_ShutdownFile_tensorflow_2fcore_2fframework_2fsummary_2eproto();

  void InitAsDefaultInstance();
};
extern ::google::protobuf::internal::ExplicitlyConstructed<Summary> Summary_default_instance_;

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


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

#if !PROTOBUF_INLINE_NOT_IN_HEADERS
// SummaryDescription

// optional string type_hint = 1;
inline void SummaryDescription::clear_type_hint() {
  type_hint_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline const ::std::string& SummaryDescription::type_hint() const {
  // @@protoc_insertion_point(field_get:tensorflow.SummaryDescription.type_hint)
  return type_hint_.Get(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void SummaryDescription::set_type_hint(const ::std::string& value) {
  
  type_hint_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set:tensorflow.SummaryDescription.type_hint)
}
inline void SummaryDescription::set_type_hint(const char* value) {
  
  type_hint_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_char:tensorflow.SummaryDescription.type_hint)
}
inline void SummaryDescription::set_type_hint(const char* value,
    size_t size) {
  
  type_hint_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_pointer:tensorflow.SummaryDescription.type_hint)
}
inline ::std::string* SummaryDescription::mutable_type_hint() {
  
  // @@protoc_insertion_point(field_mutable:tensorflow.SummaryDescription.type_hint)
  return type_hint_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* SummaryDescription::release_type_hint() {
  // @@protoc_insertion_point(field_release:tensorflow.SummaryDescription.type_hint)
  
  return type_hint_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* SummaryDescription::unsafe_arena_release_type_hint() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.SummaryDescription.type_hint)
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  
  return type_hint_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
}
inline void SummaryDescription::set_allocated_type_hint(::std::string* type_hint) {
  if (type_hint != NULL) {
    
  } else {
    
  }
  type_hint_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), type_hint,
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_allocated:tensorflow.SummaryDescription.type_hint)
}
inline void SummaryDescription::unsafe_arena_set_allocated_type_hint(
    ::std::string* type_hint) {
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  if (type_hint != NULL) {
    
  } else {
    
  }
  type_hint_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      type_hint, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.SummaryDescription.type_hint)
}

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

// HistogramProto

// optional double min = 1;
inline void HistogramProto::clear_min() {
  min_ = 0;
}
inline double HistogramProto::min() const {
  // @@protoc_insertion_point(field_get:tensorflow.HistogramProto.min)
  return min_;
}
inline void HistogramProto::set_min(double value) {
  
  min_ = value;
  // @@protoc_insertion_point(field_set:tensorflow.HistogramProto.min)
}

// optional double max = 2;
inline void HistogramProto::clear_max() {
  max_ = 0;
}
inline double HistogramProto::max() const {
  // @@protoc_insertion_point(field_get:tensorflow.HistogramProto.max)
  return max_;
}
inline void HistogramProto::set_max(double value) {
  
  max_ = value;
  // @@protoc_insertion_point(field_set:tensorflow.HistogramProto.max)
}

// optional double num = 3;
inline void HistogramProto::clear_num() {
  num_ = 0;
}
inline double HistogramProto::num() const {
  // @@protoc_insertion_point(field_get:tensorflow.HistogramProto.num)
  return num_;
}
inline void HistogramProto::set_num(double value) {
  
  num_ = value;
  // @@protoc_insertion_point(field_set:tensorflow.HistogramProto.num)
}

// optional double sum = 4;
inline void HistogramProto::clear_sum() {
  sum_ = 0;
}
inline double HistogramProto::sum() const {
  // @@protoc_insertion_point(field_get:tensorflow.HistogramProto.sum)
  return sum_;
}
inline void HistogramProto::set_sum(double value) {
  
  sum_ = value;
  // @@protoc_insertion_point(field_set:tensorflow.HistogramProto.sum)
}

// optional double sum_squares = 5;
inline void HistogramProto::clear_sum_squares() {
  sum_squares_ = 0;
}
inline double HistogramProto::sum_squares() const {
  // @@protoc_insertion_point(field_get:tensorflow.HistogramProto.sum_squares)
  return sum_squares_;
}
inline void HistogramProto::set_sum_squares(double value) {
  
  sum_squares_ = value;
  // @@protoc_insertion_point(field_set:tensorflow.HistogramProto.sum_squares)
}

// repeated double bucket_limit = 6 [packed = true];
inline int HistogramProto::bucket_limit_size() const {
  return bucket_limit_.size();
}
inline void HistogramProto::clear_bucket_limit() {
  bucket_limit_.Clear();
}
inline double HistogramProto::bucket_limit(int index) const {
  // @@protoc_insertion_point(field_get:tensorflow.HistogramProto.bucket_limit)
  return bucket_limit_.Get(index);
}
inline void HistogramProto::set_bucket_limit(int index, double value) {
  bucket_limit_.Set(index, value);
  // @@protoc_insertion_point(field_set:tensorflow.HistogramProto.bucket_limit)
}
inline void HistogramProto::add_bucket_limit(double value) {
  bucket_limit_.Add(value);
  // @@protoc_insertion_point(field_add:tensorflow.HistogramProto.bucket_limit)
}
inline const ::google::protobuf::RepeatedField< double >&
HistogramProto::bucket_limit() const {
  // @@protoc_insertion_point(field_list:tensorflow.HistogramProto.bucket_limit)
  return bucket_limit_;
}
inline ::google::protobuf::RepeatedField< double >*
HistogramProto::mutable_bucket_limit() {
  // @@protoc_insertion_point(field_mutable_list:tensorflow.HistogramProto.bucket_limit)
  return &bucket_limit_;
}

// repeated double bucket = 7 [packed = true];
inline int HistogramProto::bucket_size() const {
  return bucket_.size();
}
inline void HistogramProto::clear_bucket() {
  bucket_.Clear();
}
inline double HistogramProto::bucket(int index) const {
  // @@protoc_insertion_point(field_get:tensorflow.HistogramProto.bucket)
  return bucket_.Get(index);
}
inline void HistogramProto::set_bucket(int index, double value) {
  bucket_.Set(index, value);
  // @@protoc_insertion_point(field_set:tensorflow.HistogramProto.bucket)
}
inline void HistogramProto::add_bucket(double value) {
  bucket_.Add(value);
  // @@protoc_insertion_point(field_add:tensorflow.HistogramProto.bucket)
}
inline const ::google::protobuf::RepeatedField< double >&
HistogramProto::bucket() const {
  // @@protoc_insertion_point(field_list:tensorflow.HistogramProto.bucket)
  return bucket_;
}
inline ::google::protobuf::RepeatedField< double >*
HistogramProto::mutable_bucket() {
  // @@protoc_insertion_point(field_mutable_list:tensorflow.HistogramProto.bucket)
  return &bucket_;
}

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

// Summary_Image

// optional int32 height = 1;
inline void Summary_Image::clear_height() {
  height_ = 0;
}
inline ::google::protobuf::int32 Summary_Image::height() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Image.height)
  return height_;
}
inline void Summary_Image::set_height(::google::protobuf::int32 value) {
  
  height_ = value;
  // @@protoc_insertion_point(field_set:tensorflow.Summary.Image.height)
}

// optional int32 width = 2;
inline void Summary_Image::clear_width() {
  width_ = 0;
}
inline ::google::protobuf::int32 Summary_Image::width() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Image.width)
  return width_;
}
inline void Summary_Image::set_width(::google::protobuf::int32 value) {
  
  width_ = value;
  // @@protoc_insertion_point(field_set:tensorflow.Summary.Image.width)
}

// optional int32 colorspace = 3;
inline void Summary_Image::clear_colorspace() {
  colorspace_ = 0;
}
inline ::google::protobuf::int32 Summary_Image::colorspace() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Image.colorspace)
  return colorspace_;
}
inline void Summary_Image::set_colorspace(::google::protobuf::int32 value) {
  
  colorspace_ = value;
  // @@protoc_insertion_point(field_set:tensorflow.Summary.Image.colorspace)
}

// optional bytes encoded_image_string = 4;
inline void Summary_Image::clear_encoded_image_string() {
  encoded_image_string_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline const ::std::string& Summary_Image::encoded_image_string() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Image.encoded_image_string)
  return encoded_image_string_.Get(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void Summary_Image::set_encoded_image_string(const ::std::string& value) {
  
  encoded_image_string_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set:tensorflow.Summary.Image.encoded_image_string)
}
inline void Summary_Image::set_encoded_image_string(const char* value) {
  
  encoded_image_string_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_char:tensorflow.Summary.Image.encoded_image_string)
}
inline void Summary_Image::set_encoded_image_string(const void* value,
    size_t size) {
  
  encoded_image_string_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_pointer:tensorflow.Summary.Image.encoded_image_string)
}
inline ::std::string* Summary_Image::mutable_encoded_image_string() {
  
  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Image.encoded_image_string)
  return encoded_image_string_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* Summary_Image::release_encoded_image_string() {
  // @@protoc_insertion_point(field_release:tensorflow.Summary.Image.encoded_image_string)
  
  return encoded_image_string_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* Summary_Image::unsafe_arena_release_encoded_image_string() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Image.encoded_image_string)
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  
  return encoded_image_string_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
}
inline void Summary_Image::set_allocated_encoded_image_string(::std::string* encoded_image_string) {
  if (encoded_image_string != NULL) {
    
  } else {
    
  }
  encoded_image_string_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), encoded_image_string,
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Image.encoded_image_string)
}
inline void Summary_Image::unsafe_arena_set_allocated_encoded_image_string(
    ::std::string* encoded_image_string) {
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  if (encoded_image_string != NULL) {
    
  } else {
    
  }
  encoded_image_string_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      encoded_image_string, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Image.encoded_image_string)
}

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

// Summary_Audio

// optional float sample_rate = 1;
inline void Summary_Audio::clear_sample_rate() {
  sample_rate_ = 0;
}
inline float Summary_Audio::sample_rate() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Audio.sample_rate)
  return sample_rate_;
}
inline void Summary_Audio::set_sample_rate(float value) {
  
  sample_rate_ = value;
  // @@protoc_insertion_point(field_set:tensorflow.Summary.Audio.sample_rate)
}

// optional int64 num_channels = 2;
inline void Summary_Audio::clear_num_channels() {
  num_channels_ = GOOGLE_LONGLONG(0);
}
inline ::google::protobuf::int64 Summary_Audio::num_channels() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Audio.num_channels)
  return num_channels_;
}
inline void Summary_Audio::set_num_channels(::google::protobuf::int64 value) {
  
  num_channels_ = value;
  // @@protoc_insertion_point(field_set:tensorflow.Summary.Audio.num_channels)
}

// optional int64 length_frames = 3;
inline void Summary_Audio::clear_length_frames() {
  length_frames_ = GOOGLE_LONGLONG(0);
}
inline ::google::protobuf::int64 Summary_Audio::length_frames() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Audio.length_frames)
  return length_frames_;
}
inline void Summary_Audio::set_length_frames(::google::protobuf::int64 value) {
  
  length_frames_ = value;
  // @@protoc_insertion_point(field_set:tensorflow.Summary.Audio.length_frames)
}

// optional bytes encoded_audio_string = 4;
inline void Summary_Audio::clear_encoded_audio_string() {
  encoded_audio_string_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline const ::std::string& Summary_Audio::encoded_audio_string() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Audio.encoded_audio_string)
  return encoded_audio_string_.Get(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void Summary_Audio::set_encoded_audio_string(const ::std::string& value) {
  
  encoded_audio_string_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set:tensorflow.Summary.Audio.encoded_audio_string)
}
inline void Summary_Audio::set_encoded_audio_string(const char* value) {
  
  encoded_audio_string_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_char:tensorflow.Summary.Audio.encoded_audio_string)
}
inline void Summary_Audio::set_encoded_audio_string(const void* value,
    size_t size) {
  
  encoded_audio_string_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_pointer:tensorflow.Summary.Audio.encoded_audio_string)
}
inline ::std::string* Summary_Audio::mutable_encoded_audio_string() {
  
  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Audio.encoded_audio_string)
  return encoded_audio_string_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* Summary_Audio::release_encoded_audio_string() {
  // @@protoc_insertion_point(field_release:tensorflow.Summary.Audio.encoded_audio_string)
  
  return encoded_audio_string_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* Summary_Audio::unsafe_arena_release_encoded_audio_string() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Audio.encoded_audio_string)
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  
  return encoded_audio_string_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
}
inline void Summary_Audio::set_allocated_encoded_audio_string(::std::string* encoded_audio_string) {
  if (encoded_audio_string != NULL) {
    
  } else {
    
  }
  encoded_audio_string_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), encoded_audio_string,
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Audio.encoded_audio_string)
}
inline void Summary_Audio::unsafe_arena_set_allocated_encoded_audio_string(
    ::std::string* encoded_audio_string) {
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  if (encoded_audio_string != NULL) {
    
  } else {
    
  }
  encoded_audio_string_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      encoded_audio_string, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Audio.encoded_audio_string)
}

// optional string content_type = 5;
inline void Summary_Audio::clear_content_type() {
  content_type_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline const ::std::string& Summary_Audio::content_type() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Audio.content_type)
  return content_type_.Get(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void Summary_Audio::set_content_type(const ::std::string& value) {
  
  content_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set:tensorflow.Summary.Audio.content_type)
}
inline void Summary_Audio::set_content_type(const char* value) {
  
  content_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_char:tensorflow.Summary.Audio.content_type)
}
inline void Summary_Audio::set_content_type(const char* value,
    size_t size) {
  
  content_type_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_pointer:tensorflow.Summary.Audio.content_type)
}
inline ::std::string* Summary_Audio::mutable_content_type() {
  
  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Audio.content_type)
  return content_type_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* Summary_Audio::release_content_type() {
  // @@protoc_insertion_point(field_release:tensorflow.Summary.Audio.content_type)
  
  return content_type_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* Summary_Audio::unsafe_arena_release_content_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Audio.content_type)
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  
  return content_type_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
}
inline void Summary_Audio::set_allocated_content_type(::std::string* content_type) {
  if (content_type != NULL) {
    
  } else {
    
  }
  content_type_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), content_type,
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Audio.content_type)
}
inline void Summary_Audio::unsafe_arena_set_allocated_content_type(
    ::std::string* content_type) {
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  if (content_type != NULL) {
    
  } else {
    
  }
  content_type_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      content_type, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Audio.content_type)
}

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

// Summary_Value

// optional string node_name = 7;
inline void Summary_Value::clear_node_name() {
  node_name_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline const ::std::string& Summary_Value::node_name() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.node_name)
  return node_name_.Get(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void Summary_Value::set_node_name(const ::std::string& value) {
  
  node_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set:tensorflow.Summary.Value.node_name)
}
inline void Summary_Value::set_node_name(const char* value) {
  
  node_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_char:tensorflow.Summary.Value.node_name)
}
inline void Summary_Value::set_node_name(const char* value,
    size_t size) {
  
  node_name_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_pointer:tensorflow.Summary.Value.node_name)
}
inline ::std::string* Summary_Value::mutable_node_name() {
  
  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Value.node_name)
  return node_name_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* Summary_Value::release_node_name() {
  // @@protoc_insertion_point(field_release:tensorflow.Summary.Value.node_name)
  
  return node_name_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* Summary_Value::unsafe_arena_release_node_name() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Value.node_name)
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  
  return node_name_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
}
inline void Summary_Value::set_allocated_node_name(::std::string* node_name) {
  if (node_name != NULL) {
    
  } else {
    
  }
  node_name_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), node_name,
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Value.node_name)
}
inline void Summary_Value::unsafe_arena_set_allocated_node_name(
    ::std::string* node_name) {
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  if (node_name != NULL) {
    
  } else {
    
  }
  node_name_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      node_name, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Value.node_name)
}

// optional string tag = 1;
inline void Summary_Value::clear_tag() {
  tag_.ClearToEmpty(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline const ::std::string& Summary_Value::tag() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.tag)
  return tag_.Get(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void Summary_Value::set_tag(const ::std::string& value) {
  
  tag_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set:tensorflow.Summary.Value.tag)
}
inline void Summary_Value::set_tag(const char* value) {
  
  tag_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_char:tensorflow.Summary.Value.tag)
}
inline void Summary_Value::set_tag(const char* value,
    size_t size) {
  
  tag_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_pointer:tensorflow.Summary.Value.tag)
}
inline ::std::string* Summary_Value::mutable_tag() {
  
  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Value.tag)
  return tag_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* Summary_Value::release_tag() {
  // @@protoc_insertion_point(field_release:tensorflow.Summary.Value.tag)
  
  return tag_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
}
inline ::std::string* Summary_Value::unsafe_arena_release_tag() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Value.tag)
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  
  return tag_.UnsafeArenaRelease(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
}
inline void Summary_Value::set_allocated_tag(::std::string* tag) {
  if (tag != NULL) {
    
  } else {
    
  }
  tag_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), tag,
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Value.tag)
}
inline void Summary_Value::unsafe_arena_set_allocated_tag(
    ::std::string* tag) {
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  if (tag != NULL) {
    
  } else {
    
  }
  tag_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      tag, GetArenaNoVirtual());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Value.tag)
}

// optional float simple_value = 2;
inline bool Summary_Value::has_simple_value() const {
  return value_case() == kSimpleValue;
}
inline void Summary_Value::set_has_simple_value() {
  _oneof_case_[0] = kSimpleValue;
}
inline void Summary_Value::clear_simple_value() {
  if (has_simple_value()) {
    value_.simple_value_ = 0;
    clear_has_value();
  }
}
inline float Summary_Value::simple_value() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.simple_value)
  if (has_simple_value()) {
    return value_.simple_value_;
  }
  return 0;
}
inline void Summary_Value::set_simple_value(float value) {
  if (!has_simple_value()) {
    clear_value();
    set_has_simple_value();
  }
  value_.simple_value_ = value;
  // @@protoc_insertion_point(field_set:tensorflow.Summary.Value.simple_value)
}

// optional bytes obsolete_old_style_histogram = 3;
inline bool Summary_Value::has_obsolete_old_style_histogram() const {
  return value_case() == kObsoleteOldStyleHistogram;
}
inline void Summary_Value::set_has_obsolete_old_style_histogram() {
  _oneof_case_[0] = kObsoleteOldStyleHistogram;
}
inline void Summary_Value::clear_obsolete_old_style_histogram() {
  if (has_obsolete_old_style_histogram()) {
    value_.obsolete_old_style_histogram_.Destroy(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
    clear_has_value();
  }
}
inline const ::std::string& Summary_Value::obsolete_old_style_histogram() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.obsolete_old_style_histogram)
  if (has_obsolete_old_style_histogram()) {
    return value_.obsolete_old_style_histogram_.Get(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  return *&::google::protobuf::internal::GetEmptyStringAlreadyInited();
}
inline void Summary_Value::set_obsolete_old_style_histogram(const ::std::string& value) {
  if (!has_obsolete_old_style_histogram()) {
    clear_value();
    set_has_obsolete_old_style_histogram();
    value_.obsolete_old_style_histogram_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  value_.obsolete_old_style_histogram_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value,
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set:tensorflow.Summary.Value.obsolete_old_style_histogram)
}
inline void Summary_Value::set_obsolete_old_style_histogram(const char* value) {
  if (!has_obsolete_old_style_histogram()) {
    clear_value();
    set_has_obsolete_old_style_histogram();
    value_.obsolete_old_style_histogram_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  value_.obsolete_old_style_histogram_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(value), GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_char:tensorflow.Summary.Value.obsolete_old_style_histogram)
}
inline void Summary_Value::set_obsolete_old_style_histogram(const void* value,
                             size_t size) {
  if (!has_obsolete_old_style_histogram()) {
    clear_value();
    set_has_obsolete_old_style_histogram();
    value_.obsolete_old_style_histogram_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  value_.obsolete_old_style_histogram_.Set(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size),
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_set_pointer:tensorflow.Summary.Value.obsolete_old_style_histogram)
}
inline ::std::string* Summary_Value::mutable_obsolete_old_style_histogram() {
  if (!has_obsolete_old_style_histogram()) {
    clear_value();
    set_has_obsolete_old_style_histogram();
    value_.obsolete_old_style_histogram_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  return value_.obsolete_old_style_histogram_.Mutable(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      GetArenaNoVirtual());
  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Value.obsolete_old_style_histogram)
}
inline ::std::string* Summary_Value::release_obsolete_old_style_histogram() {
  // @@protoc_insertion_point(field_release:tensorflow.Summary.Value.obsolete_old_style_histogram)
  if (has_obsolete_old_style_histogram()) {
    clear_has_value();
    return value_.obsolete_old_style_histogram_.Release(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
        GetArenaNoVirtual());
  } else {
    return NULL;
  }
}
inline ::std::string* Summary_Value::unsafe_arena_release_obsolete_old_style_histogram() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Value.obsolete_old_style_histogram)
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  if (has_obsolete_old_style_histogram()) {
    clear_has_value();
    return value_.obsolete_old_style_histogram_.UnsafeArenaRelease(
        &::google::protobuf::internal::GetEmptyStringAlreadyInited(), GetArenaNoVirtual());
  } else {
    return NULL;
  }
}
inline void Summary_Value::set_allocated_obsolete_old_style_histogram(::std::string* obsolete_old_style_histogram) {
  if (!has_obsolete_old_style_histogram()) {
    value_.obsolete_old_style_histogram_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  clear_value();
  if (obsolete_old_style_histogram != NULL) {
    set_has_obsolete_old_style_histogram();
    value_.obsolete_old_style_histogram_.SetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), obsolete_old_style_histogram,
        GetArenaNoVirtual());
  }
  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Value.obsolete_old_style_histogram)
}
inline void Summary_Value::unsafe_arena_set_allocated_obsolete_old_style_histogram(::std::string* obsolete_old_style_histogram) {
  GOOGLE_DCHECK(GetArenaNoVirtual() != NULL);
  if (!has_obsolete_old_style_histogram()) {
    value_.obsolete_old_style_histogram_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  clear_value();
  if (obsolete_old_style_histogram) {
    set_has_obsolete_old_style_histogram();
    value_.obsolete_old_style_histogram_.UnsafeArenaSetAllocated(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), obsolete_old_style_histogram, GetArenaNoVirtual());
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Value.obsolete_old_style_histogram)
}

// optional .tensorflow.Summary.Image image = 4;
inline bool Summary_Value::has_image() const {
  return value_case() == kImage;
}
inline void Summary_Value::set_has_image() {
  _oneof_case_[0] = kImage;
}
inline void Summary_Value::clear_image() {
  if (has_image()) {
    if (GetArenaNoVirtual() == NULL) {
      delete value_.image_;
    }
    clear_has_value();
  }
}
inline  const ::tensorflow::Summary_Image& Summary_Value::image() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.image)
  return has_image()
      ? *value_.image_
      : ::tensorflow::Summary_Image::default_instance();
}
inline ::tensorflow::Summary_Image* Summary_Value::mutable_image() {
  if (!has_image()) {
    clear_value();
    set_has_image();
    value_.image_ = 
      ::google::protobuf::Arena::CreateMessage< ::tensorflow::Summary_Image >(
      GetArenaNoVirtual());
  }
  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Value.image)
  return value_.image_;
}
inline ::tensorflow::Summary_Image* Summary_Value::release_image() {
  // @@protoc_insertion_point(field_release:tensorflow.Summary.Value.image)
  if (has_image()) {
    clear_has_value();
    if (GetArenaNoVirtual() != NULL) {
      ::tensorflow::Summary_Image* temp = new ::tensorflow::Summary_Image(*value_.image_);
      value_.image_ = NULL;
      return temp;
    } else {
      ::tensorflow::Summary_Image* temp = value_.image_;
      value_.image_ = NULL;
      return temp;
    }
  } else {
    return NULL;
  }
}
inline void Summary_Value::set_allocated_image(::tensorflow::Summary_Image* image) {
  clear_value();
  if (image) {
    if (GetArenaNoVirtual() != NULL &&
        ::google::protobuf::Arena::GetArena(image) == NULL) {
      GetArenaNoVirtual()->Own(image);
    } else if (GetArenaNoVirtual() !=
               ::google::protobuf::Arena::GetArena(image)) {
      ::tensorflow::Summary_Image* new_image = 
          ::google::protobuf::Arena::CreateMessage< ::tensorflow::Summary_Image >(
          GetArenaNoVirtual());
      new_image->CopyFrom(*image);
      image = new_image;
    }
    set_has_image();
    value_.image_ = image;
  }
  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Value.image)
}
inline  ::tensorflow::Summary_Image* Summary_Value::unsafe_arena_release_image() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Value.image)
  if (has_image()) {
    clear_has_value();
    ::tensorflow::Summary_Image* temp = value_.image_;
    value_.image_ = NULL;
    return temp;
  } else {
    return NULL;
  }
}
inline  void Summary_Value::unsafe_arena_set_allocated_image(::tensorflow::Summary_Image* image) {
  clear_value();
  if (image) {
    set_has_image();
    value_.image_ = image;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Value.image)
}

// optional .tensorflow.HistogramProto histo = 5;
inline bool Summary_Value::has_histo() const {
  return value_case() == kHisto;
}
inline void Summary_Value::set_has_histo() {
  _oneof_case_[0] = kHisto;
}
inline void Summary_Value::clear_histo() {
  if (has_histo()) {
    if (GetArenaNoVirtual() == NULL) {
      delete value_.histo_;
    }
    clear_has_value();
  }
}
inline  const ::tensorflow::HistogramProto& Summary_Value::histo() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.histo)
  return has_histo()
      ? *value_.histo_
      : ::tensorflow::HistogramProto::default_instance();
}
inline ::tensorflow::HistogramProto* Summary_Value::mutable_histo() {
  if (!has_histo()) {
    clear_value();
    set_has_histo();
    value_.histo_ = 
      ::google::protobuf::Arena::CreateMessage< ::tensorflow::HistogramProto >(
      GetArenaNoVirtual());
  }
  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Value.histo)
  return value_.histo_;
}
inline ::tensorflow::HistogramProto* Summary_Value::release_histo() {
  // @@protoc_insertion_point(field_release:tensorflow.Summary.Value.histo)
  if (has_histo()) {
    clear_has_value();
    if (GetArenaNoVirtual() != NULL) {
      ::tensorflow::HistogramProto* temp = new ::tensorflow::HistogramProto(*value_.histo_);
      value_.histo_ = NULL;
      return temp;
    } else {
      ::tensorflow::HistogramProto* temp = value_.histo_;
      value_.histo_ = NULL;
      return temp;
    }
  } else {
    return NULL;
  }
}
inline void Summary_Value::set_allocated_histo(::tensorflow::HistogramProto* histo) {
  clear_value();
  if (histo) {
    if (GetArenaNoVirtual() != NULL &&
        ::google::protobuf::Arena::GetArena(histo) == NULL) {
      GetArenaNoVirtual()->Own(histo);
    } else if (GetArenaNoVirtual() !=
               ::google::protobuf::Arena::GetArena(histo)) {
      ::tensorflow::HistogramProto* new_histo = 
          ::google::protobuf::Arena::CreateMessage< ::tensorflow::HistogramProto >(
          GetArenaNoVirtual());
      new_histo->CopyFrom(*histo);
      histo = new_histo;
    }
    set_has_histo();
    value_.histo_ = histo;
  }
  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Value.histo)
}
inline  ::tensorflow::HistogramProto* Summary_Value::unsafe_arena_release_histo() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Value.histo)
  if (has_histo()) {
    clear_has_value();
    ::tensorflow::HistogramProto* temp = value_.histo_;
    value_.histo_ = NULL;
    return temp;
  } else {
    return NULL;
  }
}
inline  void Summary_Value::unsafe_arena_set_allocated_histo(::tensorflow::HistogramProto* histo) {
  clear_value();
  if (histo) {
    set_has_histo();
    value_.histo_ = histo;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Value.histo)
}

// optional .tensorflow.Summary.Audio audio = 6;
inline bool Summary_Value::has_audio() const {
  return value_case() == kAudio;
}
inline void Summary_Value::set_has_audio() {
  _oneof_case_[0] = kAudio;
}
inline void Summary_Value::clear_audio() {
  if (has_audio()) {
    if (GetArenaNoVirtual() == NULL) {
      delete value_.audio_;
    }
    clear_has_value();
  }
}
inline  const ::tensorflow::Summary_Audio& Summary_Value::audio() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.audio)
  return has_audio()
      ? *value_.audio_
      : ::tensorflow::Summary_Audio::default_instance();
}
inline ::tensorflow::Summary_Audio* Summary_Value::mutable_audio() {
  if (!has_audio()) {
    clear_value();
    set_has_audio();
    value_.audio_ = 
      ::google::protobuf::Arena::CreateMessage< ::tensorflow::Summary_Audio >(
      GetArenaNoVirtual());
  }
  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Value.audio)
  return value_.audio_;
}
inline ::tensorflow::Summary_Audio* Summary_Value::release_audio() {
  // @@protoc_insertion_point(field_release:tensorflow.Summary.Value.audio)
  if (has_audio()) {
    clear_has_value();
    if (GetArenaNoVirtual() != NULL) {
      ::tensorflow::Summary_Audio* temp = new ::tensorflow::Summary_Audio(*value_.audio_);
      value_.audio_ = NULL;
      return temp;
    } else {
      ::tensorflow::Summary_Audio* temp = value_.audio_;
      value_.audio_ = NULL;
      return temp;
    }
  } else {
    return NULL;
  }
}
inline void Summary_Value::set_allocated_audio(::tensorflow::Summary_Audio* audio) {
  clear_value();
  if (audio) {
    if (GetArenaNoVirtual() != NULL &&
        ::google::protobuf::Arena::GetArena(audio) == NULL) {
      GetArenaNoVirtual()->Own(audio);
    } else if (GetArenaNoVirtual() !=
               ::google::protobuf::Arena::GetArena(audio)) {
      ::tensorflow::Summary_Audio* new_audio = 
          ::google::protobuf::Arena::CreateMessage< ::tensorflow::Summary_Audio >(
          GetArenaNoVirtual());
      new_audio->CopyFrom(*audio);
      audio = new_audio;
    }
    set_has_audio();
    value_.audio_ = audio;
  }
  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Value.audio)
}
inline  ::tensorflow::Summary_Audio* Summary_Value::unsafe_arena_release_audio() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Value.audio)
  if (has_audio()) {
    clear_has_value();
    ::tensorflow::Summary_Audio* temp = value_.audio_;
    value_.audio_ = NULL;
    return temp;
  } else {
    return NULL;
  }
}
inline  void Summary_Value::unsafe_arena_set_allocated_audio(::tensorflow::Summary_Audio* audio) {
  clear_value();
  if (audio) {
    set_has_audio();
    value_.audio_ = audio;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Value.audio)
}

// optional .tensorflow.TensorProto tensor = 8;
inline bool Summary_Value::has_tensor() const {
  return value_case() == kTensor;
}
inline void Summary_Value::set_has_tensor() {
  _oneof_case_[0] = kTensor;
}
inline void Summary_Value::clear_tensor() {
  if (has_tensor()) {
    if (GetArenaNoVirtual() == NULL) {
      delete value_.tensor_;
    }
    clear_has_value();
  }
}
inline  const ::tensorflow::TensorProto& Summary_Value::tensor() const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.Value.tensor)
  return has_tensor()
      ? *value_.tensor_
      : ::tensorflow::TensorProto::default_instance();
}
inline ::tensorflow::TensorProto* Summary_Value::mutable_tensor() {
  if (!has_tensor()) {
    clear_value();
    set_has_tensor();
    value_.tensor_ = 
      ::google::protobuf::Arena::CreateMessage< ::tensorflow::TensorProto >(
      GetArenaNoVirtual());
  }
  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.Value.tensor)
  return value_.tensor_;
}
inline ::tensorflow::TensorProto* Summary_Value::release_tensor() {
  // @@protoc_insertion_point(field_release:tensorflow.Summary.Value.tensor)
  if (has_tensor()) {
    clear_has_value();
    if (GetArenaNoVirtual() != NULL) {
      ::tensorflow::TensorProto* temp = new ::tensorflow::TensorProto(*value_.tensor_);
      value_.tensor_ = NULL;
      return temp;
    } else {
      ::tensorflow::TensorProto* temp = value_.tensor_;
      value_.tensor_ = NULL;
      return temp;
    }
  } else {
    return NULL;
  }
}
inline void Summary_Value::set_allocated_tensor(::tensorflow::TensorProto* tensor) {
  clear_value();
  if (tensor) {
    if (GetArenaNoVirtual() != NULL &&
        ::google::protobuf::Arena::GetArena(tensor) == NULL) {
      GetArenaNoVirtual()->Own(tensor);
    } else if (GetArenaNoVirtual() !=
               ::google::protobuf::Arena::GetArena(tensor)) {
      ::tensorflow::TensorProto* new_tensor = 
          ::google::protobuf::Arena::CreateMessage< ::tensorflow::TensorProto >(
          GetArenaNoVirtual());
      new_tensor->CopyFrom(*tensor);
      tensor = new_tensor;
    }
    set_has_tensor();
    value_.tensor_ = tensor;
  }
  // @@protoc_insertion_point(field_set_allocated:tensorflow.Summary.Value.tensor)
}
inline  ::tensorflow::TensorProto* Summary_Value::unsafe_arena_release_tensor() {
  // @@protoc_insertion_point(field_unsafe_arena_release:tensorflow.Summary.Value.tensor)
  if (has_tensor()) {
    clear_has_value();
    ::tensorflow::TensorProto* temp = value_.tensor_;
    value_.tensor_ = NULL;
    return temp;
  } else {
    return NULL;
  }
}
inline  void Summary_Value::unsafe_arena_set_allocated_tensor(::tensorflow::TensorProto* tensor) {
  clear_value();
  if (tensor) {
    set_has_tensor();
    value_.tensor_ = tensor;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:tensorflow.Summary.Value.tensor)
}

inline bool Summary_Value::has_value() const {
  return value_case() != VALUE_NOT_SET;
}
inline void Summary_Value::clear_has_value() {
  _oneof_case_[0] = VALUE_NOT_SET;
}
inline Summary_Value::ValueCase Summary_Value::value_case() const {
  return Summary_Value::ValueCase(_oneof_case_[0]);
}
inline const Summary_Value* Summary_Value::internal_default_instance() {
  return &Summary_Value_default_instance_.get();
}
// -------------------------------------------------------------------

// Summary

// repeated .tensorflow.Summary.Value value = 1;
inline int Summary::value_size() const {
  return value_.size();
}
inline void Summary::clear_value() {
  value_.Clear();
}
inline const ::tensorflow::Summary_Value& Summary::value(int index) const {
  // @@protoc_insertion_point(field_get:tensorflow.Summary.value)
  return value_.Get(index);
}
inline ::tensorflow::Summary_Value* Summary::mutable_value(int index) {
  // @@protoc_insertion_point(field_mutable:tensorflow.Summary.value)
  return value_.Mutable(index);
}
inline ::tensorflow::Summary_Value* Summary::add_value() {
  // @@protoc_insertion_point(field_add:tensorflow.Summary.value)
  return value_.Add();
}
inline ::google::protobuf::RepeatedPtrField< ::tensorflow::Summary_Value >*
Summary::mutable_value() {
  // @@protoc_insertion_point(field_mutable_list:tensorflow.Summary.value)
  return &value_;
}
inline const ::google::protobuf::RepeatedPtrField< ::tensorflow::Summary_Value >&
Summary::value() const {
  // @@protoc_insertion_point(field_list:tensorflow.Summary.value)
  return value_;
}

inline const Summary* Summary::internal_default_instance() {
  return &Summary_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_2fframework_2fsummary_2eproto__INCLUDED
