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

#ifndef GOOGLE_PROTOBUF_INCLUDED_spatial_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_spatial_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3020000
#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 3020003 < 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_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/unknown_field_set.h>
#include "vector.pb.h"
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_spatial_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_spatial_2eproto {
  static const uint32_t offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_spatial_2eproto;
namespace Messages {
class GridControl;
struct GridControlDefaultTypeInternal;
extern GridControlDefaultTypeInternal _GridControl_default_instance_;
class MeshControl;
struct MeshControlDefaultTypeInternal;
extern MeshControlDefaultTypeInternal _MeshControl_default_instance_;
class Topology;
struct TopologyDefaultTypeInternal;
extern TopologyDefaultTypeInternal _Topology_default_instance_;
class TreeControl;
struct TreeControlDefaultTypeInternal;
extern TreeControlDefaultTypeInternal _TreeControl_default_instance_;
class Zone;
struct ZoneDefaultTypeInternal;
extern ZoneDefaultTypeInternal _Zone_default_instance_;
}  // namespace Messages
PROTOBUF_NAMESPACE_OPEN
template<> ::Messages::GridControl* Arena::CreateMaybeMessage<::Messages::GridControl>(Arena*);
template<> ::Messages::MeshControl* Arena::CreateMaybeMessage<::Messages::MeshControl>(Arena*);
template<> ::Messages::Topology* Arena::CreateMaybeMessage<::Messages::Topology>(Arena*);
template<> ::Messages::TreeControl* Arena::CreateMaybeMessage<::Messages::TreeControl>(Arena*);
template<> ::Messages::Zone* Arena::CreateMaybeMessage<::Messages::Zone>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace Messages {

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

class Zone final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Messages.Zone) */ {
 public:
  inline Zone() : Zone(nullptr) {}
  ~Zone() override;
  explicit PROTOBUF_CONSTEXPR Zone(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

  inline Zone& operator=(const Zone& from) {
    CopyFrom(from);
    return *this;
  }
  inline Zone& operator=(Zone&& 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 Zone& default_instance() {
    return *internal_default_instance();
  }
  static inline const Zone* internal_default_instance() {
    return reinterpret_cast<const Zone*>(
               &_Zone_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(Zone& a, Zone& b) {
    a.Swap(&b);
  }
  inline void Swap(Zone* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Zone* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  Zone* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<Zone>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const Zone& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const Zone& 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;
  uint8_t* _InternalSerialize(
      uint8_t* 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(Zone* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Messages.Zone";
  }
  protected:
  explicit Zone(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  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 {
    kElementsFieldNumber = 5,
    kTerminalCoordFieldNumber = 11,
    kNameFieldNumber = 1,
    kCommentsFieldNumber = 7,
    kInfoFieldNumber = 8,
    kResourceNameFieldNumber = 9,
    kRevisionFieldNumber = 4,
    kBoundsFieldNumber = 10,
    kIdFieldNumber = 2,
    kDimensionalityFieldNumber = 3,
    kElementCountFieldNumber = 6,
  };
  // repeated uint32 elements = 5;
  int elements_size() const;
  private:
  int _internal_elements_size() const;
  public:
  void clear_elements();
  private:
  uint32_t _internal_elements(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
      _internal_elements() const;
  void _internal_add_elements(uint32_t value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
      _internal_mutable_elements();
  public:
  uint32_t elements(int index) const;
  void set_elements(int index, uint32_t value);
  void add_elements(uint32_t value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
      elements() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
      mutable_elements();

  // repeated float terminal_coord = 11;
  int terminal_coord_size() const;
  private:
  int _internal_terminal_coord_size() const;
  public:
  void clear_terminal_coord();
  private:
  float _internal_terminal_coord(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
      _internal_terminal_coord() const;
  void _internal_add_terminal_coord(float value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
      _internal_mutable_terminal_coord();
  public:
  float terminal_coord(int index) const;
  void set_terminal_coord(int index, float value);
  void add_terminal_coord(float value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
      terminal_coord() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
      mutable_terminal_coord();

  // string name = 1;
  void clear_name();
  const std::string& name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* name);
  private:
  const std::string& _internal_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
  std::string* _internal_mutable_name();
  public:

  // string comments = 7;
  void clear_comments();
  const std::string& comments() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_comments(ArgT0&& arg0, ArgT... args);
  std::string* mutable_comments();
  PROTOBUF_NODISCARD std::string* release_comments();
  void set_allocated_comments(std::string* comments);
  private:
  const std::string& _internal_comments() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_comments(const std::string& value);
  std::string* _internal_mutable_comments();
  public:

  // string info = 8;
  void clear_info();
  const std::string& info() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_info(ArgT0&& arg0, ArgT... args);
  std::string* mutable_info();
  PROTOBUF_NODISCARD std::string* release_info();
  void set_allocated_info(std::string* info);
  private:
  const std::string& _internal_info() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_info(const std::string& value);
  std::string* _internal_mutable_info();
  public:

  // string resource_name = 9;
  void clear_resource_name();
  const std::string& resource_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_resource_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_resource_name();
  PROTOBUF_NODISCARD std::string* release_resource_name();
  void set_allocated_resource_name(std::string* resource_name);
  private:
  const std::string& _internal_resource_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_resource_name(const std::string& value);
  std::string* _internal_mutable_resource_name();
  public:

  // .Messages.Revision revision = 4;
  bool has_revision() const;
  private:
  bool _internal_has_revision() const;
  public:
  void clear_revision();
  const ::Messages::Revision& revision() const;
  PROTOBUF_NODISCARD ::Messages::Revision* release_revision();
  ::Messages::Revision* mutable_revision();
  void set_allocated_revision(::Messages::Revision* revision);
  private:
  const ::Messages::Revision& _internal_revision() const;
  ::Messages::Revision* _internal_mutable_revision();
  public:
  void unsafe_arena_set_allocated_revision(
      ::Messages::Revision* revision);
  ::Messages::Revision* unsafe_arena_release_revision();

  // .Messages.Extrema bounds = 10;
  bool has_bounds() const;
  private:
  bool _internal_has_bounds() const;
  public:
  void clear_bounds();
  const ::Messages::Extrema& bounds() const;
  PROTOBUF_NODISCARD ::Messages::Extrema* release_bounds();
  ::Messages::Extrema* mutable_bounds();
  void set_allocated_bounds(::Messages::Extrema* bounds);
  private:
  const ::Messages::Extrema& _internal_bounds() const;
  ::Messages::Extrema* _internal_mutable_bounds();
  public:
  void unsafe_arena_set_allocated_bounds(
      ::Messages::Extrema* bounds);
  ::Messages::Extrema* unsafe_arena_release_bounds();

  // int32 id = 2;
  void clear_id();
  int32_t id() const;
  void set_id(int32_t value);
  private:
  int32_t _internal_id() const;
  void _internal_set_id(int32_t value);
  public:

  // uint32 dimensionality = 3;
  void clear_dimensionality();
  uint32_t dimensionality() const;
  void set_dimensionality(uint32_t value);
  private:
  uint32_t _internal_dimensionality() const;
  void _internal_set_dimensionality(uint32_t value);
  public:

  // uint32 element_count = 6;
  void clear_element_count();
  uint32_t element_count() const;
  void set_element_count(uint32_t value);
  private:
  uint32_t _internal_element_count() const;
  void _internal_set_element_count(uint32_t value);
  public:

  // @@protoc_insertion_point(class_scope:Messages.Zone)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t > elements_;
  mutable std::atomic<int> _elements_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< float > terminal_coord_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr comments_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr info_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr resource_name_;
  ::Messages::Revision* revision_;
  ::Messages::Extrema* bounds_;
  int32_t id_;
  uint32_t dimensionality_;
  uint32_t element_count_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_spatial_2eproto;
};
// -------------------------------------------------------------------

class GridControl final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Messages.GridControl) */ {
 public:
  inline GridControl() : GridControl(nullptr) {}
  ~GridControl() override;
  explicit PROTOBUF_CONSTEXPR GridControl(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

  inline GridControl& operator=(const GridControl& from) {
    CopyFrom(from);
    return *this;
  }
  inline GridControl& operator=(GridControl&& 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 GridControl& default_instance() {
    return *internal_default_instance();
  }
  static inline const GridControl* internal_default_instance() {
    return reinterpret_cast<const GridControl*>(
               &_GridControl_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(GridControl& a, GridControl& b) {
    a.Swap(&b);
  }
  inline void Swap(GridControl* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GridControl* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  GridControl* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<GridControl>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const GridControl& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const GridControl& 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;
  uint8_t* _InternalSerialize(
      uint8_t* 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(GridControl* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Messages.GridControl";
  }
  protected:
  explicit GridControl(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  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 {
    kSizeFieldNumber = 2,
    kSpacingFieldNumber = 3,
    kGradingFieldNumber = 4,
    kSymmetriesFieldNumber = 11,
    kBoundsFieldNumber = 10,
    kBasisFieldNumber = 1,
    kLengthUnitsFieldNumber = 8,
    kTargetNFieldNumber = 9,
    kInteriorFieldNumber = 12,
    kExteriorFieldNumber = 13,
    kShellFieldNumber = 14,
  };
  // repeated uint32 size = 2;
  int size_size() const;
  private:
  int _internal_size_size() const;
  public:
  void clear_size();
  private:
  uint32_t _internal_size(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
      _internal_size() const;
  void _internal_add_size(uint32_t value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
      _internal_mutable_size();
  public:
  uint32_t size(int index) const;
  void set_size(int index, uint32_t value);
  void add_size(uint32_t value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
      size() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
      mutable_size();

  // repeated double spacing = 3;
  int spacing_size() const;
  private:
  int _internal_spacing_size() const;
  public:
  void clear_spacing();
  private:
  double _internal_spacing(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
      _internal_spacing() const;
  void _internal_add_spacing(double value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
      _internal_mutable_spacing();
  public:
  double spacing(int index) const;
  void set_spacing(int index, double value);
  void add_spacing(double value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
      spacing() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
      mutable_spacing();

  // repeated double grading = 4;
  int grading_size() const;
  private:
  int _internal_grading_size() const;
  public:
  void clear_grading();
  private:
  double _internal_grading(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
      _internal_grading() const;
  void _internal_add_grading(double value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
      _internal_mutable_grading();
  public:
  double grading(int index) const;
  void set_grading(int index, double value);
  void add_grading(double value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
      grading() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
      mutable_grading();

  // repeated bool symmetries = 11;
  int symmetries_size() const;
  private:
  int _internal_symmetries_size() const;
  public:
  void clear_symmetries();
  private:
  bool _internal_symmetries(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >&
      _internal_symmetries() const;
  void _internal_add_symmetries(bool value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >*
      _internal_mutable_symmetries();
  public:
  bool symmetries(int index) const;
  void set_symmetries(int index, bool value);
  void add_symmetries(bool value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >&
      symmetries() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >*
      mutable_symmetries();

  // .Messages.Extrema bounds = 10;
  bool has_bounds() const;
  private:
  bool _internal_has_bounds() const;
  public:
  void clear_bounds();
  const ::Messages::Extrema& bounds() const;
  PROTOBUF_NODISCARD ::Messages::Extrema* release_bounds();
  ::Messages::Extrema* mutable_bounds();
  void set_allocated_bounds(::Messages::Extrema* bounds);
  private:
  const ::Messages::Extrema& _internal_bounds() const;
  ::Messages::Extrema* _internal_mutable_bounds();
  public:
  void unsafe_arena_set_allocated_bounds(
      ::Messages::Extrema* bounds);
  ::Messages::Extrema* unsafe_arena_release_bounds();

  // uint32 basis = 1;
  void clear_basis();
  uint32_t basis() const;
  void set_basis(uint32_t value);
  private:
  uint32_t _internal_basis() const;
  void _internal_set_basis(uint32_t value);
  public:

  // uint32 length_units = 8;
  void clear_length_units();
  uint32_t length_units() const;
  void set_length_units(uint32_t value);
  private:
  uint32_t _internal_length_units() const;
  void _internal_set_length_units(uint32_t value);
  public:

  // uint64 target_n = 9;
  void clear_target_n();
  uint64_t target_n() const;
  void set_target_n(uint64_t value);
  private:
  uint64_t _internal_target_n() const;
  void _internal_set_target_n(uint64_t value);
  public:

  // bool interior = 12;
  void clear_interior();
  bool interior() const;
  void set_interior(bool value);
  private:
  bool _internal_interior() const;
  void _internal_set_interior(bool value);
  public:

  // bool exterior = 13;
  void clear_exterior();
  bool exterior() const;
  void set_exterior(bool value);
  private:
  bool _internal_exterior() const;
  void _internal_set_exterior(bool value);
  public:

  // bool shell = 14;
  void clear_shell();
  bool shell() const;
  void set_shell(bool value);
  private:
  bool _internal_shell() const;
  void _internal_set_shell(bool value);
  public:

  // @@protoc_insertion_point(class_scope:Messages.GridControl)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t > size_;
  mutable std::atomic<int> _size_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< double > spacing_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< double > grading_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool > symmetries_;
  ::Messages::Extrema* bounds_;
  uint32_t basis_;
  uint32_t length_units_;
  uint64_t target_n_;
  bool interior_;
  bool exterior_;
  bool shell_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_spatial_2eproto;
};
// -------------------------------------------------------------------

class MeshControl final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Messages.MeshControl) */ {
 public:
  inline MeshControl() : MeshControl(nullptr) {}
  ~MeshControl() override;
  explicit PROTOBUF_CONSTEXPR MeshControl(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

  inline MeshControl& operator=(const MeshControl& from) {
    CopyFrom(from);
    return *this;
  }
  inline MeshControl& operator=(MeshControl&& 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 MeshControl& default_instance() {
    return *internal_default_instance();
  }
  static inline const MeshControl* internal_default_instance() {
    return reinterpret_cast<const MeshControl*>(
               &_MeshControl_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(MeshControl& a, MeshControl& b) {
    a.Swap(&b);
  }
  inline void Swap(MeshControl* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(MeshControl* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  MeshControl* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<MeshControl>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const MeshControl& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const MeshControl& 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;
  uint8_t* _InternalSerialize(
      uint8_t* 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(MeshControl* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Messages.MeshControl";
  }
  protected:
  explicit MeshControl(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  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 {
    kSymmetriesFieldNumber = 24,
    kBoundsFieldNumber = 10,
    kTargetNFieldNumber = 1,
    kSizeRatioFieldNumber = 3,
    kSizeDecayFieldNumber = 4,
    kSizeExponentFieldNumber = 5,
    kCurvRatioFieldNumber = 6,
    kMaxIterationsFieldNumber = 2,
    kLengthUnitsFieldNumber = 11,
    kCurvDecayFieldNumber = 7,
    kCurvExponentFieldNumber = 8,
    kNodeRadiusFieldNumber = 9,
    kInteriorFieldNumber = 12,
    kExteriorFieldNumber = 13,
    kShellFieldNumber = 14,
    kEqualizeFieldNumber = 15,
    kSmoothFieldNumber = 16,
    kIncludeBackgroundFieldNumber = 18,
    kKeepExistingPointsFieldNumber = 19,
    kAutoFitDomainFieldNumber = 20,
    kBoundaryLayerThicknessFieldNumber = 23,
    kBackgroundNFieldNumber = 30,
  };
  // repeated bool symmetries = 24;
  int symmetries_size() const;
  private:
  int _internal_symmetries_size() const;
  public:
  void clear_symmetries();
  private:
  bool _internal_symmetries(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >&
      _internal_symmetries() const;
  void _internal_add_symmetries(bool value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >*
      _internal_mutable_symmetries();
  public:
  bool symmetries(int index) const;
  void set_symmetries(int index, bool value);
  void add_symmetries(bool value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >&
      symmetries() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >*
      mutable_symmetries();

  // .Messages.Extrema bounds = 10;
  bool has_bounds() const;
  private:
  bool _internal_has_bounds() const;
  public:
  void clear_bounds();
  const ::Messages::Extrema& bounds() const;
  PROTOBUF_NODISCARD ::Messages::Extrema* release_bounds();
  ::Messages::Extrema* mutable_bounds();
  void set_allocated_bounds(::Messages::Extrema* bounds);
  private:
  const ::Messages::Extrema& _internal_bounds() const;
  ::Messages::Extrema* _internal_mutable_bounds();
  public:
  void unsafe_arena_set_allocated_bounds(
      ::Messages::Extrema* bounds);
  ::Messages::Extrema* unsafe_arena_release_bounds();

  // uint64 target_n = 1;
  void clear_target_n();
  uint64_t target_n() const;
  void set_target_n(uint64_t value);
  private:
  uint64_t _internal_target_n() const;
  void _internal_set_target_n(uint64_t value);
  public:

  // double size_ratio = 3;
  void clear_size_ratio();
  double size_ratio() const;
  void set_size_ratio(double value);
  private:
  double _internal_size_ratio() const;
  void _internal_set_size_ratio(double value);
  public:

  // double size_decay = 4;
  void clear_size_decay();
  double size_decay() const;
  void set_size_decay(double value);
  private:
  double _internal_size_decay() const;
  void _internal_set_size_decay(double value);
  public:

  // double size_exponent = 5;
  void clear_size_exponent();
  double size_exponent() const;
  void set_size_exponent(double value);
  private:
  double _internal_size_exponent() const;
  void _internal_set_size_exponent(double value);
  public:

  // double curv_ratio = 6;
  void clear_curv_ratio();
  double curv_ratio() const;
  void set_curv_ratio(double value);
  private:
  double _internal_curv_ratio() const;
  void _internal_set_curv_ratio(double value);
  public:

  // uint32 max_iterations = 2;
  void clear_max_iterations();
  uint32_t max_iterations() const;
  void set_max_iterations(uint32_t value);
  private:
  uint32_t _internal_max_iterations() const;
  void _internal_set_max_iterations(uint32_t value);
  public:

  // uint32 length_units = 11;
  void clear_length_units();
  uint32_t length_units() const;
  void set_length_units(uint32_t value);
  private:
  uint32_t _internal_length_units() const;
  void _internal_set_length_units(uint32_t value);
  public:

  // double curv_decay = 7;
  void clear_curv_decay();
  double curv_decay() const;
  void set_curv_decay(double value);
  private:
  double _internal_curv_decay() const;
  void _internal_set_curv_decay(double value);
  public:

  // double curv_exponent = 8;
  void clear_curv_exponent();
  double curv_exponent() const;
  void set_curv_exponent(double value);
  private:
  double _internal_curv_exponent() const;
  void _internal_set_curv_exponent(double value);
  public:

  // double node_radius = 9;
  void clear_node_radius();
  double node_radius() const;
  void set_node_radius(double value);
  private:
  double _internal_node_radius() const;
  void _internal_set_node_radius(double value);
  public:

  // bool interior = 12;
  void clear_interior();
  bool interior() const;
  void set_interior(bool value);
  private:
  bool _internal_interior() const;
  void _internal_set_interior(bool value);
  public:

  // bool exterior = 13;
  void clear_exterior();
  bool exterior() const;
  void set_exterior(bool value);
  private:
  bool _internal_exterior() const;
  void _internal_set_exterior(bool value);
  public:

  // bool shell = 14;
  void clear_shell();
  bool shell() const;
  void set_shell(bool value);
  private:
  bool _internal_shell() const;
  void _internal_set_shell(bool value);
  public:

  // bool equalize = 15;
  void clear_equalize();
  bool equalize() const;
  void set_equalize(bool value);
  private:
  bool _internal_equalize() const;
  void _internal_set_equalize(bool value);
  public:

  // bool smooth = 16;
  void clear_smooth();
  bool smooth() const;
  void set_smooth(bool value);
  private:
  bool _internal_smooth() const;
  void _internal_set_smooth(bool value);
  public:

  // bool include_background = 18;
  void clear_include_background();
  bool include_background() const;
  void set_include_background(bool value);
  private:
  bool _internal_include_background() const;
  void _internal_set_include_background(bool value);
  public:

  // bool keep_existing_points = 19;
  void clear_keep_existing_points();
  bool keep_existing_points() const;
  void set_keep_existing_points(bool value);
  private:
  bool _internal_keep_existing_points() const;
  void _internal_set_keep_existing_points(bool value);
  public:

  // bool auto_fit_domain = 20;
  void clear_auto_fit_domain();
  bool auto_fit_domain() const;
  void set_auto_fit_domain(bool value);
  private:
  bool _internal_auto_fit_domain() const;
  void _internal_set_auto_fit_domain(bool value);
  public:

  // double boundary_layer_thickness = 23;
  void clear_boundary_layer_thickness();
  double boundary_layer_thickness() const;
  void set_boundary_layer_thickness(double value);
  private:
  double _internal_boundary_layer_thickness() const;
  void _internal_set_boundary_layer_thickness(double value);
  public:

  // uint64 background_n = 30;
  void clear_background_n();
  uint64_t background_n() const;
  void set_background_n(uint64_t value);
  private:
  uint64_t _internal_background_n() const;
  void _internal_set_background_n(uint64_t value);
  public:

  // @@protoc_insertion_point(class_scope:Messages.MeshControl)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool > symmetries_;
  ::Messages::Extrema* bounds_;
  uint64_t target_n_;
  double size_ratio_;
  double size_decay_;
  double size_exponent_;
  double curv_ratio_;
  uint32_t max_iterations_;
  uint32_t length_units_;
  double curv_decay_;
  double curv_exponent_;
  double node_radius_;
  bool interior_;
  bool exterior_;
  bool shell_;
  bool equalize_;
  bool smooth_;
  bool include_background_;
  bool keep_existing_points_;
  bool auto_fit_domain_;
  double boundary_layer_thickness_;
  uint64_t background_n_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_spatial_2eproto;
};
// -------------------------------------------------------------------

class TreeControl final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Messages.TreeControl) */ {
 public:
  inline TreeControl() : TreeControl(nullptr) {}
  ~TreeControl() override;
  explicit PROTOBUF_CONSTEXPR TreeControl(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

  inline TreeControl& operator=(const TreeControl& from) {
    CopyFrom(from);
    return *this;
  }
  inline TreeControl& operator=(TreeControl&& 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 TreeControl& default_instance() {
    return *internal_default_instance();
  }
  static inline const TreeControl* internal_default_instance() {
    return reinterpret_cast<const TreeControl*>(
               &_TreeControl_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(TreeControl& a, TreeControl& b) {
    a.Swap(&b);
  }
  inline void Swap(TreeControl* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TreeControl* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  TreeControl* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TreeControl>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TreeControl& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TreeControl& 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;
  uint8_t* _InternalSerialize(
      uint8_t* 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(TreeControl* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Messages.TreeControl";
  }
  protected:
  explicit TreeControl(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  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 {
    kBoundsFieldNumber = 10,
    kMinDepthFieldNumber = 1,
    kMaxDepthFieldNumber = 2,
    kMaxSizeFieldNumber = 3,
    kRefDimensionalityFieldNumber = 7,
    kLengthUnitsFieldNumber = 8,
  };
  // .Messages.Extrema bounds = 10;
  bool has_bounds() const;
  private:
  bool _internal_has_bounds() const;
  public:
  void clear_bounds();
  const ::Messages::Extrema& bounds() const;
  PROTOBUF_NODISCARD ::Messages::Extrema* release_bounds();
  ::Messages::Extrema* mutable_bounds();
  void set_allocated_bounds(::Messages::Extrema* bounds);
  private:
  const ::Messages::Extrema& _internal_bounds() const;
  ::Messages::Extrema* _internal_mutable_bounds();
  public:
  void unsafe_arena_set_allocated_bounds(
      ::Messages::Extrema* bounds);
  ::Messages::Extrema* unsafe_arena_release_bounds();

  // uint32 min_depth = 1;
  void clear_min_depth();
  uint32_t min_depth() const;
  void set_min_depth(uint32_t value);
  private:
  uint32_t _internal_min_depth() const;
  void _internal_set_min_depth(uint32_t value);
  public:

  // uint32 max_depth = 2;
  void clear_max_depth();
  uint32_t max_depth() const;
  void set_max_depth(uint32_t value);
  private:
  uint32_t _internal_max_depth() const;
  void _internal_set_max_depth(uint32_t value);
  public:

  // uint64 max_size = 3;
  void clear_max_size();
  uint64_t max_size() const;
  void set_max_size(uint64_t value);
  private:
  uint64_t _internal_max_size() const;
  void _internal_set_max_size(uint64_t value);
  public:

  // uint32 ref_dimensionality = 7;
  void clear_ref_dimensionality();
  uint32_t ref_dimensionality() const;
  void set_ref_dimensionality(uint32_t value);
  private:
  uint32_t _internal_ref_dimensionality() const;
  void _internal_set_ref_dimensionality(uint32_t value);
  public:

  // uint32 length_units = 8;
  void clear_length_units();
  uint32_t length_units() const;
  void set_length_units(uint32_t value);
  private:
  uint32_t _internal_length_units() const;
  void _internal_set_length_units(uint32_t value);
  public:

  // @@protoc_insertion_point(class_scope:Messages.TreeControl)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::Messages::Extrema* bounds_;
  uint32_t min_depth_;
  uint32_t max_depth_;
  uint64_t max_size_;
  uint32_t ref_dimensionality_;
  uint32_t length_units_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_spatial_2eproto;
};
// -------------------------------------------------------------------

class Topology final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:Messages.Topology) */ {
 public:
  inline Topology() : Topology(nullptr) {}
  ~Topology() override;
  explicit PROTOBUF_CONSTEXPR Topology(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

  inline Topology& operator=(const Topology& from) {
    CopyFrom(from);
    return *this;
  }
  inline Topology& operator=(Topology&& 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 Topology& default_instance() {
    return *internal_default_instance();
  }
  static inline const Topology* internal_default_instance() {
    return reinterpret_cast<const Topology*>(
               &_Topology_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(Topology& a, Topology& b) {
    a.Swap(&b);
  }
  inline void Swap(Topology* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Topology* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  Topology* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<Topology>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const Topology& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const Topology& 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;
  uint8_t* _InternalSerialize(
      uint8_t* 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(Topology* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "Messages.Topology";
  }
  protected:
  explicit Topology(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  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 {
    kSparseDataFieldNumber = 16,
    kNameFieldNumber = 1,
    kFilenameFieldNumber = 5,
    kInfoFieldNumber = 7,
    kRevisionFieldNumber = 6,
    kNodesFieldNumber = 10,
    kEdgesFieldNumber = 11,
    kFacesFieldNumber = 12,
    kCellsFieldNumber = 13,
    kDataFieldNumber = 15,
    kGridControlFieldNumber = 20,
    kMeshControlFieldNumber = 21,
    kTreeControlFieldNumber = 22,
    kTypeFieldNumber = 2,
    kNdimFieldNumber = 3,
    kBasisFieldNumber = 4,
  };
  // repeated .Messages.SparseMatrix sparse_data = 16;
  int sparse_data_size() const;
  private:
  int _internal_sparse_data_size() const;
  public:
  void clear_sparse_data();
  ::Messages::SparseMatrix* mutable_sparse_data(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::Messages::SparseMatrix >*
      mutable_sparse_data();
  private:
  const ::Messages::SparseMatrix& _internal_sparse_data(int index) const;
  ::Messages::SparseMatrix* _internal_add_sparse_data();
  public:
  const ::Messages::SparseMatrix& sparse_data(int index) const;
  ::Messages::SparseMatrix* add_sparse_data();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::Messages::SparseMatrix >&
      sparse_data() const;

  // string name = 1;
  void clear_name();
  const std::string& name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* name);
  private:
  const std::string& _internal_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
  std::string* _internal_mutable_name();
  public:

  // string filename = 5;
  void clear_filename();
  const std::string& filename() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_filename(ArgT0&& arg0, ArgT... args);
  std::string* mutable_filename();
  PROTOBUF_NODISCARD std::string* release_filename();
  void set_allocated_filename(std::string* filename);
  private:
  const std::string& _internal_filename() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_filename(const std::string& value);
  std::string* _internal_mutable_filename();
  public:

  // string info = 7;
  void clear_info();
  const std::string& info() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_info(ArgT0&& arg0, ArgT... args);
  std::string* mutable_info();
  PROTOBUF_NODISCARD std::string* release_info();
  void set_allocated_info(std::string* info);
  private:
  const std::string& _internal_info() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_info(const std::string& value);
  std::string* _internal_mutable_info();
  public:

  // .Messages.Revision revision = 6;
  bool has_revision() const;
  private:
  bool _internal_has_revision() const;
  public:
  void clear_revision();
  const ::Messages::Revision& revision() const;
  PROTOBUF_NODISCARD ::Messages::Revision* release_revision();
  ::Messages::Revision* mutable_revision();
  void set_allocated_revision(::Messages::Revision* revision);
  private:
  const ::Messages::Revision& _internal_revision() const;
  ::Messages::Revision* _internal_mutable_revision();
  public:
  void unsafe_arena_set_allocated_revision(
      ::Messages::Revision* revision);
  ::Messages::Revision* unsafe_arena_release_revision();

  // .Messages.Elements nodes = 10;
  bool has_nodes() const;
  private:
  bool _internal_has_nodes() const;
  public:
  void clear_nodes();
  const ::Messages::Elements& nodes() const;
  PROTOBUF_NODISCARD ::Messages::Elements* release_nodes();
  ::Messages::Elements* mutable_nodes();
  void set_allocated_nodes(::Messages::Elements* nodes);
  private:
  const ::Messages::Elements& _internal_nodes() const;
  ::Messages::Elements* _internal_mutable_nodes();
  public:
  void unsafe_arena_set_allocated_nodes(
      ::Messages::Elements* nodes);
  ::Messages::Elements* unsafe_arena_release_nodes();

  // .Messages.Elements edges = 11;
  bool has_edges() const;
  private:
  bool _internal_has_edges() const;
  public:
  void clear_edges();
  const ::Messages::Elements& edges() const;
  PROTOBUF_NODISCARD ::Messages::Elements* release_edges();
  ::Messages::Elements* mutable_edges();
  void set_allocated_edges(::Messages::Elements* edges);
  private:
  const ::Messages::Elements& _internal_edges() const;
  ::Messages::Elements* _internal_mutable_edges();
  public:
  void unsafe_arena_set_allocated_edges(
      ::Messages::Elements* edges);
  ::Messages::Elements* unsafe_arena_release_edges();

  // .Messages.Elements faces = 12;
  bool has_faces() const;
  private:
  bool _internal_has_faces() const;
  public:
  void clear_faces();
  const ::Messages::Elements& faces() const;
  PROTOBUF_NODISCARD ::Messages::Elements* release_faces();
  ::Messages::Elements* mutable_faces();
  void set_allocated_faces(::Messages::Elements* faces);
  private:
  const ::Messages::Elements& _internal_faces() const;
  ::Messages::Elements* _internal_mutable_faces();
  public:
  void unsafe_arena_set_allocated_faces(
      ::Messages::Elements* faces);
  ::Messages::Elements* unsafe_arena_release_faces();

  // .Messages.Elements cells = 13;
  bool has_cells() const;
  private:
  bool _internal_has_cells() const;
  public:
  void clear_cells();
  const ::Messages::Elements& cells() const;
  PROTOBUF_NODISCARD ::Messages::Elements* release_cells();
  ::Messages::Elements* mutable_cells();
  void set_allocated_cells(::Messages::Elements* cells);
  private:
  const ::Messages::Elements& _internal_cells() const;
  ::Messages::Elements* _internal_mutable_cells();
  public:
  void unsafe_arena_set_allocated_cells(
      ::Messages::Elements* cells);
  ::Messages::Elements* unsafe_arena_release_cells();

  // .Messages.Record64 data = 15;
  bool has_data() const;
  private:
  bool _internal_has_data() const;
  public:
  void clear_data();
  const ::Messages::Record64& data() const;
  PROTOBUF_NODISCARD ::Messages::Record64* release_data();
  ::Messages::Record64* mutable_data();
  void set_allocated_data(::Messages::Record64* data);
  private:
  const ::Messages::Record64& _internal_data() const;
  ::Messages::Record64* _internal_mutable_data();
  public:
  void unsafe_arena_set_allocated_data(
      ::Messages::Record64* data);
  ::Messages::Record64* unsafe_arena_release_data();

  // .Messages.GridControl grid_control = 20;
  bool has_grid_control() const;
  private:
  bool _internal_has_grid_control() const;
  public:
  void clear_grid_control();
  const ::Messages::GridControl& grid_control() const;
  PROTOBUF_NODISCARD ::Messages::GridControl* release_grid_control();
  ::Messages::GridControl* mutable_grid_control();
  void set_allocated_grid_control(::Messages::GridControl* grid_control);
  private:
  const ::Messages::GridControl& _internal_grid_control() const;
  ::Messages::GridControl* _internal_mutable_grid_control();
  public:
  void unsafe_arena_set_allocated_grid_control(
      ::Messages::GridControl* grid_control);
  ::Messages::GridControl* unsafe_arena_release_grid_control();

  // .Messages.MeshControl mesh_control = 21;
  bool has_mesh_control() const;
  private:
  bool _internal_has_mesh_control() const;
  public:
  void clear_mesh_control();
  const ::Messages::MeshControl& mesh_control() const;
  PROTOBUF_NODISCARD ::Messages::MeshControl* release_mesh_control();
  ::Messages::MeshControl* mutable_mesh_control();
  void set_allocated_mesh_control(::Messages::MeshControl* mesh_control);
  private:
  const ::Messages::MeshControl& _internal_mesh_control() const;
  ::Messages::MeshControl* _internal_mutable_mesh_control();
  public:
  void unsafe_arena_set_allocated_mesh_control(
      ::Messages::MeshControl* mesh_control);
  ::Messages::MeshControl* unsafe_arena_release_mesh_control();

  // .Messages.TreeControl tree_control = 22;
  bool has_tree_control() const;
  private:
  bool _internal_has_tree_control() const;
  public:
  void clear_tree_control();
  const ::Messages::TreeControl& tree_control() const;
  PROTOBUF_NODISCARD ::Messages::TreeControl* release_tree_control();
  ::Messages::TreeControl* mutable_tree_control();
  void set_allocated_tree_control(::Messages::TreeControl* tree_control);
  private:
  const ::Messages::TreeControl& _internal_tree_control() const;
  ::Messages::TreeControl* _internal_mutable_tree_control();
  public:
  void unsafe_arena_set_allocated_tree_control(
      ::Messages::TreeControl* tree_control);
  ::Messages::TreeControl* unsafe_arena_release_tree_control();

  // uint32 type = 2;
  void clear_type();
  uint32_t type() const;
  void set_type(uint32_t value);
  private:
  uint32_t _internal_type() const;
  void _internal_set_type(uint32_t value);
  public:

  // uint32 ndim = 3;
  void clear_ndim();
  uint32_t ndim() const;
  void set_ndim(uint32_t value);
  private:
  uint32_t _internal_ndim() const;
  void _internal_set_ndim(uint32_t value);
  public:

  // uint32 basis = 4;
  void clear_basis();
  uint32_t basis() const;
  void set_basis(uint32_t value);
  private:
  uint32_t _internal_basis() const;
  void _internal_set_basis(uint32_t value);
  public:

  // @@protoc_insertion_point(class_scope:Messages.Topology)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::Messages::SparseMatrix > sparse_data_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr filename_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr info_;
  ::Messages::Revision* revision_;
  ::Messages::Elements* nodes_;
  ::Messages::Elements* edges_;
  ::Messages::Elements* faces_;
  ::Messages::Elements* cells_;
  ::Messages::Record64* data_;
  ::Messages::GridControl* grid_control_;
  ::Messages::MeshControl* mesh_control_;
  ::Messages::TreeControl* tree_control_;
  uint32_t type_;
  uint32_t ndim_;
  uint32_t basis_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_spatial_2eproto;
};
// ===================================================================


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

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

// string name = 1;
inline void Zone::clear_name() {
  name_.ClearToEmpty();
}
inline const std::string& Zone::name() const {
  // @@protoc_insertion_point(field_get:Messages.Zone.name)
  return _internal_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void Zone::set_name(ArgT0&& arg0, ArgT... args) {
 
 name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:Messages.Zone.name)
}
inline std::string* Zone::mutable_name() {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:Messages.Zone.name)
  return _s;
}
inline const std::string& Zone::_internal_name() const {
  return name_.Get();
}
inline void Zone::_internal_set_name(const std::string& value) {
  
  name_.Set(value, GetArenaForAllocation());
}
inline std::string* Zone::_internal_mutable_name() {
  
  return name_.Mutable(GetArenaForAllocation());
}
inline std::string* Zone::release_name() {
  // @@protoc_insertion_point(field_release:Messages.Zone.name)
  return name_.Release();
}
inline void Zone::set_allocated_name(std::string* name) {
  if (name != nullptr) {
    
  } else {
    
  }
  name_.SetAllocated(name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (name_.IsDefault()) {
    name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:Messages.Zone.name)
}

// int32 id = 2;
inline void Zone::clear_id() {
  id_ = 0;
}
inline int32_t Zone::_internal_id() const {
  return id_;
}
inline int32_t Zone::id() const {
  // @@protoc_insertion_point(field_get:Messages.Zone.id)
  return _internal_id();
}
inline void Zone::_internal_set_id(int32_t value) {
  
  id_ = value;
}
inline void Zone::set_id(int32_t value) {
  _internal_set_id(value);
  // @@protoc_insertion_point(field_set:Messages.Zone.id)
}

// uint32 dimensionality = 3;
inline void Zone::clear_dimensionality() {
  dimensionality_ = 0u;
}
inline uint32_t Zone::_internal_dimensionality() const {
  return dimensionality_;
}
inline uint32_t Zone::dimensionality() const {
  // @@protoc_insertion_point(field_get:Messages.Zone.dimensionality)
  return _internal_dimensionality();
}
inline void Zone::_internal_set_dimensionality(uint32_t value) {
  
  dimensionality_ = value;
}
inline void Zone::set_dimensionality(uint32_t value) {
  _internal_set_dimensionality(value);
  // @@protoc_insertion_point(field_set:Messages.Zone.dimensionality)
}

// .Messages.Revision revision = 4;
inline bool Zone::_internal_has_revision() const {
  return this != internal_default_instance() && revision_ != nullptr;
}
inline bool Zone::has_revision() const {
  return _internal_has_revision();
}
inline const ::Messages::Revision& Zone::_internal_revision() const {
  const ::Messages::Revision* p = revision_;
  return p != nullptr ? *p : reinterpret_cast<const ::Messages::Revision&>(
      ::Messages::_Revision_default_instance_);
}
inline const ::Messages::Revision& Zone::revision() const {
  // @@protoc_insertion_point(field_get:Messages.Zone.revision)
  return _internal_revision();
}
inline void Zone::unsafe_arena_set_allocated_revision(
    ::Messages::Revision* revision) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(revision_);
  }
  revision_ = revision;
  if (revision) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Messages.Zone.revision)
}
inline ::Messages::Revision* Zone::release_revision() {
  
  ::Messages::Revision* temp = revision_;
  revision_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::Messages::Revision* Zone::unsafe_arena_release_revision() {
  // @@protoc_insertion_point(field_release:Messages.Zone.revision)
  
  ::Messages::Revision* temp = revision_;
  revision_ = nullptr;
  return temp;
}
inline ::Messages::Revision* Zone::_internal_mutable_revision() {
  
  if (revision_ == nullptr) {
    auto* p = CreateMaybeMessage<::Messages::Revision>(GetArenaForAllocation());
    revision_ = p;
  }
  return revision_;
}
inline ::Messages::Revision* Zone::mutable_revision() {
  ::Messages::Revision* _msg = _internal_mutable_revision();
  // @@protoc_insertion_point(field_mutable:Messages.Zone.revision)
  return _msg;
}
inline void Zone::set_allocated_revision(::Messages::Revision* revision) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(revision_);
  }
  if (revision) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(revision));
    if (message_arena != submessage_arena) {
      revision = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, revision, submessage_arena);
    }
    
  } else {
    
  }
  revision_ = revision;
  // @@protoc_insertion_point(field_set_allocated:Messages.Zone.revision)
}

// repeated uint32 elements = 5;
inline int Zone::_internal_elements_size() const {
  return elements_.size();
}
inline int Zone::elements_size() const {
  return _internal_elements_size();
}
inline void Zone::clear_elements() {
  elements_.Clear();
}
inline uint32_t Zone::_internal_elements(int index) const {
  return elements_.Get(index);
}
inline uint32_t Zone::elements(int index) const {
  // @@protoc_insertion_point(field_get:Messages.Zone.elements)
  return _internal_elements(index);
}
inline void Zone::set_elements(int index, uint32_t value) {
  elements_.Set(index, value);
  // @@protoc_insertion_point(field_set:Messages.Zone.elements)
}
inline void Zone::_internal_add_elements(uint32_t value) {
  elements_.Add(value);
}
inline void Zone::add_elements(uint32_t value) {
  _internal_add_elements(value);
  // @@protoc_insertion_point(field_add:Messages.Zone.elements)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
Zone::_internal_elements() const {
  return elements_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
Zone::elements() const {
  // @@protoc_insertion_point(field_list:Messages.Zone.elements)
  return _internal_elements();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
Zone::_internal_mutable_elements() {
  return &elements_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
Zone::mutable_elements() {
  // @@protoc_insertion_point(field_mutable_list:Messages.Zone.elements)
  return _internal_mutable_elements();
}

// uint32 element_count = 6;
inline void Zone::clear_element_count() {
  element_count_ = 0u;
}
inline uint32_t Zone::_internal_element_count() const {
  return element_count_;
}
inline uint32_t Zone::element_count() const {
  // @@protoc_insertion_point(field_get:Messages.Zone.element_count)
  return _internal_element_count();
}
inline void Zone::_internal_set_element_count(uint32_t value) {
  
  element_count_ = value;
}
inline void Zone::set_element_count(uint32_t value) {
  _internal_set_element_count(value);
  // @@protoc_insertion_point(field_set:Messages.Zone.element_count)
}

// string comments = 7;
inline void Zone::clear_comments() {
  comments_.ClearToEmpty();
}
inline const std::string& Zone::comments() const {
  // @@protoc_insertion_point(field_get:Messages.Zone.comments)
  return _internal_comments();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void Zone::set_comments(ArgT0&& arg0, ArgT... args) {
 
 comments_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:Messages.Zone.comments)
}
inline std::string* Zone::mutable_comments() {
  std::string* _s = _internal_mutable_comments();
  // @@protoc_insertion_point(field_mutable:Messages.Zone.comments)
  return _s;
}
inline const std::string& Zone::_internal_comments() const {
  return comments_.Get();
}
inline void Zone::_internal_set_comments(const std::string& value) {
  
  comments_.Set(value, GetArenaForAllocation());
}
inline std::string* Zone::_internal_mutable_comments() {
  
  return comments_.Mutable(GetArenaForAllocation());
}
inline std::string* Zone::release_comments() {
  // @@protoc_insertion_point(field_release:Messages.Zone.comments)
  return comments_.Release();
}
inline void Zone::set_allocated_comments(std::string* comments) {
  if (comments != nullptr) {
    
  } else {
    
  }
  comments_.SetAllocated(comments, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (comments_.IsDefault()) {
    comments_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:Messages.Zone.comments)
}

// string info = 8;
inline void Zone::clear_info() {
  info_.ClearToEmpty();
}
inline const std::string& Zone::info() const {
  // @@protoc_insertion_point(field_get:Messages.Zone.info)
  return _internal_info();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void Zone::set_info(ArgT0&& arg0, ArgT... args) {
 
 info_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:Messages.Zone.info)
}
inline std::string* Zone::mutable_info() {
  std::string* _s = _internal_mutable_info();
  // @@protoc_insertion_point(field_mutable:Messages.Zone.info)
  return _s;
}
inline const std::string& Zone::_internal_info() const {
  return info_.Get();
}
inline void Zone::_internal_set_info(const std::string& value) {
  
  info_.Set(value, GetArenaForAllocation());
}
inline std::string* Zone::_internal_mutable_info() {
  
  return info_.Mutable(GetArenaForAllocation());
}
inline std::string* Zone::release_info() {
  // @@protoc_insertion_point(field_release:Messages.Zone.info)
  return info_.Release();
}
inline void Zone::set_allocated_info(std::string* info) {
  if (info != nullptr) {
    
  } else {
    
  }
  info_.SetAllocated(info, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (info_.IsDefault()) {
    info_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:Messages.Zone.info)
}

// string resource_name = 9;
inline void Zone::clear_resource_name() {
  resource_name_.ClearToEmpty();
}
inline const std::string& Zone::resource_name() const {
  // @@protoc_insertion_point(field_get:Messages.Zone.resource_name)
  return _internal_resource_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void Zone::set_resource_name(ArgT0&& arg0, ArgT... args) {
 
 resource_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:Messages.Zone.resource_name)
}
inline std::string* Zone::mutable_resource_name() {
  std::string* _s = _internal_mutable_resource_name();
  // @@protoc_insertion_point(field_mutable:Messages.Zone.resource_name)
  return _s;
}
inline const std::string& Zone::_internal_resource_name() const {
  return resource_name_.Get();
}
inline void Zone::_internal_set_resource_name(const std::string& value) {
  
  resource_name_.Set(value, GetArenaForAllocation());
}
inline std::string* Zone::_internal_mutable_resource_name() {
  
  return resource_name_.Mutable(GetArenaForAllocation());
}
inline std::string* Zone::release_resource_name() {
  // @@protoc_insertion_point(field_release:Messages.Zone.resource_name)
  return resource_name_.Release();
}
inline void Zone::set_allocated_resource_name(std::string* resource_name) {
  if (resource_name != nullptr) {
    
  } else {
    
  }
  resource_name_.SetAllocated(resource_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (resource_name_.IsDefault()) {
    resource_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:Messages.Zone.resource_name)
}

// .Messages.Extrema bounds = 10;
inline bool Zone::_internal_has_bounds() const {
  return this != internal_default_instance() && bounds_ != nullptr;
}
inline bool Zone::has_bounds() const {
  return _internal_has_bounds();
}
inline const ::Messages::Extrema& Zone::_internal_bounds() const {
  const ::Messages::Extrema* p = bounds_;
  return p != nullptr ? *p : reinterpret_cast<const ::Messages::Extrema&>(
      ::Messages::_Extrema_default_instance_);
}
inline const ::Messages::Extrema& Zone::bounds() const {
  // @@protoc_insertion_point(field_get:Messages.Zone.bounds)
  return _internal_bounds();
}
inline void Zone::unsafe_arena_set_allocated_bounds(
    ::Messages::Extrema* bounds) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(bounds_);
  }
  bounds_ = bounds;
  if (bounds) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Messages.Zone.bounds)
}
inline ::Messages::Extrema* Zone::release_bounds() {
  
  ::Messages::Extrema* temp = bounds_;
  bounds_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::Messages::Extrema* Zone::unsafe_arena_release_bounds() {
  // @@protoc_insertion_point(field_release:Messages.Zone.bounds)
  
  ::Messages::Extrema* temp = bounds_;
  bounds_ = nullptr;
  return temp;
}
inline ::Messages::Extrema* Zone::_internal_mutable_bounds() {
  
  if (bounds_ == nullptr) {
    auto* p = CreateMaybeMessage<::Messages::Extrema>(GetArenaForAllocation());
    bounds_ = p;
  }
  return bounds_;
}
inline ::Messages::Extrema* Zone::mutable_bounds() {
  ::Messages::Extrema* _msg = _internal_mutable_bounds();
  // @@protoc_insertion_point(field_mutable:Messages.Zone.bounds)
  return _msg;
}
inline void Zone::set_allocated_bounds(::Messages::Extrema* bounds) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(bounds_);
  }
  if (bounds) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(bounds));
    if (message_arena != submessage_arena) {
      bounds = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, bounds, submessage_arena);
    }
    
  } else {
    
  }
  bounds_ = bounds;
  // @@protoc_insertion_point(field_set_allocated:Messages.Zone.bounds)
}

// repeated float terminal_coord = 11;
inline int Zone::_internal_terminal_coord_size() const {
  return terminal_coord_.size();
}
inline int Zone::terminal_coord_size() const {
  return _internal_terminal_coord_size();
}
inline void Zone::clear_terminal_coord() {
  terminal_coord_.Clear();
}
inline float Zone::_internal_terminal_coord(int index) const {
  return terminal_coord_.Get(index);
}
inline float Zone::terminal_coord(int index) const {
  // @@protoc_insertion_point(field_get:Messages.Zone.terminal_coord)
  return _internal_terminal_coord(index);
}
inline void Zone::set_terminal_coord(int index, float value) {
  terminal_coord_.Set(index, value);
  // @@protoc_insertion_point(field_set:Messages.Zone.terminal_coord)
}
inline void Zone::_internal_add_terminal_coord(float value) {
  terminal_coord_.Add(value);
}
inline void Zone::add_terminal_coord(float value) {
  _internal_add_terminal_coord(value);
  // @@protoc_insertion_point(field_add:Messages.Zone.terminal_coord)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
Zone::_internal_terminal_coord() const {
  return terminal_coord_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
Zone::terminal_coord() const {
  // @@protoc_insertion_point(field_list:Messages.Zone.terminal_coord)
  return _internal_terminal_coord();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
Zone::_internal_mutable_terminal_coord() {
  return &terminal_coord_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
Zone::mutable_terminal_coord() {
  // @@protoc_insertion_point(field_mutable_list:Messages.Zone.terminal_coord)
  return _internal_mutable_terminal_coord();
}

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

// GridControl

// uint32 basis = 1;
inline void GridControl::clear_basis() {
  basis_ = 0u;
}
inline uint32_t GridControl::_internal_basis() const {
  return basis_;
}
inline uint32_t GridControl::basis() const {
  // @@protoc_insertion_point(field_get:Messages.GridControl.basis)
  return _internal_basis();
}
inline void GridControl::_internal_set_basis(uint32_t value) {
  
  basis_ = value;
}
inline void GridControl::set_basis(uint32_t value) {
  _internal_set_basis(value);
  // @@protoc_insertion_point(field_set:Messages.GridControl.basis)
}

// repeated uint32 size = 2;
inline int GridControl::_internal_size_size() const {
  return size_.size();
}
inline int GridControl::size_size() const {
  return _internal_size_size();
}
inline void GridControl::clear_size() {
  size_.Clear();
}
inline uint32_t GridControl::_internal_size(int index) const {
  return size_.Get(index);
}
inline uint32_t GridControl::size(int index) const {
  // @@protoc_insertion_point(field_get:Messages.GridControl.size)
  return _internal_size(index);
}
inline void GridControl::set_size(int index, uint32_t value) {
  size_.Set(index, value);
  // @@protoc_insertion_point(field_set:Messages.GridControl.size)
}
inline void GridControl::_internal_add_size(uint32_t value) {
  size_.Add(value);
}
inline void GridControl::add_size(uint32_t value) {
  _internal_add_size(value);
  // @@protoc_insertion_point(field_add:Messages.GridControl.size)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
GridControl::_internal_size() const {
  return size_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
GridControl::size() const {
  // @@protoc_insertion_point(field_list:Messages.GridControl.size)
  return _internal_size();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
GridControl::_internal_mutable_size() {
  return &size_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
GridControl::mutable_size() {
  // @@protoc_insertion_point(field_mutable_list:Messages.GridControl.size)
  return _internal_mutable_size();
}

// repeated double spacing = 3;
inline int GridControl::_internal_spacing_size() const {
  return spacing_.size();
}
inline int GridControl::spacing_size() const {
  return _internal_spacing_size();
}
inline void GridControl::clear_spacing() {
  spacing_.Clear();
}
inline double GridControl::_internal_spacing(int index) const {
  return spacing_.Get(index);
}
inline double GridControl::spacing(int index) const {
  // @@protoc_insertion_point(field_get:Messages.GridControl.spacing)
  return _internal_spacing(index);
}
inline void GridControl::set_spacing(int index, double value) {
  spacing_.Set(index, value);
  // @@protoc_insertion_point(field_set:Messages.GridControl.spacing)
}
inline void GridControl::_internal_add_spacing(double value) {
  spacing_.Add(value);
}
inline void GridControl::add_spacing(double value) {
  _internal_add_spacing(value);
  // @@protoc_insertion_point(field_add:Messages.GridControl.spacing)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
GridControl::_internal_spacing() const {
  return spacing_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
GridControl::spacing() const {
  // @@protoc_insertion_point(field_list:Messages.GridControl.spacing)
  return _internal_spacing();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
GridControl::_internal_mutable_spacing() {
  return &spacing_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
GridControl::mutable_spacing() {
  // @@protoc_insertion_point(field_mutable_list:Messages.GridControl.spacing)
  return _internal_mutable_spacing();
}

// repeated double grading = 4;
inline int GridControl::_internal_grading_size() const {
  return grading_.size();
}
inline int GridControl::grading_size() const {
  return _internal_grading_size();
}
inline void GridControl::clear_grading() {
  grading_.Clear();
}
inline double GridControl::_internal_grading(int index) const {
  return grading_.Get(index);
}
inline double GridControl::grading(int index) const {
  // @@protoc_insertion_point(field_get:Messages.GridControl.grading)
  return _internal_grading(index);
}
inline void GridControl::set_grading(int index, double value) {
  grading_.Set(index, value);
  // @@protoc_insertion_point(field_set:Messages.GridControl.grading)
}
inline void GridControl::_internal_add_grading(double value) {
  grading_.Add(value);
}
inline void GridControl::add_grading(double value) {
  _internal_add_grading(value);
  // @@protoc_insertion_point(field_add:Messages.GridControl.grading)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
GridControl::_internal_grading() const {
  return grading_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
GridControl::grading() const {
  // @@protoc_insertion_point(field_list:Messages.GridControl.grading)
  return _internal_grading();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
GridControl::_internal_mutable_grading() {
  return &grading_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
GridControl::mutable_grading() {
  // @@protoc_insertion_point(field_mutable_list:Messages.GridControl.grading)
  return _internal_mutable_grading();
}

// uint32 length_units = 8;
inline void GridControl::clear_length_units() {
  length_units_ = 0u;
}
inline uint32_t GridControl::_internal_length_units() const {
  return length_units_;
}
inline uint32_t GridControl::length_units() const {
  // @@protoc_insertion_point(field_get:Messages.GridControl.length_units)
  return _internal_length_units();
}
inline void GridControl::_internal_set_length_units(uint32_t value) {
  
  length_units_ = value;
}
inline void GridControl::set_length_units(uint32_t value) {
  _internal_set_length_units(value);
  // @@protoc_insertion_point(field_set:Messages.GridControl.length_units)
}

// uint64 target_n = 9;
inline void GridControl::clear_target_n() {
  target_n_ = uint64_t{0u};
}
inline uint64_t GridControl::_internal_target_n() const {
  return target_n_;
}
inline uint64_t GridControl::target_n() const {
  // @@protoc_insertion_point(field_get:Messages.GridControl.target_n)
  return _internal_target_n();
}
inline void GridControl::_internal_set_target_n(uint64_t value) {
  
  target_n_ = value;
}
inline void GridControl::set_target_n(uint64_t value) {
  _internal_set_target_n(value);
  // @@protoc_insertion_point(field_set:Messages.GridControl.target_n)
}

// .Messages.Extrema bounds = 10;
inline bool GridControl::_internal_has_bounds() const {
  return this != internal_default_instance() && bounds_ != nullptr;
}
inline bool GridControl::has_bounds() const {
  return _internal_has_bounds();
}
inline const ::Messages::Extrema& GridControl::_internal_bounds() const {
  const ::Messages::Extrema* p = bounds_;
  return p != nullptr ? *p : reinterpret_cast<const ::Messages::Extrema&>(
      ::Messages::_Extrema_default_instance_);
}
inline const ::Messages::Extrema& GridControl::bounds() const {
  // @@protoc_insertion_point(field_get:Messages.GridControl.bounds)
  return _internal_bounds();
}
inline void GridControl::unsafe_arena_set_allocated_bounds(
    ::Messages::Extrema* bounds) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(bounds_);
  }
  bounds_ = bounds;
  if (bounds) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Messages.GridControl.bounds)
}
inline ::Messages::Extrema* GridControl::release_bounds() {
  
  ::Messages::Extrema* temp = bounds_;
  bounds_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::Messages::Extrema* GridControl::unsafe_arena_release_bounds() {
  // @@protoc_insertion_point(field_release:Messages.GridControl.bounds)
  
  ::Messages::Extrema* temp = bounds_;
  bounds_ = nullptr;
  return temp;
}
inline ::Messages::Extrema* GridControl::_internal_mutable_bounds() {
  
  if (bounds_ == nullptr) {
    auto* p = CreateMaybeMessage<::Messages::Extrema>(GetArenaForAllocation());
    bounds_ = p;
  }
  return bounds_;
}
inline ::Messages::Extrema* GridControl::mutable_bounds() {
  ::Messages::Extrema* _msg = _internal_mutable_bounds();
  // @@protoc_insertion_point(field_mutable:Messages.GridControl.bounds)
  return _msg;
}
inline void GridControl::set_allocated_bounds(::Messages::Extrema* bounds) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(bounds_);
  }
  if (bounds) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(bounds));
    if (message_arena != submessage_arena) {
      bounds = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, bounds, submessage_arena);
    }
    
  } else {
    
  }
  bounds_ = bounds;
  // @@protoc_insertion_point(field_set_allocated:Messages.GridControl.bounds)
}

// repeated bool symmetries = 11;
inline int GridControl::_internal_symmetries_size() const {
  return symmetries_.size();
}
inline int GridControl::symmetries_size() const {
  return _internal_symmetries_size();
}
inline void GridControl::clear_symmetries() {
  symmetries_.Clear();
}
inline bool GridControl::_internal_symmetries(int index) const {
  return symmetries_.Get(index);
}
inline bool GridControl::symmetries(int index) const {
  // @@protoc_insertion_point(field_get:Messages.GridControl.symmetries)
  return _internal_symmetries(index);
}
inline void GridControl::set_symmetries(int index, bool value) {
  symmetries_.Set(index, value);
  // @@protoc_insertion_point(field_set:Messages.GridControl.symmetries)
}
inline void GridControl::_internal_add_symmetries(bool value) {
  symmetries_.Add(value);
}
inline void GridControl::add_symmetries(bool value) {
  _internal_add_symmetries(value);
  // @@protoc_insertion_point(field_add:Messages.GridControl.symmetries)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >&
GridControl::_internal_symmetries() const {
  return symmetries_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >&
GridControl::symmetries() const {
  // @@protoc_insertion_point(field_list:Messages.GridControl.symmetries)
  return _internal_symmetries();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >*
GridControl::_internal_mutable_symmetries() {
  return &symmetries_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >*
GridControl::mutable_symmetries() {
  // @@protoc_insertion_point(field_mutable_list:Messages.GridControl.symmetries)
  return _internal_mutable_symmetries();
}

// bool interior = 12;
inline void GridControl::clear_interior() {
  interior_ = false;
}
inline bool GridControl::_internal_interior() const {
  return interior_;
}
inline bool GridControl::interior() const {
  // @@protoc_insertion_point(field_get:Messages.GridControl.interior)
  return _internal_interior();
}
inline void GridControl::_internal_set_interior(bool value) {
  
  interior_ = value;
}
inline void GridControl::set_interior(bool value) {
  _internal_set_interior(value);
  // @@protoc_insertion_point(field_set:Messages.GridControl.interior)
}

// bool exterior = 13;
inline void GridControl::clear_exterior() {
  exterior_ = false;
}
inline bool GridControl::_internal_exterior() const {
  return exterior_;
}
inline bool GridControl::exterior() const {
  // @@protoc_insertion_point(field_get:Messages.GridControl.exterior)
  return _internal_exterior();
}
inline void GridControl::_internal_set_exterior(bool value) {
  
  exterior_ = value;
}
inline void GridControl::set_exterior(bool value) {
  _internal_set_exterior(value);
  // @@protoc_insertion_point(field_set:Messages.GridControl.exterior)
}

// bool shell = 14;
inline void GridControl::clear_shell() {
  shell_ = false;
}
inline bool GridControl::_internal_shell() const {
  return shell_;
}
inline bool GridControl::shell() const {
  // @@protoc_insertion_point(field_get:Messages.GridControl.shell)
  return _internal_shell();
}
inline void GridControl::_internal_set_shell(bool value) {
  
  shell_ = value;
}
inline void GridControl::set_shell(bool value) {
  _internal_set_shell(value);
  // @@protoc_insertion_point(field_set:Messages.GridControl.shell)
}

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

// MeshControl

// uint64 target_n = 1;
inline void MeshControl::clear_target_n() {
  target_n_ = uint64_t{0u};
}
inline uint64_t MeshControl::_internal_target_n() const {
  return target_n_;
}
inline uint64_t MeshControl::target_n() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.target_n)
  return _internal_target_n();
}
inline void MeshControl::_internal_set_target_n(uint64_t value) {
  
  target_n_ = value;
}
inline void MeshControl::set_target_n(uint64_t value) {
  _internal_set_target_n(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.target_n)
}

// uint32 max_iterations = 2;
inline void MeshControl::clear_max_iterations() {
  max_iterations_ = 0u;
}
inline uint32_t MeshControl::_internal_max_iterations() const {
  return max_iterations_;
}
inline uint32_t MeshControl::max_iterations() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.max_iterations)
  return _internal_max_iterations();
}
inline void MeshControl::_internal_set_max_iterations(uint32_t value) {
  
  max_iterations_ = value;
}
inline void MeshControl::set_max_iterations(uint32_t value) {
  _internal_set_max_iterations(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.max_iterations)
}

// double size_ratio = 3;
inline void MeshControl::clear_size_ratio() {
  size_ratio_ = 0;
}
inline double MeshControl::_internal_size_ratio() const {
  return size_ratio_;
}
inline double MeshControl::size_ratio() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.size_ratio)
  return _internal_size_ratio();
}
inline void MeshControl::_internal_set_size_ratio(double value) {
  
  size_ratio_ = value;
}
inline void MeshControl::set_size_ratio(double value) {
  _internal_set_size_ratio(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.size_ratio)
}

// double size_decay = 4;
inline void MeshControl::clear_size_decay() {
  size_decay_ = 0;
}
inline double MeshControl::_internal_size_decay() const {
  return size_decay_;
}
inline double MeshControl::size_decay() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.size_decay)
  return _internal_size_decay();
}
inline void MeshControl::_internal_set_size_decay(double value) {
  
  size_decay_ = value;
}
inline void MeshControl::set_size_decay(double value) {
  _internal_set_size_decay(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.size_decay)
}

// double size_exponent = 5;
inline void MeshControl::clear_size_exponent() {
  size_exponent_ = 0;
}
inline double MeshControl::_internal_size_exponent() const {
  return size_exponent_;
}
inline double MeshControl::size_exponent() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.size_exponent)
  return _internal_size_exponent();
}
inline void MeshControl::_internal_set_size_exponent(double value) {
  
  size_exponent_ = value;
}
inline void MeshControl::set_size_exponent(double value) {
  _internal_set_size_exponent(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.size_exponent)
}

// double curv_ratio = 6;
inline void MeshControl::clear_curv_ratio() {
  curv_ratio_ = 0;
}
inline double MeshControl::_internal_curv_ratio() const {
  return curv_ratio_;
}
inline double MeshControl::curv_ratio() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.curv_ratio)
  return _internal_curv_ratio();
}
inline void MeshControl::_internal_set_curv_ratio(double value) {
  
  curv_ratio_ = value;
}
inline void MeshControl::set_curv_ratio(double value) {
  _internal_set_curv_ratio(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.curv_ratio)
}

// double curv_decay = 7;
inline void MeshControl::clear_curv_decay() {
  curv_decay_ = 0;
}
inline double MeshControl::_internal_curv_decay() const {
  return curv_decay_;
}
inline double MeshControl::curv_decay() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.curv_decay)
  return _internal_curv_decay();
}
inline void MeshControl::_internal_set_curv_decay(double value) {
  
  curv_decay_ = value;
}
inline void MeshControl::set_curv_decay(double value) {
  _internal_set_curv_decay(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.curv_decay)
}

// double curv_exponent = 8;
inline void MeshControl::clear_curv_exponent() {
  curv_exponent_ = 0;
}
inline double MeshControl::_internal_curv_exponent() const {
  return curv_exponent_;
}
inline double MeshControl::curv_exponent() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.curv_exponent)
  return _internal_curv_exponent();
}
inline void MeshControl::_internal_set_curv_exponent(double value) {
  
  curv_exponent_ = value;
}
inline void MeshControl::set_curv_exponent(double value) {
  _internal_set_curv_exponent(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.curv_exponent)
}

// double node_radius = 9;
inline void MeshControl::clear_node_radius() {
  node_radius_ = 0;
}
inline double MeshControl::_internal_node_radius() const {
  return node_radius_;
}
inline double MeshControl::node_radius() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.node_radius)
  return _internal_node_radius();
}
inline void MeshControl::_internal_set_node_radius(double value) {
  
  node_radius_ = value;
}
inline void MeshControl::set_node_radius(double value) {
  _internal_set_node_radius(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.node_radius)
}

// .Messages.Extrema bounds = 10;
inline bool MeshControl::_internal_has_bounds() const {
  return this != internal_default_instance() && bounds_ != nullptr;
}
inline bool MeshControl::has_bounds() const {
  return _internal_has_bounds();
}
inline const ::Messages::Extrema& MeshControl::_internal_bounds() const {
  const ::Messages::Extrema* p = bounds_;
  return p != nullptr ? *p : reinterpret_cast<const ::Messages::Extrema&>(
      ::Messages::_Extrema_default_instance_);
}
inline const ::Messages::Extrema& MeshControl::bounds() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.bounds)
  return _internal_bounds();
}
inline void MeshControl::unsafe_arena_set_allocated_bounds(
    ::Messages::Extrema* bounds) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(bounds_);
  }
  bounds_ = bounds;
  if (bounds) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Messages.MeshControl.bounds)
}
inline ::Messages::Extrema* MeshControl::release_bounds() {
  
  ::Messages::Extrema* temp = bounds_;
  bounds_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::Messages::Extrema* MeshControl::unsafe_arena_release_bounds() {
  // @@protoc_insertion_point(field_release:Messages.MeshControl.bounds)
  
  ::Messages::Extrema* temp = bounds_;
  bounds_ = nullptr;
  return temp;
}
inline ::Messages::Extrema* MeshControl::_internal_mutable_bounds() {
  
  if (bounds_ == nullptr) {
    auto* p = CreateMaybeMessage<::Messages::Extrema>(GetArenaForAllocation());
    bounds_ = p;
  }
  return bounds_;
}
inline ::Messages::Extrema* MeshControl::mutable_bounds() {
  ::Messages::Extrema* _msg = _internal_mutable_bounds();
  // @@protoc_insertion_point(field_mutable:Messages.MeshControl.bounds)
  return _msg;
}
inline void MeshControl::set_allocated_bounds(::Messages::Extrema* bounds) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(bounds_);
  }
  if (bounds) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(bounds));
    if (message_arena != submessage_arena) {
      bounds = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, bounds, submessage_arena);
    }
    
  } else {
    
  }
  bounds_ = bounds;
  // @@protoc_insertion_point(field_set_allocated:Messages.MeshControl.bounds)
}

// uint32 length_units = 11;
inline void MeshControl::clear_length_units() {
  length_units_ = 0u;
}
inline uint32_t MeshControl::_internal_length_units() const {
  return length_units_;
}
inline uint32_t MeshControl::length_units() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.length_units)
  return _internal_length_units();
}
inline void MeshControl::_internal_set_length_units(uint32_t value) {
  
  length_units_ = value;
}
inline void MeshControl::set_length_units(uint32_t value) {
  _internal_set_length_units(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.length_units)
}

// bool interior = 12;
inline void MeshControl::clear_interior() {
  interior_ = false;
}
inline bool MeshControl::_internal_interior() const {
  return interior_;
}
inline bool MeshControl::interior() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.interior)
  return _internal_interior();
}
inline void MeshControl::_internal_set_interior(bool value) {
  
  interior_ = value;
}
inline void MeshControl::set_interior(bool value) {
  _internal_set_interior(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.interior)
}

// bool exterior = 13;
inline void MeshControl::clear_exterior() {
  exterior_ = false;
}
inline bool MeshControl::_internal_exterior() const {
  return exterior_;
}
inline bool MeshControl::exterior() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.exterior)
  return _internal_exterior();
}
inline void MeshControl::_internal_set_exterior(bool value) {
  
  exterior_ = value;
}
inline void MeshControl::set_exterior(bool value) {
  _internal_set_exterior(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.exterior)
}

// bool shell = 14;
inline void MeshControl::clear_shell() {
  shell_ = false;
}
inline bool MeshControl::_internal_shell() const {
  return shell_;
}
inline bool MeshControl::shell() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.shell)
  return _internal_shell();
}
inline void MeshControl::_internal_set_shell(bool value) {
  
  shell_ = value;
}
inline void MeshControl::set_shell(bool value) {
  _internal_set_shell(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.shell)
}

// bool equalize = 15;
inline void MeshControl::clear_equalize() {
  equalize_ = false;
}
inline bool MeshControl::_internal_equalize() const {
  return equalize_;
}
inline bool MeshControl::equalize() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.equalize)
  return _internal_equalize();
}
inline void MeshControl::_internal_set_equalize(bool value) {
  
  equalize_ = value;
}
inline void MeshControl::set_equalize(bool value) {
  _internal_set_equalize(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.equalize)
}

// bool smooth = 16;
inline void MeshControl::clear_smooth() {
  smooth_ = false;
}
inline bool MeshControl::_internal_smooth() const {
  return smooth_;
}
inline bool MeshControl::smooth() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.smooth)
  return _internal_smooth();
}
inline void MeshControl::_internal_set_smooth(bool value) {
  
  smooth_ = value;
}
inline void MeshControl::set_smooth(bool value) {
  _internal_set_smooth(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.smooth)
}

// bool include_background = 18;
inline void MeshControl::clear_include_background() {
  include_background_ = false;
}
inline bool MeshControl::_internal_include_background() const {
  return include_background_;
}
inline bool MeshControl::include_background() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.include_background)
  return _internal_include_background();
}
inline void MeshControl::_internal_set_include_background(bool value) {
  
  include_background_ = value;
}
inline void MeshControl::set_include_background(bool value) {
  _internal_set_include_background(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.include_background)
}

// bool keep_existing_points = 19;
inline void MeshControl::clear_keep_existing_points() {
  keep_existing_points_ = false;
}
inline bool MeshControl::_internal_keep_existing_points() const {
  return keep_existing_points_;
}
inline bool MeshControl::keep_existing_points() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.keep_existing_points)
  return _internal_keep_existing_points();
}
inline void MeshControl::_internal_set_keep_existing_points(bool value) {
  
  keep_existing_points_ = value;
}
inline void MeshControl::set_keep_existing_points(bool value) {
  _internal_set_keep_existing_points(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.keep_existing_points)
}

// bool auto_fit_domain = 20;
inline void MeshControl::clear_auto_fit_domain() {
  auto_fit_domain_ = false;
}
inline bool MeshControl::_internal_auto_fit_domain() const {
  return auto_fit_domain_;
}
inline bool MeshControl::auto_fit_domain() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.auto_fit_domain)
  return _internal_auto_fit_domain();
}
inline void MeshControl::_internal_set_auto_fit_domain(bool value) {
  
  auto_fit_domain_ = value;
}
inline void MeshControl::set_auto_fit_domain(bool value) {
  _internal_set_auto_fit_domain(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.auto_fit_domain)
}

// double boundary_layer_thickness = 23;
inline void MeshControl::clear_boundary_layer_thickness() {
  boundary_layer_thickness_ = 0;
}
inline double MeshControl::_internal_boundary_layer_thickness() const {
  return boundary_layer_thickness_;
}
inline double MeshControl::boundary_layer_thickness() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.boundary_layer_thickness)
  return _internal_boundary_layer_thickness();
}
inline void MeshControl::_internal_set_boundary_layer_thickness(double value) {
  
  boundary_layer_thickness_ = value;
}
inline void MeshControl::set_boundary_layer_thickness(double value) {
  _internal_set_boundary_layer_thickness(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.boundary_layer_thickness)
}

// repeated bool symmetries = 24;
inline int MeshControl::_internal_symmetries_size() const {
  return symmetries_.size();
}
inline int MeshControl::symmetries_size() const {
  return _internal_symmetries_size();
}
inline void MeshControl::clear_symmetries() {
  symmetries_.Clear();
}
inline bool MeshControl::_internal_symmetries(int index) const {
  return symmetries_.Get(index);
}
inline bool MeshControl::symmetries(int index) const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.symmetries)
  return _internal_symmetries(index);
}
inline void MeshControl::set_symmetries(int index, bool value) {
  symmetries_.Set(index, value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.symmetries)
}
inline void MeshControl::_internal_add_symmetries(bool value) {
  symmetries_.Add(value);
}
inline void MeshControl::add_symmetries(bool value) {
  _internal_add_symmetries(value);
  // @@protoc_insertion_point(field_add:Messages.MeshControl.symmetries)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >&
MeshControl::_internal_symmetries() const {
  return symmetries_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >&
MeshControl::symmetries() const {
  // @@protoc_insertion_point(field_list:Messages.MeshControl.symmetries)
  return _internal_symmetries();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >*
MeshControl::_internal_mutable_symmetries() {
  return &symmetries_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< bool >*
MeshControl::mutable_symmetries() {
  // @@protoc_insertion_point(field_mutable_list:Messages.MeshControl.symmetries)
  return _internal_mutable_symmetries();
}

// uint64 background_n = 30;
inline void MeshControl::clear_background_n() {
  background_n_ = uint64_t{0u};
}
inline uint64_t MeshControl::_internal_background_n() const {
  return background_n_;
}
inline uint64_t MeshControl::background_n() const {
  // @@protoc_insertion_point(field_get:Messages.MeshControl.background_n)
  return _internal_background_n();
}
inline void MeshControl::_internal_set_background_n(uint64_t value) {
  
  background_n_ = value;
}
inline void MeshControl::set_background_n(uint64_t value) {
  _internal_set_background_n(value);
  // @@protoc_insertion_point(field_set:Messages.MeshControl.background_n)
}

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

// TreeControl

// uint32 min_depth = 1;
inline void TreeControl::clear_min_depth() {
  min_depth_ = 0u;
}
inline uint32_t TreeControl::_internal_min_depth() const {
  return min_depth_;
}
inline uint32_t TreeControl::min_depth() const {
  // @@protoc_insertion_point(field_get:Messages.TreeControl.min_depth)
  return _internal_min_depth();
}
inline void TreeControl::_internal_set_min_depth(uint32_t value) {
  
  min_depth_ = value;
}
inline void TreeControl::set_min_depth(uint32_t value) {
  _internal_set_min_depth(value);
  // @@protoc_insertion_point(field_set:Messages.TreeControl.min_depth)
}

// uint32 max_depth = 2;
inline void TreeControl::clear_max_depth() {
  max_depth_ = 0u;
}
inline uint32_t TreeControl::_internal_max_depth() const {
  return max_depth_;
}
inline uint32_t TreeControl::max_depth() const {
  // @@protoc_insertion_point(field_get:Messages.TreeControl.max_depth)
  return _internal_max_depth();
}
inline void TreeControl::_internal_set_max_depth(uint32_t value) {
  
  max_depth_ = value;
}
inline void TreeControl::set_max_depth(uint32_t value) {
  _internal_set_max_depth(value);
  // @@protoc_insertion_point(field_set:Messages.TreeControl.max_depth)
}

// uint64 max_size = 3;
inline void TreeControl::clear_max_size() {
  max_size_ = uint64_t{0u};
}
inline uint64_t TreeControl::_internal_max_size() const {
  return max_size_;
}
inline uint64_t TreeControl::max_size() const {
  // @@protoc_insertion_point(field_get:Messages.TreeControl.max_size)
  return _internal_max_size();
}
inline void TreeControl::_internal_set_max_size(uint64_t value) {
  
  max_size_ = value;
}
inline void TreeControl::set_max_size(uint64_t value) {
  _internal_set_max_size(value);
  // @@protoc_insertion_point(field_set:Messages.TreeControl.max_size)
}

// uint32 ref_dimensionality = 7;
inline void TreeControl::clear_ref_dimensionality() {
  ref_dimensionality_ = 0u;
}
inline uint32_t TreeControl::_internal_ref_dimensionality() const {
  return ref_dimensionality_;
}
inline uint32_t TreeControl::ref_dimensionality() const {
  // @@protoc_insertion_point(field_get:Messages.TreeControl.ref_dimensionality)
  return _internal_ref_dimensionality();
}
inline void TreeControl::_internal_set_ref_dimensionality(uint32_t value) {
  
  ref_dimensionality_ = value;
}
inline void TreeControl::set_ref_dimensionality(uint32_t value) {
  _internal_set_ref_dimensionality(value);
  // @@protoc_insertion_point(field_set:Messages.TreeControl.ref_dimensionality)
}

// uint32 length_units = 8;
inline void TreeControl::clear_length_units() {
  length_units_ = 0u;
}
inline uint32_t TreeControl::_internal_length_units() const {
  return length_units_;
}
inline uint32_t TreeControl::length_units() const {
  // @@protoc_insertion_point(field_get:Messages.TreeControl.length_units)
  return _internal_length_units();
}
inline void TreeControl::_internal_set_length_units(uint32_t value) {
  
  length_units_ = value;
}
inline void TreeControl::set_length_units(uint32_t value) {
  _internal_set_length_units(value);
  // @@protoc_insertion_point(field_set:Messages.TreeControl.length_units)
}

// .Messages.Extrema bounds = 10;
inline bool TreeControl::_internal_has_bounds() const {
  return this != internal_default_instance() && bounds_ != nullptr;
}
inline bool TreeControl::has_bounds() const {
  return _internal_has_bounds();
}
inline const ::Messages::Extrema& TreeControl::_internal_bounds() const {
  const ::Messages::Extrema* p = bounds_;
  return p != nullptr ? *p : reinterpret_cast<const ::Messages::Extrema&>(
      ::Messages::_Extrema_default_instance_);
}
inline const ::Messages::Extrema& TreeControl::bounds() const {
  // @@protoc_insertion_point(field_get:Messages.TreeControl.bounds)
  return _internal_bounds();
}
inline void TreeControl::unsafe_arena_set_allocated_bounds(
    ::Messages::Extrema* bounds) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(bounds_);
  }
  bounds_ = bounds;
  if (bounds) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Messages.TreeControl.bounds)
}
inline ::Messages::Extrema* TreeControl::release_bounds() {
  
  ::Messages::Extrema* temp = bounds_;
  bounds_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::Messages::Extrema* TreeControl::unsafe_arena_release_bounds() {
  // @@protoc_insertion_point(field_release:Messages.TreeControl.bounds)
  
  ::Messages::Extrema* temp = bounds_;
  bounds_ = nullptr;
  return temp;
}
inline ::Messages::Extrema* TreeControl::_internal_mutable_bounds() {
  
  if (bounds_ == nullptr) {
    auto* p = CreateMaybeMessage<::Messages::Extrema>(GetArenaForAllocation());
    bounds_ = p;
  }
  return bounds_;
}
inline ::Messages::Extrema* TreeControl::mutable_bounds() {
  ::Messages::Extrema* _msg = _internal_mutable_bounds();
  // @@protoc_insertion_point(field_mutable:Messages.TreeControl.bounds)
  return _msg;
}
inline void TreeControl::set_allocated_bounds(::Messages::Extrema* bounds) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(bounds_);
  }
  if (bounds) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(bounds));
    if (message_arena != submessage_arena) {
      bounds = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, bounds, submessage_arena);
    }
    
  } else {
    
  }
  bounds_ = bounds;
  // @@protoc_insertion_point(field_set_allocated:Messages.TreeControl.bounds)
}

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

// Topology

// string name = 1;
inline void Topology::clear_name() {
  name_.ClearToEmpty();
}
inline const std::string& Topology::name() const {
  // @@protoc_insertion_point(field_get:Messages.Topology.name)
  return _internal_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void Topology::set_name(ArgT0&& arg0, ArgT... args) {
 
 name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:Messages.Topology.name)
}
inline std::string* Topology::mutable_name() {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:Messages.Topology.name)
  return _s;
}
inline const std::string& Topology::_internal_name() const {
  return name_.Get();
}
inline void Topology::_internal_set_name(const std::string& value) {
  
  name_.Set(value, GetArenaForAllocation());
}
inline std::string* Topology::_internal_mutable_name() {
  
  return name_.Mutable(GetArenaForAllocation());
}
inline std::string* Topology::release_name() {
  // @@protoc_insertion_point(field_release:Messages.Topology.name)
  return name_.Release();
}
inline void Topology::set_allocated_name(std::string* name) {
  if (name != nullptr) {
    
  } else {
    
  }
  name_.SetAllocated(name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (name_.IsDefault()) {
    name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:Messages.Topology.name)
}

// uint32 type = 2;
inline void Topology::clear_type() {
  type_ = 0u;
}
inline uint32_t Topology::_internal_type() const {
  return type_;
}
inline uint32_t Topology::type() const {
  // @@protoc_insertion_point(field_get:Messages.Topology.type)
  return _internal_type();
}
inline void Topology::_internal_set_type(uint32_t value) {
  
  type_ = value;
}
inline void Topology::set_type(uint32_t value) {
  _internal_set_type(value);
  // @@protoc_insertion_point(field_set:Messages.Topology.type)
}

// uint32 ndim = 3;
inline void Topology::clear_ndim() {
  ndim_ = 0u;
}
inline uint32_t Topology::_internal_ndim() const {
  return ndim_;
}
inline uint32_t Topology::ndim() const {
  // @@protoc_insertion_point(field_get:Messages.Topology.ndim)
  return _internal_ndim();
}
inline void Topology::_internal_set_ndim(uint32_t value) {
  
  ndim_ = value;
}
inline void Topology::set_ndim(uint32_t value) {
  _internal_set_ndim(value);
  // @@protoc_insertion_point(field_set:Messages.Topology.ndim)
}

// uint32 basis = 4;
inline void Topology::clear_basis() {
  basis_ = 0u;
}
inline uint32_t Topology::_internal_basis() const {
  return basis_;
}
inline uint32_t Topology::basis() const {
  // @@protoc_insertion_point(field_get:Messages.Topology.basis)
  return _internal_basis();
}
inline void Topology::_internal_set_basis(uint32_t value) {
  
  basis_ = value;
}
inline void Topology::set_basis(uint32_t value) {
  _internal_set_basis(value);
  // @@protoc_insertion_point(field_set:Messages.Topology.basis)
}

// string filename = 5;
inline void Topology::clear_filename() {
  filename_.ClearToEmpty();
}
inline const std::string& Topology::filename() const {
  // @@protoc_insertion_point(field_get:Messages.Topology.filename)
  return _internal_filename();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void Topology::set_filename(ArgT0&& arg0, ArgT... args) {
 
 filename_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:Messages.Topology.filename)
}
inline std::string* Topology::mutable_filename() {
  std::string* _s = _internal_mutable_filename();
  // @@protoc_insertion_point(field_mutable:Messages.Topology.filename)
  return _s;
}
inline const std::string& Topology::_internal_filename() const {
  return filename_.Get();
}
inline void Topology::_internal_set_filename(const std::string& value) {
  
  filename_.Set(value, GetArenaForAllocation());
}
inline std::string* Topology::_internal_mutable_filename() {
  
  return filename_.Mutable(GetArenaForAllocation());
}
inline std::string* Topology::release_filename() {
  // @@protoc_insertion_point(field_release:Messages.Topology.filename)
  return filename_.Release();
}
inline void Topology::set_allocated_filename(std::string* filename) {
  if (filename != nullptr) {
    
  } else {
    
  }
  filename_.SetAllocated(filename, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (filename_.IsDefault()) {
    filename_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:Messages.Topology.filename)
}

// .Messages.Revision revision = 6;
inline bool Topology::_internal_has_revision() const {
  return this != internal_default_instance() && revision_ != nullptr;
}
inline bool Topology::has_revision() const {
  return _internal_has_revision();
}
inline const ::Messages::Revision& Topology::_internal_revision() const {
  const ::Messages::Revision* p = revision_;
  return p != nullptr ? *p : reinterpret_cast<const ::Messages::Revision&>(
      ::Messages::_Revision_default_instance_);
}
inline const ::Messages::Revision& Topology::revision() const {
  // @@protoc_insertion_point(field_get:Messages.Topology.revision)
  return _internal_revision();
}
inline void Topology::unsafe_arena_set_allocated_revision(
    ::Messages::Revision* revision) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(revision_);
  }
  revision_ = revision;
  if (revision) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Messages.Topology.revision)
}
inline ::Messages::Revision* Topology::release_revision() {
  
  ::Messages::Revision* temp = revision_;
  revision_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::Messages::Revision* Topology::unsafe_arena_release_revision() {
  // @@protoc_insertion_point(field_release:Messages.Topology.revision)
  
  ::Messages::Revision* temp = revision_;
  revision_ = nullptr;
  return temp;
}
inline ::Messages::Revision* Topology::_internal_mutable_revision() {
  
  if (revision_ == nullptr) {
    auto* p = CreateMaybeMessage<::Messages::Revision>(GetArenaForAllocation());
    revision_ = p;
  }
  return revision_;
}
inline ::Messages::Revision* Topology::mutable_revision() {
  ::Messages::Revision* _msg = _internal_mutable_revision();
  // @@protoc_insertion_point(field_mutable:Messages.Topology.revision)
  return _msg;
}
inline void Topology::set_allocated_revision(::Messages::Revision* revision) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(revision_);
  }
  if (revision) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(revision));
    if (message_arena != submessage_arena) {
      revision = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, revision, submessage_arena);
    }
    
  } else {
    
  }
  revision_ = revision;
  // @@protoc_insertion_point(field_set_allocated:Messages.Topology.revision)
}

// string info = 7;
inline void Topology::clear_info() {
  info_.ClearToEmpty();
}
inline const std::string& Topology::info() const {
  // @@protoc_insertion_point(field_get:Messages.Topology.info)
  return _internal_info();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void Topology::set_info(ArgT0&& arg0, ArgT... args) {
 
 info_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:Messages.Topology.info)
}
inline std::string* Topology::mutable_info() {
  std::string* _s = _internal_mutable_info();
  // @@protoc_insertion_point(field_mutable:Messages.Topology.info)
  return _s;
}
inline const std::string& Topology::_internal_info() const {
  return info_.Get();
}
inline void Topology::_internal_set_info(const std::string& value) {
  
  info_.Set(value, GetArenaForAllocation());
}
inline std::string* Topology::_internal_mutable_info() {
  
  return info_.Mutable(GetArenaForAllocation());
}
inline std::string* Topology::release_info() {
  // @@protoc_insertion_point(field_release:Messages.Topology.info)
  return info_.Release();
}
inline void Topology::set_allocated_info(std::string* info) {
  if (info != nullptr) {
    
  } else {
    
  }
  info_.SetAllocated(info, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (info_.IsDefault()) {
    info_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:Messages.Topology.info)
}

// .Messages.Elements nodes = 10;
inline bool Topology::_internal_has_nodes() const {
  return this != internal_default_instance() && nodes_ != nullptr;
}
inline bool Topology::has_nodes() const {
  return _internal_has_nodes();
}
inline const ::Messages::Elements& Topology::_internal_nodes() const {
  const ::Messages::Elements* p = nodes_;
  return p != nullptr ? *p : reinterpret_cast<const ::Messages::Elements&>(
      ::Messages::_Elements_default_instance_);
}
inline const ::Messages::Elements& Topology::nodes() const {
  // @@protoc_insertion_point(field_get:Messages.Topology.nodes)
  return _internal_nodes();
}
inline void Topology::unsafe_arena_set_allocated_nodes(
    ::Messages::Elements* nodes) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(nodes_);
  }
  nodes_ = nodes;
  if (nodes) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Messages.Topology.nodes)
}
inline ::Messages::Elements* Topology::release_nodes() {
  
  ::Messages::Elements* temp = nodes_;
  nodes_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::Messages::Elements* Topology::unsafe_arena_release_nodes() {
  // @@protoc_insertion_point(field_release:Messages.Topology.nodes)
  
  ::Messages::Elements* temp = nodes_;
  nodes_ = nullptr;
  return temp;
}
inline ::Messages::Elements* Topology::_internal_mutable_nodes() {
  
  if (nodes_ == nullptr) {
    auto* p = CreateMaybeMessage<::Messages::Elements>(GetArenaForAllocation());
    nodes_ = p;
  }
  return nodes_;
}
inline ::Messages::Elements* Topology::mutable_nodes() {
  ::Messages::Elements* _msg = _internal_mutable_nodes();
  // @@protoc_insertion_point(field_mutable:Messages.Topology.nodes)
  return _msg;
}
inline void Topology::set_allocated_nodes(::Messages::Elements* nodes) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(nodes_);
  }
  if (nodes) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(nodes));
    if (message_arena != submessage_arena) {
      nodes = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, nodes, submessage_arena);
    }
    
  } else {
    
  }
  nodes_ = nodes;
  // @@protoc_insertion_point(field_set_allocated:Messages.Topology.nodes)
}

