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

#ifndef PROTOBUF_profiler_2eproto__INCLUDED
#define PROTOBUF_profiler_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/generated_enum_reflection.h>
#include <google/protobuf/unknown_field_set.h>
// @@protoc_insertion_point(includes)

namespace paddle {
namespace platform {
namespace proto {

// Internal implementation detail -- do not call these.
void protobuf_AddDesc_profiler_2eproto();
void protobuf_InitDefaults_profiler_2eproto();
void protobuf_AssignDesc_profiler_2eproto();
void protobuf_ShutdownFile_profiler_2eproto();

class Event;
class MemCopy;
class MemEvent;
class Profile;

enum Event_EventType {
  Event_EventType_CPU = 0,
  Event_EventType_GPUKernel = 1
};
bool Event_EventType_IsValid(int value);
const Event_EventType Event_EventType_EventType_MIN = Event_EventType_CPU;
const Event_EventType Event_EventType_EventType_MAX = Event_EventType_GPUKernel;
const int Event_EventType_EventType_ARRAYSIZE = Event_EventType_EventType_MAX + 1;

const ::google::protobuf::EnumDescriptor* Event_EventType_descriptor();
inline const ::std::string& Event_EventType_Name(Event_EventType value) {
  return ::google::protobuf::internal::NameOfEnum(
    Event_EventType_descriptor(), value);
}
inline bool Event_EventType_Parse(
    const ::std::string& name, Event_EventType* value) {
  return ::google::protobuf::internal::ParseNamedEnum<Event_EventType>(
    Event_EventType_descriptor(), name, value);
}
enum MemEvent_Place {
  MemEvent_Place_CUDAPlace = 0,
  MemEvent_Place_CPUPlace = 1,
  MemEvent_Place_CUDAPinnedPlace = 2
};
bool MemEvent_Place_IsValid(int value);
const MemEvent_Place MemEvent_Place_Place_MIN = MemEvent_Place_CUDAPlace;
const MemEvent_Place MemEvent_Place_Place_MAX = MemEvent_Place_CUDAPinnedPlace;
const int MemEvent_Place_Place_ARRAYSIZE = MemEvent_Place_Place_MAX + 1;

const ::google::protobuf::EnumDescriptor* MemEvent_Place_descriptor();
inline const ::std::string& MemEvent_Place_Name(MemEvent_Place value) {
  return ::google::protobuf::internal::NameOfEnum(
    MemEvent_Place_descriptor(), value);
}
inline bool MemEvent_Place_Parse(
    const ::std::string& name, MemEvent_Place* value) {
  return ::google::protobuf::internal::ParseNamedEnum<MemEvent_Place>(
    MemEvent_Place_descriptor(), name, value);
}
// ===================================================================

class MemCopy : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:paddle.platform.proto.MemCopy) */ {
 public:
  MemCopy();
  virtual ~MemCopy();

  MemCopy(const MemCopy& from);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const MemCopy& default_instance();

  static const MemCopy* internal_default_instance();

  void Swap(MemCopy* other);

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

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

  MemCopy* New(::google::protobuf::Arena* arena) const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const MemCopy& from);
  void MergeFrom(const MemCopy& 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(MemCopy* other);
  void UnsafeMergeFrom(const MemCopy& from);
  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 uint64 bytes = 1;
  bool has_bytes() const;
  void clear_bytes();
  static const int kBytesFieldNumber = 1;
  ::google::protobuf::uint64 bytes() const;
  void set_bytes(::google::protobuf::uint64 value);

  // @@protoc_insertion_point(class_scope:paddle.platform.proto.MemCopy)
 private:
  inline void set_has_bytes();
  inline void clear_has_bytes();

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::HasBits<1> _has_bits_;
  mutable int _cached_size_;
  ::google::protobuf::uint64 bytes_;
  friend void  protobuf_InitDefaults_profiler_2eproto_impl();
  friend void  protobuf_AddDesc_profiler_2eproto_impl();
  friend void protobuf_AssignDesc_profiler_2eproto();
  friend void protobuf_ShutdownFile_profiler_2eproto();

  void InitAsDefaultInstance();
};
extern ::google::protobuf::internal::ExplicitlyConstructed<MemCopy> MemCopy_default_instance_;

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

class Event : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:paddle.platform.proto.Event) */ {
 public:
  Event();
  virtual ~Event();

  Event(const Event& from);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const Event& default_instance();

  static const Event* internal_default_instance();

  void Swap(Event* other);

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

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

