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

#ifndef GOOGLE_PROTOBUF_INCLUDED_Module_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_Module_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3015000
#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 3015005 < 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>
#include "AuxData.pb.h"
#include "ProxyBlock.pb.h"
#include "Section.pb.h"
#include "Symbol.pb.h"
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_Module_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_Module_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[2]
    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_Module_2eproto;
::PROTOBUF_NAMESPACE_ID::Metadata descriptor_table_Module_2eproto_metadata_getter(int index);
namespace gtirb {
namespace proto {
class Module;
struct ModuleDefaultTypeInternal;
extern ModuleDefaultTypeInternal _Module_default_instance_;
class Module_AuxDataEntry_DoNotUse;
struct Module_AuxDataEntry_DoNotUseDefaultTypeInternal;
extern Module_AuxDataEntry_DoNotUseDefaultTypeInternal _Module_AuxDataEntry_DoNotUse_default_instance_;
}  // namespace proto
}  // namespace gtirb
PROTOBUF_NAMESPACE_OPEN
template<> ::gtirb::proto::Module* Arena::CreateMaybeMessage<::gtirb::proto::Module>(Arena*);
template<> ::gtirb::proto::Module_AuxDataEntry_DoNotUse* Arena::CreateMaybeMessage<::gtirb::proto::Module_AuxDataEntry_DoNotUse>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace gtirb {
namespace proto {

enum FileFormat : int {
  Format_Undefined = 0,
  COFF = 1,
  ELF = 2,
  PE = 3,
  IdaProDb32 = 4,
  IdaProDb64 = 5,
  XCOFF = 6,
  MACHO = 7,
  RAW = 8,
  FileFormat_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  FileFormat_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool FileFormat_IsValid(int value);
constexpr FileFormat FileFormat_MIN = Format_Undefined;
constexpr FileFormat FileFormat_MAX = RAW;
constexpr int FileFormat_ARRAYSIZE = FileFormat_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* FileFormat_descriptor();
template<typename T>
inline const std::string& FileFormat_Name(T enum_t_value) {
  static_assert(::std::is_same<T, FileFormat>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function FileFormat_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    FileFormat_descriptor(), enum_t_value);
}
inline bool FileFormat_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, FileFormat* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<FileFormat>(
    FileFormat_descriptor(), name, value);
}
enum ISA : int {
  ISA_Undefined = 0,
  IA32 = 1,
  PPC32 = 2,
  X64 = 3,
  ARM = 4,
  ValidButUnsupported = 5,
  PPC64 = 6,
  ARM64 = 7,
  MIPS32 = 8,
  MIPS64 = 9,
  ISA_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  ISA_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool ISA_IsValid(int value);
constexpr ISA ISA_MIN = ISA_Undefined;
constexpr ISA ISA_MAX = MIPS64;
constexpr int ISA_ARRAYSIZE = ISA_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ISA_descriptor();
template<typename T>
inline const std::string& ISA_Name(T enum_t_value) {
  static_assert(::std::is_same<T, ISA>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function ISA_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    ISA_descriptor(), enum_t_value);
}
inline bool ISA_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, ISA* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<ISA>(
    ISA_descriptor(), name, value);
}
enum ByteOrder : int {
  ByteOrder_Undefined = 0,
  BigEndian = 1,
  LittleEndian = 2,
  ByteOrder_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  ByteOrder_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool ByteOrder_IsValid(int value);
constexpr ByteOrder ByteOrder_MIN = ByteOrder_Undefined;
constexpr ByteOrder ByteOrder_MAX = LittleEndian;
constexpr int ByteOrder_ARRAYSIZE = ByteOrder_MAX + 1;

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

class Module_AuxDataEntry_DoNotUse : public ::PROTOBUF_NAMESPACE_ID::internal::MapEntry<Module_AuxDataEntry_DoNotUse, 
    std::string, ::gtirb::proto::AuxData,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_STRING,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_MESSAGE> {
public:
  typedef ::PROTOBUF_NAMESPACE_ID::internal::MapEntry<Module_AuxDataEntry_DoNotUse, 
    std::string, ::gtirb::proto::AuxData,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_STRING,
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_MESSAGE> SuperType;
  Module_AuxDataEntry_DoNotUse();
  explicit constexpr Module_AuxDataEntry_DoNotUse(
      ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
  explicit Module_AuxDataEntry_DoNotUse(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void MergeFrom(const Module_AuxDataEntry_DoNotUse& other);
  static const Module_AuxDataEntry_DoNotUse* internal_default_instance() { return reinterpret_cast<const Module_AuxDataEntry_DoNotUse*>(&_Module_AuxDataEntry_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, "gtirb.proto.Module.AuxDataEntry.key");
 }
  static bool ValidateValue(void*) { return true; }
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& other) final;
  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_Module_2eproto);
    return ::descriptor_table_Module_2eproto.file_level_metadata[0];
  }

  public:
};

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

class Module PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:gtirb.proto.Module) */ {
 public:
  inline Module() : Module(nullptr) {}
  virtual ~Module();
  explicit constexpr Module(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

  inline Module& operator=(const Module& from) {
    CopyFrom(from);
    return *this;
  }
  inline Module& operator=(Module&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const Module& default_instance() {
    return *internal_default_instance();
  }
  static inline const Module* internal_default_instance() {
    return reinterpret_cast<const Module*>(
               &_Module_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

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

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

  inline Module* New() const final {
    return CreateMaybeMessage<Module>(nullptr);
  }

  Module* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<Module>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const Module& from);
  void MergeFrom(const Module& from);
  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:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(Module* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "gtirb.proto.Module";
  }
  protected:
  explicit Module(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    return ::descriptor_table_Module_2eproto_metadata_getter(kIndexInFileMessages);
  }

  public:

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


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

  enum : int {
    kSymbolsFieldNumber = 9,
    kSectionsFieldNumber = 12,
    kProxiesFieldNumber = 16,
    kAuxDataFieldNumber = 17,
    kUuidFieldNumber = 1,
    kBinaryPathFieldNumber = 2,
    kNameFieldNumber = 7,
    kEntryPointFieldNumber = 18,
    kPreferredAddrFieldNumber = 3,
    kRebaseDeltaFieldNumber = 4,
    kFileFormatFieldNumber = 5,
    kIsaFieldNumber = 6,
    kByteOrderFieldNumber = 19,
  };
  // repeated .gtirb.proto.Symbol symbols = 9;
  int symbols_size() const;
  private:
  int _internal_symbols_size() const;
  public:
  void clear_symbols();
  ::gtirb::proto::Symbol* mutable_symbols(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::gtirb::proto::Symbol >*
      mutable_symbols();
  private:
  const ::gtirb::proto::Symbol& _internal_symbols(int index) const;
  ::gtirb::proto::Symbol* _internal_add_symbols();
  public:
  const ::gtirb::proto::Symbol& symbols(int index) const;
  ::gtirb::proto::Symbol* add_symbols();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::gtirb::proto::Symbol >&
      symbols() const;

  // repeated .gtirb.proto.Section sections = 12;
  int sections_size() const;
  private:
  int _internal_sections_size() const;
  public:
  void clear_sections();
  ::gtirb::proto::Section* mutable_sections(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::gtirb::proto::Section >*
      mutable_sections();
  private:
  const ::gtirb::proto::Section& _internal_sections(int index) const;
  ::gtirb::proto::Section* _internal_add_sections();
  public:
  const ::gtirb::proto::Section& sections(int index) const;
  ::gtirb::proto::Section* add_sections();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::gtirb::proto::Section >&
      sections() const;

  // repeated .gtirb.proto.ProxyBlock proxies = 16;
  int proxies_size() const;
  private:
  int _internal_proxies_size() const;
  public:
  void clear_proxies();
  ::gtirb::proto::ProxyBlock* mutable_proxies(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::gtirb::proto::ProxyBlock >*
      mutable_proxies();
  private:
  const ::gtirb::proto::ProxyBlock& _internal_proxies(int index) const;
  ::gtirb::proto::ProxyBlock* _internal_add_proxies();
  public:
  const ::gtirb::proto::ProxyBlock& proxies(int index) const;
  ::gtirb::proto::ProxyBlock* add_proxies();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::gtirb::proto::ProxyBlock >&
      proxies() const;

  // map<string, .gtirb.proto.AuxData> aux_data = 17;
  int aux_data_size() const;
  private:
  int _internal_aux_data_size() const;
  public:
  void clear_aux_data();
  private:
  const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::gtirb::proto::AuxData >&
      _internal_aux_data() const;
  ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::gtirb::proto::AuxData >*
      _internal_mutable_aux_data();
  public:
  const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::gtirb::proto::AuxData >&
      aux_data() const;
  ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::gtirb::proto::AuxData >*
      mutable_aux_data();

  // bytes uuid = 1;
  void clear_uuid();
  const std::string& uuid() const;
  void set_uuid(const std::string& value);
  void set_uuid(std::string&& value);
  void set_uuid(const char* value);
  void set_uuid(const void* value, size_t size);
  std::string* mutable_uuid();
  std::string* release_uuid();
  void set_allocated_uuid(std::string* uuid);
  private:
  const std::string& _internal_uuid() const;
  void _internal_set_uuid(const std::string& value);
  std::string* _internal_mutable_uuid();
  public:

  // string binary_path = 2;
  void clear_binary_path();
  const std::string& binary_path() const;
  void set_binary_path(const std::string& value);
  void set_binary_path(std::string&& value);
  void set_binary_path(const char* value);
  void set_binary_path(const char* value, size_t size);
  std::string* mutable_binary_path();
  std::string* release_binary_path();
  void set_allocated_binary_path(std::string* binary_path);
  private:
  const std::string& _internal_binary_path() const;
  void _internal_set_binary_path(const std::string& value);
  std::string* _internal_mutable_binary_path();
  public:

  // string name = 7;
  void clear_name();
  const std::string& name() const;
  void set_name(const std::string& value);
  void set_name(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);
  private:
  const std::string& _internal_name() const;
  void _internal_set_name(const std::string& value);
  std::string* _internal_mutable_name();
  public:

  // bytes entry_point = 18;
  void clear_entry_point();
  const std::string& entry_point() const;
  void set_entry_point(const std::string& value);
  void set_entry_point(std::string&& value);
  void set_entry_point(const char* value);
  void set_entry_point(const void* value, size_t size);
  std::string* mutable_entry_point();
  std::string* release_entry_point();
  void set_allocated_entry_point(std::string* entry_point);
  private:
  const std::string& _internal_entry_point() const;
  void _internal_set_entry_point(const std::string& value);
  std::string* _internal_mutable_entry_point();
  public:

  // uint64 preferred_addr = 3;
  void clear_preferred_addr();
  ::PROTOBUF_NAMESPACE_ID::uint64 preferred_addr() const;
  void set_preferred_addr(::PROTOBUF_NAMESPACE_ID::uint64 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint64 _internal_preferred_addr() const;
  void _internal_set_preferred_addr(::PROTOBUF_NAMESPACE_ID::uint64 value);
  public:

  // int64 rebase_delta = 4;
  void clear_rebase_delta();
  ::PROTOBUF_NAMESPACE_ID::int64 rebase_delta() const;
  void set_rebase_delta(::PROTOBUF_NAMESPACE_ID::int64 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int64 _internal_rebase_delta() const;
  void _internal_set_rebase_delta(::PROTOBUF_NAMESPACE_ID::int64 value);
  public:

  // .gtirb.proto.FileFormat file_format = 5;
  void clear_file_format();
  ::gtirb::proto::FileFormat file_format() const;
  void set_file_format(::gtirb::proto::FileFormat value);
  private:
  ::gtirb::proto::FileFormat _internal_file_format() const;
  void _internal_set_file_format(::gtirb::proto::FileFormat value);
  public:

  // .gtirb.proto.ISA isa = 6;
  void clear_isa();
  ::gtirb::proto::ISA isa() const;
  void set_isa(::gtirb::proto::ISA value);
  private:
  ::gtirb::proto::ISA _internal_isa() const;
  void _internal_set_isa(::gtirb::proto::ISA value);
  public:

  // .gtirb.proto.ByteOrder byte_order = 19;
  void clear_byte_order();
  ::gtirb::proto::ByteOrder byte_order() const;
  void set_byte_order(::gtirb::proto::ByteOrder value);
  private:
  ::gtirb::proto::ByteOrder _internal_byte_order() const;
  void _internal_set_byte_order(::gtirb::proto::ByteOrder value);
  public:

  // @@protoc_insertion_point(class_scope:gtirb.proto.Module)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::gtirb::proto::Symbol > symbols_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::gtirb::proto::Section > sections_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::gtirb::proto::ProxyBlock > proxies_;
  ::PROTOBUF_NAMESPACE_ID::internal::MapField<
      Module_AuxDataEntry_DoNotUse,
      std::string, ::gtirb::proto::AuxData,
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_STRING,
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_MESSAGE> aux_data_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr uuid_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr binary_path_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr entry_point_;
  ::PROTOBUF_NAMESPACE_ID::uint64 preferred_addr_;
  ::PROTOBUF_NAMESPACE_ID::int64 rebase_delta_;
  int file_format_;
  int isa_;
  int byte_order_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_Module_2eproto;
};
// ===================================================================


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

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

// Module

// bytes uuid = 1;
inline void Module::clear_uuid() {
  uuid_.ClearToEmpty();
}
inline const std::string& Module::uuid() const {
  // @@protoc_insertion_point(field_get:gtirb.proto.Module.uuid)
  return _internal_uuid();
}
inline void Module::set_uuid(const std::string& value) {
  _internal_set_uuid(value);
  // @@protoc_insertion_point(field_set:gtirb.proto.Module.uuid)
}
inline std::string* Module::mutable_uuid() {
  // @@protoc_insertion_point(field_mutable:gtirb.proto.Module.uuid)
  return _internal_mutable_uuid();
}
inline const std::string& Module::_internal_uuid() const {
  return uuid_.Get();
}
inline void Module::_internal_set_uuid(const std::string& value) {
  
  uuid_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena());
}
inline void Module::set_uuid(std::string&& value) {
  
  uuid_.Set(
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena());
  // @@protoc_insertion_point(field_set_rvalue:gtirb.proto.Module.uuid)
}
inline void Module::set_uuid(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  uuid_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena());
  // @@protoc_insertion_point(field_set_char:gtirb.proto.Module.uuid)
}
inline void Module::set_uuid(const void* value,
    size_t size) {
  
  uuid_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(
      reinterpret_cast<const char*>(value), size), GetArena());
  // @@protoc_insertion_point(field_set_pointer:gtirb.proto.Module.uuid)
}
inline std::string* Module::_internal_mutable_uuid() {
  
  return uuid_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena());
}
inline std::string* Module::release_uuid() {
  // @@protoc_insertion_point(field_release:gtirb.proto.Module.uuid)
  return uuid_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void Module::set_allocated_uuid(std::string* uuid) {
  if (uuid != nullptr) {
    
  } else {
    
  }
  uuid_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), uuid,
      GetArena());
  // @@protoc_insertion_point(field_set_allocated:gtirb.proto.Module.uuid)
}

// string binary_path = 2;
inline void Module::clear_binary_path() {
  binary_path_.ClearToEmpty();
}
inline const std::string& Module::binary_path() const {
  // @@protoc_insertion_point(field_get:gtirb.proto.Module.binary_path)
  return _internal_binary_path();
}
inline void Module::set_binary_path(const std::string& value) {
  _internal_set_binary_path(value);
  // @@protoc_insertion_point(field_set:gtirb.proto.Module.binary_path)
}
inline std::string* Module::mutable_binary_path() {
  // @@protoc_insertion_point(field_mutable:gtirb.proto.Module.binary_path)
  return _internal_mutable_binary_path();
}
inline const std::string& Module::_internal_binary_path() const {
  return binary_path_.Get();
}
inline void Module::_internal_set_binary_path(const std::string& value) {
  
  binary_path_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena());
}
inline void Module::set_binary_path(std::string&& value) {
  
  binary_path_.Set(
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena());
  // @@protoc_insertion_point(field_set_rvalue:gtirb.proto.Module.binary_path)
}
inline void Module::set_binary_path(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  binary_path_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena());
  // @@protoc_insertion_point(field_set_char:gtirb.proto.Module.binary_path)
}
inline void Module::set_binary_path(const char* value,
    size_t size) {
  
  binary_path_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(
      reinterpret_cast<const char*>(value), size), GetArena());
  // @@protoc_insertion_point(field_set_pointer:gtirb.proto.Module.binary_path)
}
inline std::string* Module::_internal_mutable_binary_path() {
  
  return binary_path_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena());
}
inline std::string* Module::release_binary_path() {
  // @@protoc_insertion_point(field_release:gtirb.proto.Module.binary_path)
  return binary_path_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void Module::set_allocated_binary_path(std::string* binary_path) {
  if (binary_path != nullptr) {
    
  } else {
    
  }
  binary_path_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), binary_path,
      GetArena());
  // @@protoc_insertion_point(field_set_allocated:gtirb.proto.Module.binary_path)
}