// .Messages.Elements edges = 11;
inline bool Topology::_internal_has_edges() const {
  return this != internal_default_instance() && edges_ != nullptr;
}
inline bool Topology::has_edges() const {
  return _internal_has_edges();
}
inline const ::Messages::Elements& Topology::_internal_edges() const {
  const ::Messages::Elements* p = edges_;
  return p != nullptr ? *p : reinterpret_cast<const ::Messages::Elements&>(
      ::Messages::_Elements_default_instance_);
}
inline const ::Messages::Elements& Topology::edges() const {
  // @@protoc_insertion_point(field_get:Messages.Topology.edges)
  return _internal_edges();
}
inline void Topology::unsafe_arena_set_allocated_edges(
    ::Messages::Elements* edges) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(edges_);
  }
  edges_ = edges;
  if (edges) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Messages.Topology.edges)
}
inline ::Messages::Elements* Topology::release_edges() {
  
  ::Messages::Elements* temp = edges_;
  edges_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::Messages::Elements* Topology::unsafe_arena_release_edges() {
  // @@protoc_insertion_point(field_release:Messages.Topology.edges)
  
  ::Messages::Elements* temp = edges_;
  edges_ = nullptr;
  return temp;
}
inline ::Messages::Elements* Topology::_internal_mutable_edges() {
  
  if (edges_ == nullptr) {
    auto* p = CreateMaybeMessage<::Messages::Elements>(GetArenaForAllocation());
    edges_ = p;
  }
  return edges_;
}
inline ::Messages::Elements* Topology::mutable_edges() {
  ::Messages::Elements* _msg = _internal_mutable_edges();
  // @@protoc_insertion_point(field_mutable:Messages.Topology.edges)
  return _msg;
}
inline void Topology::set_allocated_edges(::Messages::Elements* edges) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(edges_);
  }
  if (edges) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(edges));
    if (message_arena != submessage_arena) {
      edges = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, edges, submessage_arena);
    }
    
  } else {
    
  }
  edges_ = edges;
  // @@protoc_insertion_point(field_set_allocated:Messages.Topology.edges)
}