  Event* New(::google::protobuf::Arena* arena) const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const Event& from);
  void MergeFrom(const Event& 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(Event* other);
  void UnsafeMergeFrom(const Event& from);
  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 Event_EventType EventType;
  static const EventType CPU =
    Event_EventType_CPU;
  static const EventType GPUKernel =
    Event_EventType_GPUKernel;
  static inline bool EventType_IsValid(int value) {
    return Event_EventType_IsValid(value);
  }
  static const EventType EventType_MIN =
    Event_EventType_EventType_MIN;
  static const EventType EventType_MAX =
    Event_EventType_EventType_MAX;
  static const int EventType_ARRAYSIZE =
    Event_EventType_EventType_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor*
  EventType_descriptor() {
    return Event_EventType_descriptor();
  }
  static inline const ::std::string& EventType_Name(EventType value) {
    return Event_EventType_Name(value);
  }
  static inline bool EventType_Parse(const ::std::string& name,
      EventType* value) {
    return Event_EventType_Parse(name, value);
  }

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

  // optional .paddle.platform.proto.Event.EventType type = 8;
  bool has_type() const;
  void clear_type();
  static const int kTypeFieldNumber = 8;
  ::paddle::platform::proto::Event_EventType type() const;
  void set_type(::paddle::platform::proto::Event_EventType value);

  // optional string name = 1;
  bool has_name() const;
  void clear_name();
  static const int kNameFieldNumber = 1;
  const ::std::string& name() const;
  void set_name(const ::std::string& value);
  void set_name(const char* value);
  void set_name(const char* value, size_t size);
  ::std::string* mutable_name();
  ::std::string* release_name();
  void set_allocated_name(::std::string* name);

  // optional uint64 start_ns = 2;
  bool has_start_ns() const;
  void clear_start_ns();
  static const int kStartNsFieldNumber = 2;
  ::google::protobuf::uint64 start_ns() const;
  void set_start_ns(::google::protobuf::uint64 value);

  // optional uint64 end_ns = 3;
  bool has_end_ns() const;
  void clear_end_ns();
  static const int kEndNsFieldNumber = 3;
  ::google::protobuf::uint64 end_ns() const;
  void set_end_ns(::google::protobuf::uint64 value);

  // optional int64 device_id = 5;
  bool has_device_id() const;
  void clear_device_id();
  static const int kDeviceIdFieldNumber = 5;
  ::google::protobuf::int64 device_id() const;
  void set_device_id(::google::protobuf::int64 value);

  // optional int64 sub_device_id = 6;
  bool has_sub_device_id() const;
  void clear_sub_device_id();
  static const int kSubDeviceIdFieldNumber = 6;
  ::google::protobuf::int64 sub_device_id() const;
  void set_sub_device_id(::google::protobuf::int64 value);

  // optional .paddle.platform.proto.MemCopy memcopy = 7;
  bool has_memcopy() const;
  void clear_memcopy();
  static const int kMemcopyFieldNumber = 7;
  const ::paddle::platform::proto::MemCopy& memcopy() const;
  ::paddle::platform::proto::MemCopy* mutable_memcopy();
  ::paddle::platform::proto::MemCopy* release_memcopy();
  void set_allocated_memcopy(::paddle::platform::proto::MemCopy* memcopy);

  // optional string detail_info = 9;
  bool has_detail_info() const;
  void clear_detail_info();
  static const int kDetailInfoFieldNumber = 9;
  const ::std::string& detail_info() const;
  void set_detail_info(const ::std::string& value);
  void set_detail_info(const char* value);
  void set_detail_info(const char* value, size_t size);
  ::std::string* mutable_detail_info();
  ::std::string* release_detail_info();
  void set_allocated_detail_info(::std::string* detail_info);

  // @@protoc_insertion_point(class_scope:paddle.platform.proto.Event)
 private:
  inline void set_has_type();
  inline void clear_has_type();
  inline void set_has_name();
  inline void clear_has_name();
  inline void set_has_start_ns();
  inline void clear_has_start_ns();
  inline void set_has_end_ns();
  inline void clear_has_end_ns();
  inline void set_has_device_id();
  inline void clear_has_device_id();
  inline void set_has_sub_device_id();
  inline void clear_has_sub_device_id();
  inline void set_has_memcopy();
  inline void clear_has_memcopy();
  inline void set_has_detail_info();
  inline void clear_has_detail_info();

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::HasBits<1> _has_bits_;
  mutable int _cached_size_;
  ::google::protobuf::internal::ArenaStringPtr name_;
  ::google::protobuf::internal::ArenaStringPtr detail_info_;
  ::paddle::platform::proto::MemCopy* memcopy_;
  ::google::protobuf::uint64 start_ns_;
  ::google::protobuf::uint64 end_ns_;
  ::google::protobuf::int64 device_id_;
  ::google::protobuf::int64 sub_device_id_;
  int type_;
  friend void  protobuf_InitDefaults_profiler_2eproto_impl();
  friend void  protobuf_AddDesc_profiler_2eproto_impl();
  friend void protobuf_AssignDesc_profiler_2eproto();
  friend void protobuf_ShutdownFile_profiler_2eproto();

  void InitAsDefaultInstance();
};
extern ::google::protobuf::internal::ExplicitlyConstructed<Event> Event_default_instance_;

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

class MemEvent : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:paddle.platform.proto.MemEvent) */ {
 public:
  MemEvent();
  virtual ~MemEvent();

  MemEvent(const MemEvent& from);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const MemEvent& default_instance();

  static const MemEvent* internal_default_instance();

  void Swap(MemEvent* other);

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

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

