// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: tensorflow/core/profiler/protobuf/tf_function.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_tensorflow_2fcore_2fprofiler_2fprotobuf_2ftf_5ffunction_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_tensorflow_2fcore_2fprofiler_2fprotobuf_2ftf_5ffunction_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3018000
#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 3018001 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/port_undef.inc>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/arenastring.h>
#include <google/protobuf/generated_message_table_driven.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/metadata_lite.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
#include <google/protobuf/extension_set.h>  // IWYU pragma: export
#include <google/protobuf/map.h>  // IWYU pragma: export
#include <google/protobuf/map_entry.h>
#include <google/protobuf/map_field_inl.h>
#include <google/protobuf/generated_enum_reflection.h>
#include <google/protobuf/unknown_field_set.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2fcore_2fprofiler_2fprotobuf_2ftf_5ffunction_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_tensorflow_2fcore_2fprofiler_2fprotobuf_2ftf_5ffunction_2eproto {
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[5]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
  static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
  static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_tensorflow_2fcore_2fprofiler_2fprotobuf_2ftf_5ffunction_2eproto;
namespace tensorflow {
namespace profiler {
class TfFunction;
struct TfFunctionDefaultTypeInternal;
extern TfFunctionDefaultTypeInternal _TfFunction_default_instance_;
class TfFunctionDb;
struct TfFunctionDbDefaultTypeInternal;
extern TfFunctionDbDefaultTypeInternal _TfFunctionDb_default_instance_;
class TfFunctionDb_TfFunctionsEntry_DoNotUse;
struct TfFunctionDb_TfFunctionsEntry_DoNotUseDefaultTypeInternal;
extern TfFunctionDb_TfFunctionsEntry_DoNotUseDefaultTypeInternal _TfFunctionDb_TfFunctionsEntry_DoNotUse_default_instance_;
class TfFunctionMetrics;
struct TfFunctionMetricsDefaultTypeInternal;
extern TfFunctionMetricsDefaultTypeInternal _TfFunctionMetrics_default_instance_;
class TfFunction_MetricsEntry_DoNotUse;
struct TfFunction_MetricsEntry_DoNotUseDefaultTypeInternal;
extern TfFunction_MetricsEntry_DoNotUseDefaultTypeInternal _TfFunction_MetricsEntry_DoNotUse_default_instance_;
}  // namespace profiler
}  // namespace tensorflow
PROTOBUF_NAMESPACE_OPEN
template<> ::tensorflow::profiler::TfFunction* Arena::CreateMaybeMessage<::tensorflow::profiler::TfFunction>(Arena*);
template<> ::tensorflow::profiler::TfFunctionDb* Arena::CreateMaybeMessage<::tensorflow::profiler::TfFunctionDb>(Arena*);
template<> ::tensorflow::profiler::TfFunctionDb_TfFunctionsEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::profiler::TfFunctionDb_TfFunctionsEntry_DoNotUse>(Arena*);
template<> ::tensorflow::profiler::TfFunctionMetrics* Arena::CreateMaybeMessage<::tensorflow::profiler::TfFunctionMetrics>(Arena*);
template<> ::tensorflow::profiler::TfFunction_MetricsEntry_DoNotUse* Arena::CreateMaybeMessage<::tensorflow::profiler::TfFunction_MetricsEntry_DoNotUse>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace tensorflow {
namespace profiler {

enum TfFunctionExecutionMode : int {
  INVALID_MODE = 0,
  EAGER_MODE = 1,
  TRACED_MODE = 2,
  NOT_TRACED_MODE = 3,
  CONCRETE_MODE = 4,
  TfFunctionExecutionMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  TfFunctionExecutionMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool TfFunctionExecutionMode_IsValid(int value);
constexpr TfFunctionExecutionMode TfFunctionExecutionMode_MIN = INVALID_MODE;
constexpr TfFunctionExecutionMode TfFunctionExecutionMode_MAX = CONCRETE_MODE;
constexpr int TfFunctionExecutionMode_ARRAYSIZE = TfFunctionExecutionMode_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* TfFunctionExecutionMode_descriptor();
template<typename T>
inline const std::string& TfFunctionExecutionMode_Name(T enum_t_value) {
  static_assert(::std::is_same<T, TfFunctionExecutionMode>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function TfFunctionExecutionMode_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    TfFunctionExecutionMode_descriptor(), enum_t_value);
}
inline bool TfFunctionExecutionMode_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, TfFunctionExecutionMode* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<TfFunctionExecutionMode>(
    TfFunctionExecutionMode_descriptor(), name, value);
}
enum TfFunctionCompiler : int {
  INVALID_COMPILER = 0,
  OTHER_COMPILER = 1,
  MIXED_COMPILER = 2,
  XLA_COMPILER = 3,
  MLIR_COMPILER = 4,
  TfFunctionCompiler_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  TfFunctionCompiler_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool TfFunctionCompiler_IsValid(int value);
constexpr TfFunctionCompiler TfFunctionCompiler_MIN = INVALID_COMPILER;
constexpr TfFunctionCompiler TfFunctionCompiler_MAX = MLIR_COMPILER;
constexpr int TfFunctionCompiler_ARRAYSIZE = TfFunctionCompiler_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* TfFunctionCompiler_descriptor();
template<typename T>
inline const std::string& TfFunctionCompiler_Name(T enum_t_value) {
  static_assert(::std::is_same<T, TfFunctionCompiler>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function TfFunctionCompiler_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    TfFunctionCompiler_descriptor(), enum_t_value);
}
inline bool TfFunctionCompiler_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, TfFunctionCompiler* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<TfFunctionCompiler>(
    TfFunctionCompiler_descriptor(), name, value);
}
// ===================================================================

class TfFunctionMetrics final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:tensorflow.profiler.TfFunctionMetrics) */ {
 public:
  inline TfFunctionMetrics() : TfFunctionMetrics(nullptr) {}
  ~TfFunctionMetrics() override;
  explicit constexpr TfFunctionMetrics(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

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

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TfFunctionMetrics& default_instance() {
    return *internal_default_instance();
  }
  static inline const TfFunctionMetrics* internal_default_instance() {
    return reinterpret_cast<const TfFunctionMetrics*>(
               &_TfFunctionMetrics_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(TfFunctionMetrics& a, TfFunctionMetrics& b) {
    a.Swap(&b);
  }
  inline void Swap(TfFunctionMetrics* other) {
    if (other == this) return;
    if (GetOwningArena() == other->GetOwningArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TfFunctionMetrics* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  inline TfFunctionMetrics* New() const final {
    return new TfFunctionMetrics();
  }

  TfFunctionMetrics* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<TfFunctionMetrics>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TfFunctionMetrics& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TfFunctionMetrics& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TfFunctionMetrics* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "tensorflow.profiler.TfFunctionMetrics";
  }
  protected:
  explicit TfFunctionMetrics(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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

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

  enum : int {
    kCountFieldNumber = 1,
    kSelfTimePsFieldNumber = 2,
  };
  // uint64 count = 1;
  void clear_count();
  ::PROTOBUF_NAMESPACE_ID::uint64 count() const;
  void set_count(::PROTOBUF_NAMESPACE_ID::uint64 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint64 _internal_count() const;
  void _internal_set_count(::PROTOBUF_NAMESPACE_ID::uint64 value);
  public:

  // uint64 self_time_ps = 2;
  void clear_self_time_ps();
  ::PROTOBUF_NAMESPACE_ID::uint64 self_time_ps() const;
  void set_self_time_ps(::PROTOBUF_NAMESPACE_ID::uint64 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint64 _internal_self_time_ps() const;
  void _internal_set_self_time_ps(::PROTOBUF_NAMESPACE_ID::uint64 value);
  public:

  // @@protoc_insertion_point(class_scope:tensorflow.profiler.TfFunctionMetrics)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::uint64 count_;
  ::PROTOBUF_NAMESPACE_ID::uint64 self_time_ps_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_tensorflow_2fcore_2fprofiler_2fprotobuf_2ftf_5ffunction_2eproto;
};
// -------------------------------------------------------------------

class TfFunction_MetricsEntry_DoNotUse : public ::PROTOBUF_NAMESPACE_ID::internal::MapEntry<TfFunction_MetricsEntry_DoNotUse, 
    ::PROTOBUF_NAMESPACE_ID::int32, ::tensorflow::profiler::TfFunctionMetrics,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_MESSAGE> {
public:
  typedef ::PROTOBUF_NAMESPACE_ID::internal::MapEntry<TfFunction_MetricsEntry_DoNotUse, 
    ::PROTOBUF_NAMESPACE_ID::int32, ::tensorflow::profiler::TfFunctionMetrics,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_MESSAGE> SuperType;
  TfFunction_MetricsEntry_DoNotUse();
  explicit constexpr TfFunction_MetricsEntry_DoNotUse(
      ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  explicit TfFunction_MetricsEntry_DoNotUse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void MergeFrom(const TfFunction_MetricsEntry_DoNotUse& other);
  static const TfFunction_MetricsEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TfFunction_MetricsEntry_DoNotUse*>(&_TfFunction_MetricsEntry_DoNotUse_default_instance_); }
  static bool ValidateKey(void*) { return true; }
  static bool ValidateValue(void*) { return true; }
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
};

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

class TfFunction final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:tensorflow.profiler.TfFunction) */ {
 public:
  inline TfFunction() : TfFunction(nullptr) {}
  ~TfFunction() override;
  explicit constexpr TfFunction(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

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

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TfFunction& default_instance() {
    return *internal_default_instance();
  }
  static inline const TfFunction* internal_default_instance() {
    return reinterpret_cast<const TfFunction*>(
               &_TfFunction_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(TfFunction& a, TfFunction& b) {
    a.Swap(&b);
  }
  inline void Swap(TfFunction* other) {
    if (other == this) return;
    if (GetOwningArena() == other->GetOwningArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TfFunction* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  inline TfFunction* New() const final {
    return new TfFunction();
  }

  TfFunction* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<TfFunction>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TfFunction& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TfFunction& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TfFunction* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "tensorflow.profiler.TfFunction";
  }
  protected:
  explicit TfFunction(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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


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

  enum : int {
    kMetricsFieldNumber = 1,
    kTotalTracingCountFieldNumber = 2,
    kExpensiveCallPercentFieldNumber = 4,
    kCompilerFieldNumber = 3,
  };
  // map<int32, .tensorflow.profiler.TfFunctionMetrics> metrics = 1;
  int metrics_size() const;
  private:
  int _internal_metrics_size() const;
  public:
  void clear_metrics();
  private:
  const ::PROTOBUF_NAMESPACE_ID::Map< ::PROTOBUF_NAMESPACE_ID::int32, ::tensorflow::profiler::TfFunctionMetrics >&
      _internal_metrics() const;
  ::PROTOBUF_NAMESPACE_ID::Map< ::PROTOBUF_NAMESPACE_ID::int32, ::tensorflow::profiler::TfFunctionMetrics >*
      _internal_mutable_metrics();
  public:
  const ::PROTOBUF_NAMESPACE_ID::Map< ::PROTOBUF_NAMESPACE_ID::int32, ::tensorflow::profiler::TfFunctionMetrics >&
      metrics() const;
  ::PROTOBUF_NAMESPACE_ID::Map< ::PROTOBUF_NAMESPACE_ID::int32, ::tensorflow::profiler::TfFunctionMetrics >*
      mutable_metrics();

  // int64 total_tracing_count = 2;
  void clear_total_tracing_count();
  ::PROTOBUF_NAMESPACE_ID::int64 total_tracing_count() const;
  void set_total_tracing_count(::PROTOBUF_NAMESPACE_ID::int64 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int64 _internal_total_tracing_count() const;
  void _internal_set_total_tracing_count(::PROTOBUF_NAMESPACE_ID::int64 value);
  public:

  // double expensive_call_percent = 4;
  void clear_expensive_call_percent();
  double expensive_call_percent() const;
  void set_expensive_call_percent(double value);
  private:
  double _internal_expensive_call_percent() const;
  void _internal_set_expensive_call_percent(double value);
  public:

  // .tensorflow.profiler.TfFunctionCompiler compiler = 3;
  void clear_compiler();
  ::tensorflow::profiler::TfFunctionCompiler compiler() const;
  void set_compiler(::tensorflow::profiler::TfFunctionCompiler value);
  private:
  ::tensorflow::profiler::TfFunctionCompiler _internal_compiler() const;
  void _internal_set_compiler(::tensorflow::profiler::TfFunctionCompiler value);
  public:

  // @@protoc_insertion_point(class_scope:tensorflow.profiler.TfFunction)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::MapField<
      TfFunction_MetricsEntry_DoNotUse,
      ::PROTOBUF_NAMESPACE_ID::int32, ::tensorflow::profiler::TfFunctionMetrics,
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32,
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_MESSAGE> metrics_;
  ::PROTOBUF_NAMESPACE_ID::int64 total_tracing_count_;
  double expensive_call_percent_;
  int compiler_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_tensorflow_2fcore_2fprofiler_2fprotobuf_2ftf_5ffunction_2eproto;
};
// -------------------------------------------------------------------

class TfFunctionDb_TfFunctionsEntry_DoNotUse : public ::PROTOBUF_NAMESPACE_ID::internal::MapEntry<TfFunctionDb_TfFunctionsEntry_DoNotUse, 
    std::string, ::tensorflow::profiler::TfFunction,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_STRING,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_MESSAGE> {
public:
  typedef ::PROTOBUF_NAMESPACE_ID::internal::MapEntry<TfFunctionDb_TfFunctionsEntry_DoNotUse, 
    std::string, ::tensorflow::profiler::TfFunction,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_STRING,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_MESSAGE> SuperType;
  TfFunctionDb_TfFunctionsEntry_DoNotUse();
  explicit constexpr TfFunctionDb_TfFunctionsEntry_DoNotUse(
      ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  explicit TfFunctionDb_TfFunctionsEntry_DoNotUse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void MergeFrom(const TfFunctionDb_TfFunctionsEntry_DoNotUse& other);
  static const TfFunctionDb_TfFunctionsEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const TfFunctionDb_TfFunctionsEntry_DoNotUse*>(&_TfFunctionDb_TfFunctionsEntry_DoNotUse_default_instance_); }
  static bool ValidateKey(std::string* s) {
    return ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(s->data(), static_cast<int>(s->size()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::PARSE, "tensorflow.profiler.TfFunctionDb.TfFunctionsEntry.key");
 }
  static bool ValidateValue(void*) { return true; }
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
};

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

class TfFunctionDb final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:tensorflow.profiler.TfFunctionDb) */ {
 public:
  inline TfFunctionDb() : TfFunctionDb(nullptr) {}
  ~TfFunctionDb() override;
  explicit constexpr TfFunctionDb(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

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

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TfFunctionDb& default_instance() {
    return *internal_default_instance();
  }
  static inline const TfFunctionDb* internal_default_instance() {
    return reinterpret_cast<const TfFunctionDb*>(
               &_TfFunctionDb_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(TfFunctionDb& a, TfFunctionDb& b) {
    a.Swap(&b);
  }
  inline void Swap(TfFunctionDb* other) {
    if (other == this) return;
    if (GetOwningArena() == other->GetOwningArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TfFunctionDb* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  inline TfFunctionDb* New() const final {
    return new TfFunctionDb();
  }

  TfFunctionDb* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<TfFunctionDb>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TfFunctionDb& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TfFunctionDb& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TfFunctionDb* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "tensorflow.profiler.TfFunctionDb";
  }
  protected:
  explicit TfFunctionDb(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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


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

  enum : int {
    kTfFunctionsFieldNumber = 1,
  };
  // map<string, .tensorflow.profiler.TfFunction> tf_functions = 1;
  int tf_functions_size() const;
  private:
  int _internal_tf_functions_size() const;
  public:
  void clear_tf_functions();
  private:
  const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::tensorflow::profiler::TfFunction >&
      _internal_tf_functions() const;
  ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::tensorflow::profiler::TfFunction >*
      _internal_mutable_tf_functions();
  public:
  const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::tensorflow::profiler::TfFunction >&
      tf_functions() const;
  ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::tensorflow::profiler::TfFunction >*
      mutable_tf_functions();

  // @@protoc_insertion_point(class_scope:tensorflow.profiler.TfFunctionDb)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::MapField<
      TfFunctionDb_TfFunctionsEntry_DoNotUse,
      std::string, ::tensorflow::profiler::TfFunction,
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_STRING,
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_MESSAGE> tf_functions_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_tensorflow_2fcore_2fprofiler_2fprotobuf_2ftf_5ffunction_2eproto;
};
// ===================================================================


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

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

// uint64 count = 1;
inline void TfFunctionMetrics::clear_count() {
  count_ = uint64_t{0u};
}
inline ::PROTOBUF_NAMESPACE_ID::uint64 TfFunctionMetrics::_internal_count() const {
  return count_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint64 TfFunctionMetrics::count() const {
  // @@protoc_insertion_point(field_get:tensorflow.profiler.TfFunctionMetrics.count)
  return _internal_count();
}
inline void TfFunctionMetrics::_internal_set_count(::PROTOBUF_NAMESPACE_ID::uint64 value) {
  
  count_ = value;
}
inline void TfFunctionMetrics::set_count(::PROTOBUF_NAMESPACE_ID::uint64 value) {
  _internal_set_count(value);
  // @@protoc_insertion_point(field_set:tensorflow.profiler.TfFunctionMetrics.count)
}

// uint64 self_time_ps = 2;
inline void TfFunctionMetrics::clear_self_time_ps() {
  self_time_ps_ = uint64_t{0u};
}
inline ::PROTOBUF_NAMESPACE_ID::uint64 TfFunctionMetrics::_internal_self_time_ps() const {
  return self_time_ps_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint64 TfFunctionMetrics::self_time_ps() const {
  // @@protoc_insertion_point(field_get:tensorflow.profiler.TfFunctionMetrics.self_time_ps)
  return _internal_self_time_ps();
}
inline void TfFunctionMetrics::_internal_set_self_time_ps(::PROTOBUF_NAMESPACE_ID::uint64 value) {
  
  self_time_ps_ = value;
}
inline void TfFunctionMetrics::set_self_time_ps(::PROTOBUF_NAMESPACE_ID::uint64 value) {
  _internal_set_self_time_ps(value);
  // @@protoc_insertion_point(field_set:tensorflow.profiler.TfFunctionMetrics.self_time_ps)
}

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

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

// TfFunction

// map<int32, .tensorflow.profiler.TfFunctionMetrics> metrics = 1;
inline int TfFunction::_internal_metrics_size() const {
  return metrics_.size();
}
inline int TfFunction::metrics_size() const {
  return _internal_metrics_size();
}
inline void TfFunction::clear_metrics() {
  metrics_.Clear();
}
inline const ::PROTOBUF_NAMESPACE_ID::Map< ::PROTOBUF_NAMESPACE_ID::int32, ::tensorflow::profiler::TfFunctionMetrics >&
TfFunction::_internal_metrics() const {
  return metrics_.GetMap();
}
inline const ::PROTOBUF_NAMESPACE_ID::Map< ::PROTOBUF_NAMESPACE_ID::int32, ::tensorflow::profiler::TfFunctionMetrics >&
TfFunction::metrics() const {
  // @@protoc_insertion_point(field_map:tensorflow.profiler.TfFunction.metrics)
  return _internal_metrics();
}
inline ::PROTOBUF_NAMESPACE_ID::Map< ::PROTOBUF_NAMESPACE_ID::int32, ::tensorflow::profiler::TfFunctionMetrics >*
TfFunction::_internal_mutable_metrics() {
  return metrics_.MutableMap();
}
inline ::PROTOBUF_NAMESPACE_ID::Map< ::PROTOBUF_NAMESPACE_ID::int32, ::tensorflow::profiler::TfFunctionMetrics >*
TfFunction::mutable_metrics() {
  // @@protoc_insertion_point(field_mutable_map:tensorflow.profiler.TfFunction.metrics)
  return _internal_mutable_metrics();
}

// int64 total_tracing_count = 2;
inline void TfFunction::clear_total_tracing_count() {
  total_tracing_count_ = int64_t{0};
}
inline ::PROTOBUF_NAMESPACE_ID::int64 TfFunction::_internal_total_tracing_count() const {
  return total_tracing_count_;
}
inline ::PROTOBUF_NAMESPACE_ID::int64 TfFunction::total_tracing_count() const {
  // @@protoc_insertion_point(field_get:tensorflow.profiler.TfFunction.total_tracing_count)
  return _internal_total_tracing_count();
}
inline void TfFunction::_internal_set_total_tracing_count(::PROTOBUF_NAMESPACE_ID::int64 value) {
  
  total_tracing_count_ = value;
}
inline void TfFunction::set_total_tracing_count(::PROTOBUF_NAMESPACE_ID::int64 value) {
  _internal_set_total_tracing_count(value);
  // @@protoc_insertion_point(field_set:tensorflow.profiler.TfFunction.total_tracing_count)
}

// .tensorflow.profiler.TfFunctionCompiler compiler = 3;
inline void TfFunction::clear_compiler() {
  compiler_ = 0;
}
inline ::tensorflow::profiler::TfFunctionCompiler TfFunction::_internal_compiler() const {
  return static_cast< ::tensorflow::profiler::TfFunctionCompiler >(compiler_);
}
inline ::tensorflow::profiler::TfFunctionCompiler TfFunction::compiler() const {
  // @@protoc_insertion_point(field_get:tensorflow.profiler.TfFunction.compiler)
  return _internal_compiler();
}
inline void TfFunction::_internal_set_compiler(::tensorflow::profiler::TfFunctionCompiler value) {
  
  compiler_ = value;
}
inline void TfFunction::set_compiler(::tensorflow::profiler::TfFunctionCompiler value) {
  _internal_set_compiler(value);
  // @@protoc_insertion_point(field_set:tensorflow.profiler.TfFunction.compiler)
}

// double expensive_call_percent = 4;
inline void TfFunction::clear_expensive_call_percent() {
  expensive_call_percent_ = 0;
}
inline double TfFunction::_internal_expensive_call_percent() const {
  return expensive_call_percent_;
}
inline double TfFunction::expensive_call_percent() const {
  // @@protoc_insertion_point(field_get:tensorflow.profiler.TfFunction.expensive_call_percent)
  return _internal_expensive_call_percent();
}
inline void TfFunction::_internal_set_expensive_call_percent(double value) {
  
  expensive_call_percent_ = value;
}
inline void TfFunction::set_expensive_call_percent(double value) {
  _internal_set_expensive_call_percent(value);
  // @@protoc_insertion_point(field_set:tensorflow.profiler.TfFunction.expensive_call_percent)
}

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

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

// TfFunctionDb

// map<string, .tensorflow.profiler.TfFunction> tf_functions = 1;
inline int TfFunctionDb::_internal_tf_functions_size() const {
  return tf_functions_.size();
}
inline int TfFunctionDb::tf_functions_size() const {
  return _internal_tf_functions_size();
}
inline void TfFunctionDb::clear_tf_functions() {
  tf_functions_.Clear();
}
inline const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::tensorflow::profiler::TfFunction >&
TfFunctionDb::_internal_tf_functions() const {
  return tf_functions_.GetMap();
}
inline const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::tensorflow::profiler::TfFunction >&
TfFunctionDb::tf_functions() const {
  // @@protoc_insertion_point(field_map:tensorflow.profiler.TfFunctionDb.tf_functions)
  return _internal_tf_functions();
}
inline ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::tensorflow::profiler::TfFunction >*
TfFunctionDb::_internal_mutable_tf_functions() {
  return tf_functions_.MutableMap();
}
inline ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::tensorflow::profiler::TfFunction >*
TfFunctionDb::mutable_tf_functions() {
  // @@protoc_insertion_point(field_mutable_map:tensorflow.profiler.TfFunctionDb.tf_functions)
  return _internal_mutable_tf_functions();
}

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

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace profiler
}  // namespace tensorflow

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::tensorflow::profiler::TfFunctionExecutionMode> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::tensorflow::profiler::TfFunctionExecutionMode>() {
  return ::tensorflow::profiler::TfFunctionExecutionMode_descriptor();
}
template <> struct is_proto_enum< ::tensorflow::profiler::TfFunctionCompiler> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::tensorflow::profiler::TfFunctionCompiler>() {
  return ::tensorflow::profiler::TfFunctionCompiler_descriptor();
}

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

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