// .Messages.Elements faces = 12;
inline bool Topology::_internal_has_faces() const {
  return this != internal_default_instance() && faces_ != nullptr;
}
inline bool Topology::has_faces() const {
  return _internal_has_faces();
}
inline const ::Messages::Elements& Topology::_internal_faces() const {
  const ::Messages::Elements* p = faces_;
  return p != nullptr ? *p : reinterpret_cast<const ::Messages::Elements&>(
      ::Messages::_Elements_default_instance_);
}
inline const ::Messages::Elements& Topology::faces() const {
  // @@protoc_insertion_point(field_get:Messages.Topology.faces)
  return _internal_faces();
}
inline void Topology::unsafe_arena_set_allocated_faces(
    ::Messages::Elements* faces) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(faces_);
  }
  faces_ = faces;
  if (faces) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Messages.Topology.faces)
}
inline ::Messages::Elements* Topology::release_faces() {
  
  ::Messages::Elements* temp = faces_;
  faces_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::Messages::Elements* Topology::unsafe_arena_release_faces() {
  // @@protoc_insertion_point(field_release:Messages.Topology.faces)
  
  ::Messages::Elements* temp = faces_;
  faces_ = nullptr;
  return temp;
}
inline ::Messages::Elements* Topology::_internal_mutable_faces() {
  
  if (faces_ == nullptr) {
    auto* p = CreateMaybeMessage<::Messages::Elements>(GetArenaForAllocation());
    faces_ = p;
  }
  return faces_;
}
inline ::Messages::Elements* Topology::mutable_faces() {
  ::Messages::Elements* _msg = _internal_mutable_faces();
  // @@protoc_insertion_point(field_mutable:Messages.Topology.faces)
  return _msg;
}
inline void Topology::set_allocated_faces(::Messages::Elements* faces) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(faces_);
  }
  if (faces) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(faces));
    if (message_arena != submessage_arena) {
      faces = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, faces, submessage_arena);
    }
    
  } else {
    
  }
  faces_ = faces;
  // @@protoc_insertion_point(field_set_allocated:Messages.Topology.faces)
}