  MemEvent* New(::google::protobuf::Arena* arena) const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const MemEvent& from);
  void MergeFrom(const MemEvent& 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(MemEvent* other);
  void UnsafeMergeFrom(const MemEvent& from);
  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 MemEvent_Place Place;
  static const Place CUDAPlace =
    MemEvent_Place_CUDAPlace;
  static const Place CPUPlace =
    MemEvent_Place_CPUPlace;
  static const Place CUDAPinnedPlace =
    MemEvent_Place_CUDAPinnedPlace;
  static inline bool Place_IsValid(int value) {
    return MemEvent_Place_IsValid(value);
  }
  static const Place Place_MIN =
    MemEvent_Place_Place_MIN;
  static const Place Place_MAX =
    MemEvent_Place_Place_MAX;
  static const int Place_ARRAYSIZE =
    MemEvent_Place_Place_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor*
  Place_descriptor() {
    return MemEvent_Place_descriptor();
  }
  static inline const ::std::string& Place_Name(Place value) {
    return MemEvent_Place_Name(value);
  }
  static inline bool Place_Parse(const ::std::string& name,
      Place* value) {
    return MemEvent_Place_Parse(name, value);
  }

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

  // optional uint64 start_ns = 1;
  bool has_start_ns() const;
  void clear_start_ns();
  static const int kStartNsFieldNumber = 1;
  ::google::protobuf::uint64 start_ns() const;
  void set_start_ns(::google::protobuf::uint64 value);

  // optional uint64 end_ns = 2;
  bool has_end_ns() const;
  void clear_end_ns();
  static const int kEndNsFieldNumber = 2;
  ::google::protobuf::uint64 end_ns() const;
  void set_end_ns(::google::protobuf::uint64 value);

  // optional uint64 bytes = 3;
  bool has_bytes() const;
  void clear_bytes();
  static const int kBytesFieldNumber = 3;
  ::google::protobuf::uint64 bytes() const;
  void set_bytes(::google::protobuf::uint64 value);

  // optional .paddle.platform.proto.MemEvent.Place place = 4;
  bool has_place() const;
  void clear_place();
  static const int kPlaceFieldNumber = 4;
  ::paddle::platform::proto::MemEvent_Place place() const;
  void set_place(::paddle::platform::proto::MemEvent_Place value);

  // optional uint64 thread_id = 5;
  bool has_thread_id() const;
  void clear_thread_id();
  static const int kThreadIdFieldNumber = 5;
  ::google::protobuf::uint64 thread_id() const;
  void set_thread_id(::google::protobuf::uint64 value);

  // optional uint32 device_id = 6;
  bool has_device_id() const;
  void clear_device_id();
  static const int kDeviceIdFieldNumber = 6;
  ::google::protobuf::uint32 device_id() const;
  void set_device_id(::google::protobuf::uint32 value);

  // optional string alloc_in = 7;
  bool has_alloc_in() const;
  void clear_alloc_in();
  static const int kAllocInFieldNumber = 7;
  const ::std::string& alloc_in() const;
  void set_alloc_in(const ::std::string& value);
  void set_alloc_in(const char* value);
  void set_alloc_in(const char* value, size_t size);
  ::std::string* mutable_alloc_in();
  ::std::string* release_alloc_in();
  void set_allocated_alloc_in(::std::string* alloc_in);

  // optional string free_in = 8;
  bool has_free_in() const;
  void clear_free_in();
  static const int kFreeInFieldNumber = 8;
  const ::std::string& free_in() const;
  void set_free_in(const ::std::string& value);
  void set_free_in(const char* value);
  void set_free_in(const char* value, size_t size);
  ::std::string* mutable_free_in();
  ::std::string* release_free_in();
  void set_allocated_free_in(::std::string* free_in);

  // @@protoc_insertion_point(class_scope:paddle.platform.proto.MemEvent)
 private:
  inline void set_has_start_ns();
  inline void clear_has_start_ns();
  inline void set_has_end_ns();
  inline void clear_has_end_ns();
  inline void set_has_bytes();
  inline void clear_has_bytes();
  inline void set_has_place();
  inline void clear_has_place();
  inline void set_has_thread_id();
  inline void clear_has_thread_id();
  inline void set_has_device_id();
  inline void clear_has_device_id();
  inline void set_has_alloc_in();
  inline void clear_has_alloc_in();
  inline void set_has_free_in();
  inline void clear_has_free_in();

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::HasBits<1> _has_bits_;
  mutable int _cached_size_;
  ::google::protobuf::internal::ArenaStringPtr alloc_in_;
  ::google::protobuf::internal::ArenaStringPtr free_in_;
  ::google::protobuf::uint64 start_ns_;
  ::google::protobuf::uint64 end_ns_;
  ::google::protobuf::uint64 bytes_;
  ::google::protobuf::uint64 thread_id_;
  int place_;
  ::google::protobuf::uint32 device_id_;
  friend void  protobuf_InitDefaults_profiler_2eproto_impl();
  friend void  protobuf_AddDesc_profiler_2eproto_impl();
  friend void protobuf_AssignDesc_profiler_2eproto();
  friend void protobuf_ShutdownFile_profiler_2eproto();

  void InitAsDefaultInstance();
};
extern ::google::protobuf::internal::ExplicitlyConstructed<MemEvent> MemEvent_default_instance_;

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