// uint64 preferred_addr = 3;
inline void Module::clear_preferred_addr() {
  preferred_addr_ = PROTOBUF_ULONGLONG(0);
}
inline ::PROTOBUF_NAMESPACE_ID::uint64 Module::_internal_preferred_addr() const {
  return preferred_addr_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint64 Module::preferred_addr() const {
  // @@protoc_insertion_point(field_get:gtirb.proto.Module.preferred_addr)
  return _internal_preferred_addr();
}
inline void Module::_internal_set_preferred_addr(::PROTOBUF_NAMESPACE_ID::uint64 value) {
  
  preferred_addr_ = value;
}
inline void Module::set_preferred_addr(::PROTOBUF_NAMESPACE_ID::uint64 value) {
  _internal_set_preferred_addr(value);
  // @@protoc_insertion_point(field_set:gtirb.proto.Module.preferred_addr)
}

// int64 rebase_delta = 4;
inline void Module::clear_rebase_delta() {
  rebase_delta_ = PROTOBUF_LONGLONG(0);
}
inline ::PROTOBUF_NAMESPACE_ID::int64 Module::_internal_rebase_delta() const {
  return rebase_delta_;
}
inline ::PROTOBUF_NAMESPACE_ID::int64 Module::rebase_delta() const {
  // @@protoc_insertion_point(field_get:gtirb.proto.Module.rebase_delta)
  return _internal_rebase_delta();
}
inline void Module::_internal_set_rebase_delta(::PROTOBUF_NAMESPACE_ID::int64 value) {
  
  rebase_delta_ = value;
}
inline void Module::set_rebase_delta(::PROTOBUF_NAMESPACE_ID::int64 value) {
  _internal_set_rebase_delta(value);
  // @@protoc_insertion_point(field_set:gtirb.proto.Module.rebase_delta)
}

// .gtirb.proto.FileFormat file_format = 5;
inline void Module::clear_file_format() {
  file_format_ = 0;
}
inline ::gtirb::proto::FileFormat Module::_internal_file_format() const {
  return static_cast< ::gtirb::proto::FileFormat >(file_format_);
}
inline ::gtirb::proto::FileFormat Module::file_format() const {
  // @@protoc_insertion_point(field_get:gtirb.proto.Module.file_format)
  return _internal_file_format();
}
inline void Module::_internal_set_file_format(::gtirb::proto::FileFormat value) {
  
  file_format_ = value;
}
inline void Module::set_file_format(::gtirb::proto::FileFormat value) {
  _internal_set_file_format(value);
  // @@protoc_insertion_point(field_set:gtirb.proto.Module.file_format)
}

// .gtirb.proto.ISA isa = 6;
inline void Module::clear_isa() {
  isa_ = 0;
}
inline ::gtirb::proto::ISA Module::_internal_isa() const {
  return static_cast< ::gtirb::proto::ISA >(isa_);
}
inline ::gtirb::proto::ISA Module::isa() const {
  // @@protoc_insertion_point(field_get:gtirb.proto.Module.isa)
  return _internal_isa();
}
inline void Module::_internal_set_isa(::gtirb::proto::ISA value) {
  
  isa_ = value;
}
inline void Module::set_isa(::gtirb::proto::ISA value) {
  _internal_set_isa(value);
  // @@protoc_insertion_point(field_set:gtirb.proto.Module.isa)
}

// string name = 7;
inline void Module::clear_name() {
  name_.ClearToEmpty();
}
inline const std::string& Module::name() const {
  // @@protoc_insertion_point(field_get:gtirb.proto.Module.name)
  return _internal_name();
}
inline void Module::set_name(const std::string& value) {
  _internal_set_name(value);
  // @@protoc_insertion_point(field_set:gtirb.proto.Module.name)
}
inline std::string* Module::mutable_name() {
  // @@protoc_insertion_point(field_mutable:gtirb.proto.Module.name)
  return _internal_mutable_name();
}
inline const std::string& Module::_internal_name() const {
  return name_.Get();
}
inline void Module::_internal_set_name(const std::string& value) {
  
  name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena());
}
inline void Module::set_name(std::string&& value) {
  
  name_.Set(
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena());
  // @@protoc_insertion_point(field_set_rvalue:gtirb.proto.Module.name)
}
inline void Module::set_name(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena());
  // @@protoc_insertion_point(field_set_char:gtirb.proto.Module.name)
}
inline void Module::set_name(const char* value,
    size_t size) {
  
  name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(
      reinterpret_cast<const char*>(value), size), GetArena());
  // @@protoc_insertion_point(field_set_pointer:gtirb.proto.Module.name)
}
inline std::string* Module::_internal_mutable_name() {
  
  return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena());
}
inline std::string* Module::release_name() {
  // @@protoc_insertion_point(field_release:gtirb.proto.Module.name)
  return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void Module::set_allocated_name(std::string* name) {
  if (name != nullptr) {
    
  } else {
    
  }
  name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name,
      GetArena());
  // @@protoc_insertion_point(field_set_allocated:gtirb.proto.Module.name)
}