// .Messages.Elements cells = 13;
inline bool Topology::_internal_has_cells() const {
  return this != internal_default_instance() && cells_ != nullptr;
}
inline bool Topology::has_cells() const {
  return _internal_has_cells();
}
inline const ::Messages::Elements& Topology::_internal_cells() const {
  const ::Messages::Elements* p = cells_;
  return p != nullptr ? *p : reinterpret_cast<const ::Messages::Elements&>(
      ::Messages::_Elements_default_instance_);
}
inline const ::Messages::Elements& Topology::cells() const {
  // @@protoc_insertion_point(field_get:Messages.Topology.cells)
  return _internal_cells();
}
inline void Topology::unsafe_arena_set_allocated_cells(
    ::Messages::Elements* cells) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(cells_);
  }
  cells_ = cells;
  if (cells) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Messages.Topology.cells)
}
inline ::Messages::Elements* Topology::release_cells() {
  
  ::Messages::Elements* temp = cells_;
  cells_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::Messages::Elements* Topology::unsafe_arena_release_cells() {
  // @@protoc_insertion_point(field_release:Messages.Topology.cells)
  
  ::Messages::Elements* temp = cells_;
  cells_ = nullptr;
  return temp;
}
inline ::Messages::Elements* Topology::_internal_mutable_cells() {
  
  if (cells_ == nullptr) {
    auto* p = CreateMaybeMessage<::Messages::Elements>(GetArenaForAllocation());
    cells_ = p;
  }
  return cells_;
}
inline ::Messages::Elements* Topology::mutable_cells() {
  ::Messages::Elements* _msg = _internal_mutable_cells();
  // @@protoc_insertion_point(field_mutable:Messages.Topology.cells)
  return _msg;
}
inline void Topology::set_allocated_cells(::Messages::Elements* cells) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(cells_);
  }
  if (cells) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(cells));
    if (message_arena != submessage_arena) {
      cells = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, cells, submessage_arena);
    }
    
  } else {
    
  }
  cells_ = cells;
  // @@protoc_insertion_point(field_set_allocated:Messages.Topology.cells)
}