class Profile : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:paddle.platform.proto.Profile) */ {
 public:
  Profile();
  virtual ~Profile();

  Profile(const Profile& from);

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

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const Profile& default_instance();

  static const Profile* internal_default_instance();

  void Swap(Profile* other);

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

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

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

  // repeated .paddle.platform.proto.Event events = 1;
  int events_size() const;
  void clear_events();
  static const int kEventsFieldNumber = 1;
  const ::paddle::platform::proto::Event& events(int index) const;
  ::paddle::platform::proto::Event* mutable_events(int index);
  ::paddle::platform::proto::Event* add_events();
  ::google::protobuf::RepeatedPtrField< ::paddle::platform::proto::Event >*
      mutable_events();
  const ::google::protobuf::RepeatedPtrField< ::paddle::platform::proto::Event >&
      events() const;

  // optional uint64 start_ns = 2;
  bool has_start_ns() const;
  void clear_start_ns();
  static const int kStartNsFieldNumber = 2;
  ::google::protobuf::uint64 start_ns() const;
  void set_start_ns(::google::protobuf::uint64 value);

  // optional uint64 end_ns = 3;
  bool has_end_ns() const;
  void clear_end_ns();
  static const int kEndNsFieldNumber = 3;
  ::google::protobuf::uint64 end_ns() const;
  void set_end_ns(::google::protobuf::uint64 value);

  // repeated .paddle.platform.proto.MemEvent mem_events = 4;
  int mem_events_size() const;
  void clear_mem_events();
  static const int kMemEventsFieldNumber = 4;
  const ::paddle::platform::proto::MemEvent& mem_events(int index) const;
  ::paddle::platform::proto::MemEvent* mutable_mem_events(int index);
  ::paddle::platform::proto::MemEvent* add_mem_events();
  ::google::protobuf::RepeatedPtrField< ::paddle::platform::proto::MemEvent >*
      mutable_mem_events();
  const ::google::protobuf::RepeatedPtrField< ::paddle::platform::proto::MemEvent >&
      mem_events() const;

  // @@protoc_insertion_point(class_scope:paddle.platform.proto.Profile)
 private:
  inline void set_has_start_ns();
  inline void clear_has_start_ns();
  inline void set_has_end_ns();
  inline void clear_has_end_ns();

  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
  ::google::protobuf::internal::HasBits<1> _has_bits_;
  mutable int _cached_size_;
  ::google::protobuf::RepeatedPtrField< ::paddle::platform::proto::Event > events_;
  ::google::protobuf::RepeatedPtrField< ::paddle::platform::proto::MemEvent > mem_events_;
  ::google::protobuf::uint64 start_ns_;
  ::google::protobuf::uint64 end_ns_;
  friend void  protobuf_InitDefaults_profiler_2eproto_impl();
  friend void  protobuf_AddDesc_profiler_2eproto_impl();
  friend void protobuf_AssignDesc_profiler_2eproto();
  friend void protobuf_ShutdownFile_profiler_2eproto();

  void InitAsDefaultInstance();
};
extern ::google::protobuf::internal::ExplicitlyConstructed<Profile> Profile_default_instance_;

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


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

#if !PROTOBUF_INLINE_NOT_IN_HEADERS
// MemCopy

// optional uint64 bytes = 1;
inline bool MemCopy::has_bytes() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void MemCopy::set_has_bytes() {
  _has_bits_[0] |= 0x00000001u;
}
inline void MemCopy::clear_has_bytes() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void MemCopy::clear_bytes() {
  bytes_ = GOOGLE_ULONGLONG(0);
  clear_has_bytes();
}
inline ::google::protobuf::uint64 MemCopy::bytes() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.MemCopy.bytes)
  return bytes_;
}
inline void MemCopy::set_bytes(::google::protobuf::uint64 value) {
  set_has_bytes();
  bytes_ = value;
  // @@protoc_insertion_point(field_set:paddle.platform.proto.MemCopy.bytes)
}

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

// Event

// optional .paddle.platform.proto.Event.EventType type = 8;
inline bool Event::has_type() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void Event::set_has_type() {
  _has_bits_[0] |= 0x00000001u;
}
inline void Event::clear_has_type() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void Event::clear_type() {
  type_ = 0;
  clear_has_type();
}
inline ::paddle::platform::proto::Event_EventType Event::type() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.Event.type)
  return static_cast< ::paddle::platform::proto::Event_EventType >(type_);
}
inline void Event::set_type(::paddle::platform::proto::Event_EventType value) {
  assert(::paddle::platform::proto::Event_EventType_IsValid(value));
  set_has_type();
  type_ = value;
  // @@protoc_insertion_point(field_set:paddle.platform.proto.Event.type)
}