// repeated .gtirb.proto.Symbol symbols = 9;
inline int Module::_internal_symbols_size() const {
  return symbols_.size();
}
inline int Module::symbols_size() const {
  return _internal_symbols_size();
}
inline ::gtirb::proto::Symbol* Module::mutable_symbols(int index) {
  // @@protoc_insertion_point(field_mutable:gtirb.proto.Module.symbols)
  return symbols_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::gtirb::proto::Symbol >*
Module::mutable_symbols() {
  // @@protoc_insertion_point(field_mutable_list:gtirb.proto.Module.symbols)
  return &symbols_;
}
inline const ::gtirb::proto::Symbol& Module::_internal_symbols(int index) const {
  return symbols_.Get(index);
}
inline const ::gtirb::proto::Symbol& Module::symbols(int index) const {
  // @@protoc_insertion_point(field_get:gtirb.proto.Module.symbols)
  return _internal_symbols(index);
}
inline ::gtirb::proto::Symbol* Module::_internal_add_symbols() {
  return symbols_.Add();
}
inline ::gtirb::proto::Symbol* Module::add_symbols() {
  // @@protoc_insertion_point(field_add:gtirb.proto.Module.symbols)
  return _internal_add_symbols();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::gtirb::proto::Symbol >&
Module::symbols() const {
  // @@protoc_insertion_point(field_list:gtirb.proto.Module.symbols)
  return symbols_;
}

// repeated .gtirb.proto.ProxyBlock proxies = 16;
inline int Module::_internal_proxies_size() const {
  return proxies_.size();
}
inline int Module::proxies_size() const {
  return _internal_proxies_size();
}
inline ::gtirb::proto::ProxyBlock* Module::mutable_proxies(int index) {
  // @@protoc_insertion_point(field_mutable:gtirb.proto.Module.proxies)
  return proxies_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::gtirb::proto::ProxyBlock >*
Module::mutable_proxies() {
  // @@protoc_insertion_point(field_mutable_list:gtirb.proto.Module.proxies)
  return &proxies_;
}
inline const ::gtirb::proto::ProxyBlock& Module::_internal_proxies(int index) const {
  return proxies_.Get(index);
}
inline const ::gtirb::proto::ProxyBlock& Module::proxies(int index) const {
  // @@protoc_insertion_point(field_get:gtirb.proto.Module.proxies)
  return _internal_proxies(index);
}
inline ::gtirb::proto::ProxyBlock* Module::_internal_add_proxies() {
  return proxies_.Add();
}
inline ::gtirb::proto::ProxyBlock* Module::add_proxies() {
  // @@protoc_insertion_point(field_add:gtirb.proto.Module.proxies)
  return _internal_add_proxies();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::gtirb::proto::ProxyBlock >&
Module::proxies() const {
  // @@protoc_insertion_point(field_list:gtirb.proto.Module.proxies)
  return proxies_;
}

// repeated .gtirb.proto.Section sections = 12;
inline int Module::_internal_sections_size() const {
  return sections_.size();
}
inline int Module::sections_size() const {
  return _internal_sections_size();
}
inline ::gtirb::proto::Section* Module::mutable_sections(int index) {
  // @@protoc_insertion_point(field_mutable:gtirb.proto.Module.sections)
  return sections_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::gtirb::proto::Section >*
Module::mutable_sections() {
  // @@protoc_insertion_point(field_mutable_list:gtirb.proto.Module.sections)
  return &sections_;
}
inline const ::gtirb::proto::Section& Module::_internal_sections(int index) const {
  return sections_.Get(index);
}
inline const ::gtirb::proto::Section& Module::sections(int index) const {
  // @@protoc_insertion_point(field_get:gtirb.proto.Module.sections)
  return _internal_sections(index);
}
inline ::gtirb::proto::Section* Module::_internal_add_sections() {
  return sections_.Add();
}
inline ::gtirb::proto::Section* Module::add_sections() {
  // @@protoc_insertion_point(field_add:gtirb.proto.Module.sections)
  return _internal_add_sections();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::gtirb::proto::Section >&
Module::sections() const {
  // @@protoc_insertion_point(field_list:gtirb.proto.Module.sections)
  return sections_;
}

// map<string, .gtirb.proto.AuxData> aux_data = 17;
inline int Module::_internal_aux_data_size() const {
  return aux_data_.size();
}
inline int Module::aux_data_size() const {
  return _internal_aux_data_size();
}
inline const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::gtirb::proto::AuxData >&
Module::_internal_aux_data() const {
  return aux_data_.GetMap();
}
inline const ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::gtirb::proto::AuxData >&
Module::aux_data() const {
  // @@protoc_insertion_point(field_map:gtirb.proto.Module.aux_data)
  return _internal_aux_data();
}
inline ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::gtirb::proto::AuxData >*
Module::_internal_mutable_aux_data() {
  return aux_data_.MutableMap();
}
inline ::PROTOBUF_NAMESPACE_ID::Map< std::string, ::gtirb::proto::AuxData >*
Module::mutable_aux_data() {
  // @@protoc_insertion_point(field_mutable_map:gtirb.proto.Module.aux_data)
  return _internal_mutable_aux_data();
}

// bytes entry_point = 18;
inline void Module::clear_entry_point() {
  entry_point_.ClearToEmpty();
}
inline const std::string& Module::entry_point() const {
  // @@protoc_insertion_point(field_get:gtirb.proto.Module.entry_point)
  return _internal_entry_point();
}
inline void Module::set_entry_point(const std::string& value) {
  _internal_set_entry_point(value);
  // @@protoc_insertion_point(field_set:gtirb.proto.Module.entry_point)
}
inline std::string* Module::mutable_entry_point() {
  // @@protoc_insertion_point(field_mutable:gtirb.proto.Module.entry_point)
  return _internal_mutable_entry_point();
}
inline const std::string& Module::_internal_entry_point() const {
  return entry_point_.Get();
}
inline void Module::_internal_set_entry_point(const std::string& value) {
  
  entry_point_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena());
}
inline void Module::set_entry_point(std::string&& value) {
  
  entry_point_.Set(
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena());
  // @@protoc_insertion_point(field_set_rvalue:gtirb.proto.Module.entry_point)
}
inline void Module::set_entry_point(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  entry_point_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena());
  // @@protoc_insertion_point(field_set_char:gtirb.proto.Module.entry_point)
}
inline void Module::set_entry_point(const void* value,
    size_t size) {
  
  entry_point_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(
      reinterpret_cast<const char*>(value), size), GetArena());
  // @@protoc_insertion_point(field_set_pointer:gtirb.proto.Module.entry_point)
}
inline std::string* Module::_internal_mutable_entry_point() {
  
  return entry_point_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena());
}
inline std::string* Module::release_entry_point() {
  // @@protoc_insertion_point(field_release:gtirb.proto.Module.entry_point)
  return entry_point_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void Module::set_allocated_entry_point(std::string* entry_point) {
  if (entry_point != nullptr) {
    
  } else {
    
  }
  entry_point_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), entry_point,
      GetArena());
  // @@protoc_insertion_point(field_set_allocated:gtirb.proto.Module.entry_point)
}

// .gtirb.proto.ByteOrder byte_order = 19;
inline void Module::clear_byte_order() {
  byte_order_ = 0;
}
inline ::gtirb::proto::ByteOrder Module::_internal_byte_order() const {
  return static_cast< ::gtirb::proto::ByteOrder >(byte_order_);
}
inline ::gtirb::proto::ByteOrder Module::byte_order() const {
  // @@protoc_insertion_point(field_get:gtirb.proto.Module.byte_order)
  return _internal_byte_order();
}
inline void Module::_internal_set_byte_order(::gtirb::proto::ByteOrder value) {
  
  byte_order_ = value;
}
inline void Module::set_byte_order(::gtirb::proto::ByteOrder value) {
  _internal_set_byte_order(value);
  // @@protoc_insertion_point(field_set:gtirb.proto.Module.byte_order)
}

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace proto
}  // namespace gtirb

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::gtirb::proto::FileFormat> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::gtirb::proto::FileFormat>() {
  return ::gtirb::proto::FileFormat_descriptor();
}
template <> struct is_proto_enum< ::gtirb::proto::ISA> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::gtirb::proto::ISA>() {
  return ::gtirb::proto::ISA_descriptor();
}
template <> struct is_proto_enum< ::gtirb::proto::ByteOrder> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::gtirb::proto::ByteOrder>() {
  return ::gtirb::proto::ByteOrder_descriptor();
}

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

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