// .Messages.Record64 data = 15;
inline bool Topology::_internal_has_data() const {
  return this != internal_default_instance() && data_ != nullptr;
}
inline bool Topology::has_data() const {
  return _internal_has_data();
}
inline const ::Messages::Record64& Topology::_internal_data() const {
  const ::Messages::Record64* p = data_;
  return p != nullptr ? *p : reinterpret_cast<const ::Messages::Record64&>(
      ::Messages::_Record64_default_instance_);
}
inline const ::Messages::Record64& Topology::data() const {
  // @@protoc_insertion_point(field_get:Messages.Topology.data)
  return _internal_data();
}
inline void Topology::unsafe_arena_set_allocated_data(
    ::Messages::Record64* data) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(data_);
  }
  data_ = data;
  if (data) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Messages.Topology.data)
}
inline ::Messages::Record64* Topology::release_data() {
  
  ::Messages::Record64* temp = data_;
  data_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::Messages::Record64* Topology::unsafe_arena_release_data() {
  // @@protoc_insertion_point(field_release:Messages.Topology.data)
  
  ::Messages::Record64* temp = data_;
  data_ = nullptr;
  return temp;
}
inline ::Messages::Record64* Topology::_internal_mutable_data() {
  
  if (data_ == nullptr) {
    auto* p = CreateMaybeMessage<::Messages::Record64>(GetArenaForAllocation());
    data_ = p;
  }
  return data_;
}
inline ::Messages::Record64* Topology::mutable_data() {
  ::Messages::Record64* _msg = _internal_mutable_data();
  // @@protoc_insertion_point(field_mutable:Messages.Topology.data)
  return _msg;
}
inline void Topology::set_allocated_data(::Messages::Record64* data) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(data_);
  }
  if (data) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(data));
    if (message_arena != submessage_arena) {
      data = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, data, submessage_arena);
    }
    
  } else {
    
  }
  data_ = data;
  // @@protoc_insertion_point(field_set_allocated:Messages.Topology.data)
}