// optional string name = 1;
inline bool Event::has_name() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void Event::set_has_name() {
  _has_bits_[0] |= 0x00000002u;
}
inline void Event::clear_has_name() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void Event::clear_name() {
  name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  clear_has_name();
}
inline const ::std::string& Event::name() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.Event.name)
  return name_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void Event::set_name(const ::std::string& value) {
  set_has_name();
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:paddle.platform.proto.Event.name)
}
inline void Event::set_name(const char* value) {
  set_has_name();
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:paddle.platform.proto.Event.name)
}
inline void Event::set_name(const char* value, size_t size) {
  set_has_name();
  name_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:paddle.platform.proto.Event.name)
}
inline ::std::string* Event::mutable_name() {
  set_has_name();
  // @@protoc_insertion_point(field_mutable:paddle.platform.proto.Event.name)
  return name_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* Event::release_name() {
  // @@protoc_insertion_point(field_release:paddle.platform.proto.Event.name)
  clear_has_name();
  return name_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void Event::set_allocated_name(::std::string* name) {
  if (name != NULL) {
    set_has_name();
  } else {
    clear_has_name();
  }
  name_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), name);
  // @@protoc_insertion_point(field_set_allocated:paddle.platform.proto.Event.name)
}

// optional uint64 start_ns = 2;
inline bool Event::has_start_ns() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void Event::set_has_start_ns() {
  _has_bits_[0] |= 0x00000004u;
}
inline void Event::clear_has_start_ns() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void Event::clear_start_ns() {
  start_ns_ = GOOGLE_ULONGLONG(0);
  clear_has_start_ns();
}
inline ::google::protobuf::uint64 Event::start_ns() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.Event.start_ns)
  return start_ns_;
}
inline void Event::set_start_ns(::google::protobuf::uint64 value) {
  set_has_start_ns();
  start_ns_ = value;
  // @@protoc_insertion_point(field_set:paddle.platform.proto.Event.start_ns)
}

// optional uint64 end_ns = 3;
inline bool Event::has_end_ns() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void Event::set_has_end_ns() {
  _has_bits_[0] |= 0x00000008u;
}
inline void Event::clear_has_end_ns() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void Event::clear_end_ns() {
  end_ns_ = GOOGLE_ULONGLONG(0);
  clear_has_end_ns();
}
inline ::google::protobuf::uint64 Event::end_ns() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.Event.end_ns)
  return end_ns_;
}
inline void Event::set_end_ns(::google::protobuf::uint64 value) {
  set_has_end_ns();
  end_ns_ = value;
  // @@protoc_insertion_point(field_set:paddle.platform.proto.Event.end_ns)
}

// optional int64 device_id = 5;
inline bool Event::has_device_id() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void Event::set_has_device_id() {
  _has_bits_[0] |= 0x00000010u;
}
inline void Event::clear_has_device_id() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void Event::clear_device_id() {
  device_id_ = GOOGLE_LONGLONG(0);
  clear_has_device_id();
}
inline ::google::protobuf::int64 Event::device_id() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.Event.device_id)
  return device_id_;
}
inline void Event::set_device_id(::google::protobuf::int64 value) {
  set_has_device_id();
  device_id_ = value;
  // @@protoc_insertion_point(field_set:paddle.platform.proto.Event.device_id)
}

// optional int64 sub_device_id = 6;
inline bool Event::has_sub_device_id() const {
  return (_has_bits_[0] & 0x00000020u) != 0;
}
inline void Event::set_has_sub_device_id() {
  _has_bits_[0] |= 0x00000020u;
}
inline void Event::clear_has_sub_device_id() {
  _has_bits_[0] &= ~0x00000020u;
}
inline void Event::clear_sub_device_id() {
  sub_device_id_ = GOOGLE_LONGLONG(0);
  clear_has_sub_device_id();
}
inline ::google::protobuf::int64 Event::sub_device_id() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.Event.sub_device_id)
  return sub_device_id_;
}
inline void Event::set_sub_device_id(::google::protobuf::int64 value) {
  set_has_sub_device_id();
  sub_device_id_ = value;
  // @@protoc_insertion_point(field_set:paddle.platform.proto.Event.sub_device_id)
}

// optional .paddle.platform.proto.MemCopy memcopy = 7;
inline bool Event::has_memcopy() const {
  return (_has_bits_[0] & 0x00000040u) != 0;
}
inline void Event::set_has_memcopy() {
  _has_bits_[0] |= 0x00000040u;
}
inline void Event::clear_has_memcopy() {
  _has_bits_[0] &= ~0x00000040u;
}
inline void Event::clear_memcopy() {
  if (memcopy_ != NULL) memcopy_->::paddle::platform::proto::MemCopy::Clear();
  clear_has_memcopy();
}
inline const ::paddle::platform::proto::MemCopy& Event::memcopy() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.Event.memcopy)
  return memcopy_ != NULL ? *memcopy_
                         : *::paddle::platform::proto::MemCopy::internal_default_instance();
}
inline ::paddle::platform::proto::MemCopy* Event::mutable_memcopy() {
  set_has_memcopy();
  if (memcopy_ == NULL) {
    memcopy_ = new ::paddle::platform::proto::MemCopy;
  }
  // @@protoc_insertion_point(field_mutable:paddle.platform.proto.Event.memcopy)
  return memcopy_;
}
inline ::paddle::platform::proto::MemCopy* Event::release_memcopy() {
  // @@protoc_insertion_point(field_release:paddle.platform.proto.Event.memcopy)
  clear_has_memcopy();
  ::paddle::platform::proto::MemCopy* temp = memcopy_;
  memcopy_ = NULL;
  return temp;
}
inline void Event::set_allocated_memcopy(::paddle::platform::proto::MemCopy* memcopy) {
  delete memcopy_;
  memcopy_ = memcopy;
  if (memcopy) {
    set_has_memcopy();
  } else {
    clear_has_memcopy();
  }
  // @@protoc_insertion_point(field_set_allocated:paddle.platform.proto.Event.memcopy)
}