// repeated .Messages.SparseMatrix sparse_data = 16;
inline int Topology::_internal_sparse_data_size() const {
  return sparse_data_.size();
}
inline int Topology::sparse_data_size() const {
  return _internal_sparse_data_size();
}
inline ::Messages::SparseMatrix* Topology::mutable_sparse_data(int index) {
  // @@protoc_insertion_point(field_mutable:Messages.Topology.sparse_data)
  return sparse_data_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::Messages::SparseMatrix >*
Topology::mutable_sparse_data() {
  // @@protoc_insertion_point(field_mutable_list:Messages.Topology.sparse_data)
  return &sparse_data_;
}
inline const ::Messages::SparseMatrix& Topology::_internal_sparse_data(int index) const {
  return sparse_data_.Get(index);
}
inline const ::Messages::SparseMatrix& Topology::sparse_data(int index) const {
  // @@protoc_insertion_point(field_get:Messages.Topology.sparse_data)
  return _internal_sparse_data(index);
}
inline ::Messages::SparseMatrix* Topology::_internal_add_sparse_data() {
  return sparse_data_.Add();
}
inline ::Messages::SparseMatrix* Topology::add_sparse_data() {
  ::Messages::SparseMatrix* _add = _internal_add_sparse_data();
  // @@protoc_insertion_point(field_add:Messages.Topology.sparse_data)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::Messages::SparseMatrix >&
Topology::sparse_data() const {
  // @@protoc_insertion_point(field_list:Messages.Topology.sparse_data)
  return sparse_data_;
}

// .Messages.GridControl grid_control = 20;
inline bool Topology::_internal_has_grid_control() const {
  return this != internal_default_instance() && grid_control_ != nullptr;
}
inline bool Topology::has_grid_control() const {
  return _internal_has_grid_control();
}
inline void Topology::clear_grid_control() {
  if (GetArenaForAllocation() == nullptr && grid_control_ != nullptr) {
    delete grid_control_;
  }
  grid_control_ = nullptr;
}
inline const ::Messages::GridControl& Topology::_internal_grid_control() const {
  const ::Messages::GridControl* p = grid_control_;
  return p != nullptr ? *p : reinterpret_cast<const ::Messages::GridControl&>(
      ::Messages::_GridControl_default_instance_);
}
inline const ::Messages::GridControl& Topology::grid_control() const {
  // @@protoc_insertion_point(field_get:Messages.Topology.grid_control)
  return _internal_grid_control();
}
inline void Topology::unsafe_arena_set_allocated_grid_control(
    ::Messages::GridControl* grid_control) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(grid_control_);
  }
  grid_control_ = grid_control;
  if (grid_control) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Messages.Topology.grid_control)
}
inline ::Messages::GridControl* Topology::release_grid_control() {
  
  ::Messages::GridControl* temp = grid_control_;
  grid_control_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::Messages::GridControl* Topology::unsafe_arena_release_grid_control() {
  // @@protoc_insertion_point(field_release:Messages.Topology.grid_control)
  
  ::Messages::GridControl* temp = grid_control_;
  grid_control_ = nullptr;
  return temp;
}
inline ::Messages::GridControl* Topology::_internal_mutable_grid_control() {
  
  if (grid_control_ == nullptr) {
    auto* p = CreateMaybeMessage<::Messages::GridControl>(GetArenaForAllocation());
    grid_control_ = p;
  }
  return grid_control_;
}
inline ::Messages::GridControl* Topology::mutable_grid_control() {
  ::Messages::GridControl* _msg = _internal_mutable_grid_control();
  // @@protoc_insertion_point(field_mutable:Messages.Topology.grid_control)
  return _msg;
}
inline void Topology::set_allocated_grid_control(::Messages::GridControl* grid_control) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete grid_control_;
  }
  if (grid_control) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(grid_control);
    if (message_arena != submessage_arena) {
      grid_control = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, grid_control, submessage_arena);
    }
    
  } else {
    
  }
  grid_control_ = grid_control;
  // @@protoc_insertion_point(field_set_allocated:Messages.Topology.grid_control)
}