// optional string detail_info = 9;
inline bool Event::has_detail_info() const {
  return (_has_bits_[0] & 0x00000080u) != 0;
}
inline void Event::set_has_detail_info() {
  _has_bits_[0] |= 0x00000080u;
}
inline void Event::clear_has_detail_info() {
  _has_bits_[0] &= ~0x00000080u;
}
inline void Event::clear_detail_info() {
  detail_info_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  clear_has_detail_info();
}
inline const ::std::string& Event::detail_info() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.Event.detail_info)
  return detail_info_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void Event::set_detail_info(const ::std::string& value) {
  set_has_detail_info();
  detail_info_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:paddle.platform.proto.Event.detail_info)
}
inline void Event::set_detail_info(const char* value) {
  set_has_detail_info();
  detail_info_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:paddle.platform.proto.Event.detail_info)
}
inline void Event::set_detail_info(const char* value, size_t size) {
  set_has_detail_info();
  detail_info_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:paddle.platform.proto.Event.detail_info)
}
inline ::std::string* Event::mutable_detail_info() {
  set_has_detail_info();
  // @@protoc_insertion_point(field_mutable:paddle.platform.proto.Event.detail_info)
  return detail_info_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* Event::release_detail_info() {
  // @@protoc_insertion_point(field_release:paddle.platform.proto.Event.detail_info)
  clear_has_detail_info();
  return detail_info_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void Event::set_allocated_detail_info(::std::string* detail_info) {
  if (detail_info != NULL) {
    set_has_detail_info();
  } else {
    clear_has_detail_info();
  }
  detail_info_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), detail_info);
  // @@protoc_insertion_point(field_set_allocated:paddle.platform.proto.Event.detail_info)
}

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

// MemEvent

// optional uint64 start_ns = 1;
inline bool MemEvent::has_start_ns() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void MemEvent::set_has_start_ns() {
  _has_bits_[0] |= 0x00000001u;
}
inline void MemEvent::clear_has_start_ns() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void MemEvent::clear_start_ns() {
  start_ns_ = GOOGLE_ULONGLONG(0);
  clear_has_start_ns();
}
inline ::google::protobuf::uint64 MemEvent::start_ns() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.MemEvent.start_ns)
  return start_ns_;
}
inline void MemEvent::set_start_ns(::google::protobuf::uint64 value) {
  set_has_start_ns();
  start_ns_ = value;
  // @@protoc_insertion_point(field_set:paddle.platform.proto.MemEvent.start_ns)
}

// optional uint64 end_ns = 2;
inline bool MemEvent::has_end_ns() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void MemEvent::set_has_end_ns() {
  _has_bits_[0] |= 0x00000002u;
}
inline void MemEvent::clear_has_end_ns() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void MemEvent::clear_end_ns() {
  end_ns_ = GOOGLE_ULONGLONG(0);
  clear_has_end_ns();
}
inline ::google::protobuf::uint64 MemEvent::end_ns() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.MemEvent.end_ns)
  return end_ns_;
}
inline void MemEvent::set_end_ns(::google::protobuf::uint64 value) {
  set_has_end_ns();
  end_ns_ = value;
  // @@protoc_insertion_point(field_set:paddle.platform.proto.MemEvent.end_ns)
}

// optional uint64 bytes = 3;
inline bool MemEvent::has_bytes() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void MemEvent::set_has_bytes() {
  _has_bits_[0] |= 0x00000004u;
}
inline void MemEvent::clear_has_bytes() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void MemEvent::clear_bytes() {
  bytes_ = GOOGLE_ULONGLONG(0);
  clear_has_bytes();
}
inline ::google::protobuf::uint64 MemEvent::bytes() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.MemEvent.bytes)
  return bytes_;
}
inline void MemEvent::set_bytes(::google::protobuf::uint64 value) {
  set_has_bytes();
  bytes_ = value;
  // @@protoc_insertion_point(field_set:paddle.platform.proto.MemEvent.bytes)
}

// optional .paddle.platform.proto.MemEvent.Place place = 4;
inline bool MemEvent::has_place() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void MemEvent::set_has_place() {
  _has_bits_[0] |= 0x00000008u;
}
inline void MemEvent::clear_has_place() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void MemEvent::clear_place() {
  place_ = 0;
  clear_has_place();
}
inline ::paddle::platform::proto::MemEvent_Place MemEvent::place() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.MemEvent.place)
  return static_cast< ::paddle::platform::proto::MemEvent_Place >(place_);
}
inline void MemEvent::set_place(::paddle::platform::proto::MemEvent_Place value) {
  assert(::paddle::platform::proto::MemEvent_Place_IsValid(value));
  set_has_place();
  place_ = value;
  // @@protoc_insertion_point(field_set:paddle.platform.proto.MemEvent.place)
}