// .Messages.MeshControl mesh_control = 21;
inline bool Topology::_internal_has_mesh_control() const {
  return this != internal_default_instance() && mesh_control_ != nullptr;
}
inline bool Topology::has_mesh_control() const {
  return _internal_has_mesh_control();
}
inline void Topology::clear_mesh_control() {
  if (GetArenaForAllocation() == nullptr && mesh_control_ != nullptr) {
    delete mesh_control_;
  }
  mesh_control_ = nullptr;
}
inline const ::Messages::MeshControl& Topology::_internal_mesh_control() const {
  const ::Messages::MeshControl* p = mesh_control_;
  return p != nullptr ? *p : reinterpret_cast<const ::Messages::MeshControl&>(
      ::Messages::_MeshControl_default_instance_);
}
inline const ::Messages::MeshControl& Topology::mesh_control() const {
  // @@protoc_insertion_point(field_get:Messages.Topology.mesh_control)
  return _internal_mesh_control();
}
inline void Topology::unsafe_arena_set_allocated_mesh_control(
    ::Messages::MeshControl* mesh_control) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(mesh_control_);
  }
  mesh_control_ = mesh_control;
  if (mesh_control) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Messages.Topology.mesh_control)
}
inline ::Messages::MeshControl* Topology::release_mesh_control() {
  
  ::Messages::MeshControl* temp = mesh_control_;
  mesh_control_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::Messages::MeshControl* Topology::unsafe_arena_release_mesh_control() {
  // @@protoc_insertion_point(field_release:Messages.Topology.mesh_control)
  
  ::Messages::MeshControl* temp = mesh_control_;
  mesh_control_ = nullptr;
  return temp;
}
inline ::Messages::MeshControl* Topology::_internal_mutable_mesh_control() {
  
  if (mesh_control_ == nullptr) {
    auto* p = CreateMaybeMessage<::Messages::MeshControl>(GetArenaForAllocation());
    mesh_control_ = p;
  }
  return mesh_control_;
}
inline ::Messages::MeshControl* Topology::mutable_mesh_control() {
  ::Messages::MeshControl* _msg = _internal_mutable_mesh_control();
  // @@protoc_insertion_point(field_mutable:Messages.Topology.mesh_control)
  return _msg;
}
inline void Topology::set_allocated_mesh_control(::Messages::MeshControl* mesh_control) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete mesh_control_;
  }
  if (mesh_control) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(mesh_control);
    if (message_arena != submessage_arena) {
      mesh_control = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, mesh_control, submessage_arena);
    }
    
  } else {
    
  }
  mesh_control_ = mesh_control;
  // @@protoc_insertion_point(field_set_allocated:Messages.Topology.mesh_control)
}