// optional uint64 thread_id = 5;
inline bool MemEvent::has_thread_id() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void MemEvent::set_has_thread_id() {
  _has_bits_[0] |= 0x00000010u;
}
inline void MemEvent::clear_has_thread_id() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void MemEvent::clear_thread_id() {
  thread_id_ = GOOGLE_ULONGLONG(0);
  clear_has_thread_id();
}
inline ::google::protobuf::uint64 MemEvent::thread_id() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.MemEvent.thread_id)
  return thread_id_;
}
inline void MemEvent::set_thread_id(::google::protobuf::uint64 value) {
  set_has_thread_id();
  thread_id_ = value;
  // @@protoc_insertion_point(field_set:paddle.platform.proto.MemEvent.thread_id)
}

// optional uint32 device_id = 6;
inline bool MemEvent::has_device_id() const {
  return (_has_bits_[0] & 0x00000020u) != 0;
}
inline void MemEvent::set_has_device_id() {
  _has_bits_[0] |= 0x00000020u;
}
inline void MemEvent::clear_has_device_id() {
  _has_bits_[0] &= ~0x00000020u;
}
inline void MemEvent::clear_device_id() {
  device_id_ = 0u;
  clear_has_device_id();
}
inline ::google::protobuf::uint32 MemEvent::device_id() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.MemEvent.device_id)
  return device_id_;
}
inline void MemEvent::set_device_id(::google::protobuf::uint32 value) {
  set_has_device_id();
  device_id_ = value;
  // @@protoc_insertion_point(field_set:paddle.platform.proto.MemEvent.device_id)
}

// optional string alloc_in = 7;
inline bool MemEvent::has_alloc_in() const {
  return (_has_bits_[0] & 0x00000040u) != 0;
}
inline void MemEvent::set_has_alloc_in() {
  _has_bits_[0] |= 0x00000040u;
}
inline void MemEvent::clear_has_alloc_in() {
  _has_bits_[0] &= ~0x00000040u;
}
inline void MemEvent::clear_alloc_in() {
  alloc_in_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  clear_has_alloc_in();
}
inline const ::std::string& MemEvent::alloc_in() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.MemEvent.alloc_in)
  return alloc_in_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void MemEvent::set_alloc_in(const ::std::string& value) {
  set_has_alloc_in();
  alloc_in_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:paddle.platform.proto.MemEvent.alloc_in)
}
inline void MemEvent::set_alloc_in(const char* value) {
  set_has_alloc_in();
  alloc_in_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:paddle.platform.proto.MemEvent.alloc_in)
}
inline void MemEvent::set_alloc_in(const char* value, size_t size) {
  set_has_alloc_in();
  alloc_in_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:paddle.platform.proto.MemEvent.alloc_in)
}
inline ::std::string* MemEvent::mutable_alloc_in() {
  set_has_alloc_in();
  // @@protoc_insertion_point(field_mutable:paddle.platform.proto.MemEvent.alloc_in)
  return alloc_in_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* MemEvent::release_alloc_in() {
  // @@protoc_insertion_point(field_release:paddle.platform.proto.MemEvent.alloc_in)
  clear_has_alloc_in();
  return alloc_in_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void MemEvent::set_allocated_alloc_in(::std::string* alloc_in) {
  if (alloc_in != NULL) {
    set_has_alloc_in();
  } else {
    clear_has_alloc_in();
  }
  alloc_in_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), alloc_in);
  // @@protoc_insertion_point(field_set_allocated:paddle.platform.proto.MemEvent.alloc_in)
}

// optional string free_in = 8;
inline bool MemEvent::has_free_in() const {
  return (_has_bits_[0] & 0x00000080u) != 0;
}
inline void MemEvent::set_has_free_in() {
  _has_bits_[0] |= 0x00000080u;
}
inline void MemEvent::clear_has_free_in() {
  _has_bits_[0] &= ~0x00000080u;
}
inline void MemEvent::clear_free_in() {
  free_in_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  clear_has_free_in();
}
inline const ::std::string& MemEvent::free_in() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.MemEvent.free_in)
  return free_in_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void MemEvent::set_free_in(const ::std::string& value) {
  set_has_free_in();
  free_in_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
  // @@protoc_insertion_point(field_set:paddle.platform.proto.MemEvent.free_in)
}
inline void MemEvent::set_free_in(const char* value) {
  set_has_free_in();
  free_in_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
  // @@protoc_insertion_point(field_set_char:paddle.platform.proto.MemEvent.free_in)
}
inline void MemEvent::set_free_in(const char* value, size_t size) {
  set_has_free_in();
  free_in_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
      ::std::string(reinterpret_cast<const char*>(value), size));
  // @@protoc_insertion_point(field_set_pointer:paddle.platform.proto.MemEvent.free_in)
}
inline ::std::string* MemEvent::mutable_free_in() {
  set_has_free_in();
  // @@protoc_insertion_point(field_mutable:paddle.platform.proto.MemEvent.free_in)
  return free_in_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline ::std::string* MemEvent::release_free_in() {
  // @@protoc_insertion_point(field_release:paddle.platform.proto.MemEvent.free_in)
  clear_has_free_in();
  return free_in_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}
inline void MemEvent::set_allocated_free_in(::std::string* free_in) {
  if (free_in != NULL) {
    set_has_free_in();
  } else {
    clear_has_free_in();
  }
  free_in_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), free_in);
  // @@protoc_insertion_point(field_set_allocated:paddle.platform.proto.MemEvent.free_in)
}

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