// .Messages.TreeControl tree_control = 22;
inline bool Topology::_internal_has_tree_control() const {
  return this != internal_default_instance() && tree_control_ != nullptr;
}
inline bool Topology::has_tree_control() const {
  return _internal_has_tree_control();
}
inline void Topology::clear_tree_control() {
  if (GetArenaForAllocation() == nullptr && tree_control_ != nullptr) {
    delete tree_control_;
  }
  tree_control_ = nullptr;
}
inline const ::Messages::TreeControl& Topology::_internal_tree_control() const {
  const ::Messages::TreeControl* p = tree_control_;
  return p != nullptr ? *p : reinterpret_cast<const ::Messages::TreeControl&>(
      ::Messages::_TreeControl_default_instance_);
}
inline const ::Messages::TreeControl& Topology::tree_control() const {
  // @@protoc_insertion_point(field_get:Messages.Topology.tree_control)
  return _internal_tree_control();
}
inline void Topology::unsafe_arena_set_allocated_tree_control(
    ::Messages::TreeControl* tree_control) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(tree_control_);
  }
  tree_control_ = tree_control;
  if (tree_control) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:Messages.Topology.tree_control)
}
inline ::Messages::TreeControl* Topology::release_tree_control() {
  
  ::Messages::TreeControl* temp = tree_control_;
  tree_control_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::Messages::TreeControl* Topology::unsafe_arena_release_tree_control() {
  // @@protoc_insertion_point(field_release:Messages.Topology.tree_control)
  
  ::Messages::TreeControl* temp = tree_control_;
  tree_control_ = nullptr;
  return temp;
}
inline ::Messages::TreeControl* Topology::_internal_mutable_tree_control() {
  
  if (tree_control_ == nullptr) {
    auto* p = CreateMaybeMessage<::Messages::TreeControl>(GetArenaForAllocation());
    tree_control_ = p;
  }
  return tree_control_;
}
inline ::Messages::TreeControl* Topology::mutable_tree_control() {
  ::Messages::TreeControl* _msg = _internal_mutable_tree_control();
  // @@protoc_insertion_point(field_mutable:Messages.Topology.tree_control)
  return _msg;
}
inline void Topology::set_allocated_tree_control(::Messages::TreeControl* tree_control) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete tree_control_;
  }
  if (tree_control) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(tree_control);
    if (message_arena != submessage_arena) {
      tree_control = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, tree_control, submessage_arena);
    }
    
  } else {
    
  }
  tree_control_ = tree_control;
  // @@protoc_insertion_point(field_set_allocated:Messages.Topology.tree_control)
}

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

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace Messages

// @@protoc_insertion_point(global_scope)

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