// Profile

// repeated .paddle.platform.proto.Event events = 1;
inline int Profile::events_size() const {
  return events_.size();
}
inline void Profile::clear_events() {
  events_.Clear();
}
inline const ::paddle::platform::proto::Event& Profile::events(int index) const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.Profile.events)
  return events_.Get(index);
}
inline ::paddle::platform::proto::Event* Profile::mutable_events(int index) {
  // @@protoc_insertion_point(field_mutable:paddle.platform.proto.Profile.events)
  return events_.Mutable(index);
}
inline ::paddle::platform::proto::Event* Profile::add_events() {
  // @@protoc_insertion_point(field_add:paddle.platform.proto.Profile.events)
  return events_.Add();
}
inline ::google::protobuf::RepeatedPtrField< ::paddle::platform::proto::Event >*
Profile::mutable_events() {
  // @@protoc_insertion_point(field_mutable_list:paddle.platform.proto.Profile.events)
  return &events_;
}
inline const ::google::protobuf::RepeatedPtrField< ::paddle::platform::proto::Event >&
Profile::events() const {
  // @@protoc_insertion_point(field_list:paddle.platform.proto.Profile.events)
  return events_;
}

// optional uint64 start_ns = 2;
inline bool Profile::has_start_ns() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void Profile::set_has_start_ns() {
  _has_bits_[0] |= 0x00000002u;
}
inline void Profile::clear_has_start_ns() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void Profile::clear_start_ns() {
  start_ns_ = GOOGLE_ULONGLONG(0);
  clear_has_start_ns();
}
inline ::google::protobuf::uint64 Profile::start_ns() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.Profile.start_ns)
  return start_ns_;
}
inline void Profile::set_start_ns(::google::protobuf::uint64 value) {
  set_has_start_ns();
  start_ns_ = value;
  // @@protoc_insertion_point(field_set:paddle.platform.proto.Profile.start_ns)
}

// optional uint64 end_ns = 3;
inline bool Profile::has_end_ns() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void Profile::set_has_end_ns() {
  _has_bits_[0] |= 0x00000004u;
}
inline void Profile::clear_has_end_ns() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void Profile::clear_end_ns() {
  end_ns_ = GOOGLE_ULONGLONG(0);
  clear_has_end_ns();
}
inline ::google::protobuf::uint64 Profile::end_ns() const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.Profile.end_ns)
  return end_ns_;
}
inline void Profile::set_end_ns(::google::protobuf::uint64 value) {
  set_has_end_ns();
  end_ns_ = value;
  // @@protoc_insertion_point(field_set:paddle.platform.proto.Profile.end_ns)
}

// repeated .paddle.platform.proto.MemEvent mem_events = 4;
inline int Profile::mem_events_size() const {
  return mem_events_.size();
}
inline void Profile::clear_mem_events() {
  mem_events_.Clear();
}
inline const ::paddle::platform::proto::MemEvent& Profile::mem_events(int index) const {
  // @@protoc_insertion_point(field_get:paddle.platform.proto.Profile.mem_events)
  return mem_events_.Get(index);
}
inline ::paddle::platform::proto::MemEvent* Profile::mutable_mem_events(int index) {
  // @@protoc_insertion_point(field_mutable:paddle.platform.proto.Profile.mem_events)
  return mem_events_.Mutable(index);
}
inline ::paddle::platform::proto::MemEvent* Profile::add_mem_events() {
  // @@protoc_insertion_point(field_add:paddle.platform.proto.Profile.mem_events)
  return mem_events_.Add();
}
inline ::google::protobuf::RepeatedPtrField< ::paddle::platform::proto::MemEvent >*
Profile::mutable_mem_events() {
  // @@protoc_insertion_point(field_mutable_list:paddle.platform.proto.Profile.mem_events)
  return &mem_events_;
}
inline const ::google::protobuf::RepeatedPtrField< ::paddle::platform::proto::MemEvent >&
Profile::mem_events() const {
  // @@protoc_insertion_point(field_list:paddle.platform.proto.Profile.mem_events)
  return mem_events_;
}

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace proto
}  // namespace platform
}  // namespace paddle

#ifndef SWIG
namespace google {
namespace protobuf {

template <> struct is_proto_enum< ::paddle::platform::proto::Event_EventType> : ::google::protobuf::internal::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::paddle::platform::proto::Event_EventType>() {
  return ::paddle::platform::proto::Event_EventType_descriptor();
}
template <> struct is_proto_enum< ::paddle::platform::proto::MemEvent_Place> : ::google::protobuf::internal::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::paddle::platform::proto::MemEvent_Place>() {
  return ::paddle::platform::proto::MemEvent_Place_descriptor();
}

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

// @@protoc_insertion_point(global_scope)

#endif  // PROTOBUF_profiler_2eproto__INCLUDED
