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

#ifndef GOOGLE_PROTOBUF_INCLUDED_vector_5ftile_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_vector_5ftile_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 3020001 < 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/message_lite.h>
#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
#include <google/protobuf/extension_set.h>  // IWYU pragma: export
#include <google/protobuf/generated_enum_util.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_vector_5ftile_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_vector_5ftile_2eproto {
  static const uint32_t offsets[];
};
namespace vector_tile {
class Tile;
struct TileDefaultTypeInternal;
extern TileDefaultTypeInternal _Tile_default_instance_;
class Tile_Feature;
struct Tile_FeatureDefaultTypeInternal;
extern Tile_FeatureDefaultTypeInternal _Tile_Feature_default_instance_;
class Tile_Layer;
struct Tile_LayerDefaultTypeInternal;
extern Tile_LayerDefaultTypeInternal _Tile_Layer_default_instance_;
class Tile_Value;
struct Tile_ValueDefaultTypeInternal;
extern Tile_ValueDefaultTypeInternal _Tile_Value_default_instance_;
}  // namespace vector_tile
PROTOBUF_NAMESPACE_OPEN
template<> ::vector_tile::Tile* Arena::CreateMaybeMessage<::vector_tile::Tile>(Arena*);
template<> ::vector_tile::Tile_Feature* Arena::CreateMaybeMessage<::vector_tile::Tile_Feature>(Arena*);
template<> ::vector_tile::Tile_Layer* Arena::CreateMaybeMessage<::vector_tile::Tile_Layer>(Arena*);
template<> ::vector_tile::Tile_Value* Arena::CreateMaybeMessage<::vector_tile::Tile_Value>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace vector_tile {

enum Tile_GeomType : int {
  Tile_GeomType_UNKNOWN = 0,
  Tile_GeomType_POINT = 1,
  Tile_GeomType_LINESTRING = 2,
  Tile_GeomType_POLYGON = 3
};
bool Tile_GeomType_IsValid(int value);
constexpr Tile_GeomType Tile_GeomType_GeomType_MIN = Tile_GeomType_UNKNOWN;
constexpr Tile_GeomType Tile_GeomType_GeomType_MAX = Tile_GeomType_POLYGON;
constexpr int Tile_GeomType_GeomType_ARRAYSIZE = Tile_GeomType_GeomType_MAX + 1;

const std::string& Tile_GeomType_Name(Tile_GeomType value);
template<typename T>
inline const std::string& Tile_GeomType_Name(T enum_t_value) {
  static_assert(::std::is_same<T, Tile_GeomType>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function Tile_GeomType_Name.");
  return Tile_GeomType_Name(static_cast<Tile_GeomType>(enum_t_value));
}
bool Tile_GeomType_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, Tile_GeomType* value);
// ===================================================================

class Tile_Value final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:vector_tile.Tile.Value) */ {
 public:
  inline Tile_Value() : Tile_Value(nullptr) {}
  ~Tile_Value() override;
  explicit PROTOBUF_CONSTEXPR Tile_Value(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

  inline Tile_Value& operator=(const Tile_Value& from) {
    CopyFrom(from);
    return *this;
  }
  inline Tile_Value& operator=(Tile_Value&& 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;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const Tile_Value& default_instance() {
    return *internal_default_instance();
  }
  static inline const Tile_Value* internal_default_instance() {
    return reinterpret_cast<const Tile_Value*>(
               &_Tile_Value_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(Tile_Value& a, Tile_Value& b) {
    a.Swap(&b);
  }
  inline void Swap(Tile_Value* 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(Tile_Value* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  Tile_Value* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<Tile_Value>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const Tile_Value& from);
  void MergeFrom(const Tile_Value& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  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;
  void InternalSwap(Tile_Value* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "vector_tile.Tile.Value";
  }
  protected:
  explicit Tile_Value(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  std::string GetTypeName() const final;

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

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

  enum : int {
    kStringValueFieldNumber = 1,
    kDoubleValueFieldNumber = 3,
    kIntValueFieldNumber = 4,
    kFloatValueFieldNumber = 2,
    kBoolValueFieldNumber = 7,
    kUintValueFieldNumber = 5,
    kSintValueFieldNumber = 6,
  };
  // optional string string_value = 1;
  bool has_string_value() const;
  private:
  bool _internal_has_string_value() const;
  public:
  void clear_string_value();
  const std::string& string_value() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_string_value(ArgT0&& arg0, ArgT... args);
  std::string* mutable_string_value();
  PROTOBUF_NODISCARD std::string* release_string_value();
  void set_allocated_string_value(std::string* string_value);
  private:
  const std::string& _internal_string_value() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_string_value(const std::string& value);
  std::string* _internal_mutable_string_value();
  public:

  // optional double double_value = 3;
  bool has_double_value() const;
  private:
  bool _internal_has_double_value() const;
  public:
  void clear_double_value();
  double double_value() const;
  void set_double_value(double value);
  private:
  double _internal_double_value() const;
  void _internal_set_double_value(double value);
  public:

  // optional int64 int_value = 4;
  bool has_int_value() const;
  private:
  bool _internal_has_int_value() const;
  public:
  void clear_int_value();
  int64_t int_value() const;
  void set_int_value(int64_t value);
  private:
  int64_t _internal_int_value() const;
  void _internal_set_int_value(int64_t value);
  public:

  // optional float float_value = 2;
  bool has_float_value() const;
  private:
  bool _internal_has_float_value() const;
  public:
  void clear_float_value();
  float float_value() const;
  void set_float_value(float value);
  private:
  float _internal_float_value() const;
  void _internal_set_float_value(float value);
  public:

  // optional bool bool_value = 7;
  bool has_bool_value() const;
  private:
  bool _internal_has_bool_value() const;
  public:
  void clear_bool_value();
  bool bool_value() const;
  void set_bool_value(bool value);
  private:
  bool _internal_bool_value() const;
  void _internal_set_bool_value(bool value);
  public:

  // optional uint64 uint_value = 5;
  bool has_uint_value() const;
  private:
  bool _internal_has_uint_value() const;
  public:
  void clear_uint_value();
  uint64_t uint_value() const;
  void set_uint_value(uint64_t value);
  private:
  uint64_t _internal_uint_value() const;
  void _internal_set_uint_value(uint64_t value);
  public:

  // optional sint64 sint_value = 6;
  bool has_sint_value() const;
  private:
  bool _internal_has_sint_value() const;
  public:
  void clear_sint_value();
  int64_t sint_value() const;
  void set_sint_value(int64_t value);
  private:
  int64_t _internal_sint_value() const;
  void _internal_set_sint_value(int64_t value);
  public:


  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline bool HasExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _extensions_.Has(id.number());
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void ClearExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id) {
    _extensions_.ClearExtension(id.number());

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline int ExtensionSize(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _extensions_.ExtensionSize(id.number());
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _proto_TypeTraits::Get(id.number(), _extensions_,
                                  id.default_value());
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::Mutable(id.number(), _field_type,
                                      &_extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void SetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Singular::ConstType value) {
    _proto_TypeTraits::Set(id.number(), _field_type, value, &_extensions_);

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void SetAllocatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Singular::MutableType value) {
    _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
                                    &_extensions_);

  }
  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void UnsafeArenaSetAllocatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Singular::MutableType value) {
    _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
                                               value, &_extensions_);

  }
  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  PROTOBUF_NODISCARD inline
      typename _proto_TypeTraits::Singular::MutableType
      ReleaseExtension(
          const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
              Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::Release(id.number(), _field_type,
                                      &_extensions_);
  }
  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Singular::MutableType
  UnsafeArenaReleaseExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
                                                 &_extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::ConstType GetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id,
      int index) const {

    return _proto_TypeTraits::Get(id.number(), _extensions_, index);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::MutableType MutableExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id,
      int index) {

    return _proto_TypeTraits::Mutable(id.number(), index, &_extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void SetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id,
      int index, typename _proto_TypeTraits::Repeated::ConstType value) {
    _proto_TypeTraits::Set(id.number(), index, value, &_extensions_);

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::MutableType AddExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id) {
    typename _proto_TypeTraits::Repeated::MutableType to_add =
        _proto_TypeTraits::Add(id.number(), _field_type, &_extensions_);

    return to_add;
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void AddExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Repeated::ConstType value) {
    _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
                           &_extensions_);

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline const typename _proto_TypeTraits::Repeated::RepeatedFieldType&
  GetRepeatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _proto_TypeTraits::GetRepeated(id.number(), _extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::RepeatedFieldType*
  MutableRepeatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Value, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
                                              _is_packed, &_extensions_);
  }

  // @@protoc_insertion_point(class_scope:vector_tile.Tile.Value)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::ExtensionSet _extensions_;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr string_value_;
  double double_value_;
  int64_t int_value_;
  float float_value_;
  bool bool_value_;
  uint64_t uint_value_;
  int64_t sint_value_;
  friend struct ::TableStruct_vector_5ftile_2eproto;
};
// -------------------------------------------------------------------

class Tile_Feature final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:vector_tile.Tile.Feature) */ {
 public:
  inline Tile_Feature() : Tile_Feature(nullptr) {}
  ~Tile_Feature() override;
  explicit PROTOBUF_CONSTEXPR Tile_Feature(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

  inline Tile_Feature& operator=(const Tile_Feature& from) {
    CopyFrom(from);
    return *this;
  }
  inline Tile_Feature& operator=(Tile_Feature&& 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;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const Tile_Feature& default_instance() {
    return *internal_default_instance();
  }
  static inline const Tile_Feature* internal_default_instance() {
    return reinterpret_cast<const Tile_Feature*>(
               &_Tile_Feature_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(Tile_Feature& a, Tile_Feature& b) {
    a.Swap(&b);
  }
  inline void Swap(Tile_Feature* 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(Tile_Feature* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  Tile_Feature* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<Tile_Feature>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const Tile_Feature& from);
  void MergeFrom(const Tile_Feature& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  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;
  void InternalSwap(Tile_Feature* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "vector_tile.Tile.Feature";
  }
  protected:
  explicit Tile_Feature(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  std::string GetTypeName() const final;

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

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

  enum : int {
    kTagsFieldNumber = 2,
    kGeometryFieldNumber = 4,
    kIdFieldNumber = 1,
    kTypeFieldNumber = 3,
  };
  // repeated uint32 tags = 2 [packed = true];
  int tags_size() const;
  private:
  int _internal_tags_size() const;
  public:
  void clear_tags();
  private:
  uint32_t _internal_tags(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
      _internal_tags() const;
  void _internal_add_tags(uint32_t value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
      _internal_mutable_tags();
  public:
  uint32_t tags(int index) const;
  void set_tags(int index, uint32_t value);
  void add_tags(uint32_t value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
      tags() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
      mutable_tags();

  // repeated uint32 geometry = 4 [packed = true];
  int geometry_size() const;
  private:
  int _internal_geometry_size() const;
  public:
  void clear_geometry();
  private:
  uint32_t _internal_geometry(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
      _internal_geometry() const;
  void _internal_add_geometry(uint32_t value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
      _internal_mutable_geometry();
  public:
  uint32_t geometry(int index) const;
  void set_geometry(int index, uint32_t value);
  void add_geometry(uint32_t value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
      geometry() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
      mutable_geometry();

  // optional uint64 id = 1 [default = 0];
  bool has_id() const;
  private:
  bool _internal_has_id() const;
  public:
  void clear_id();
  uint64_t id() const;
  void set_id(uint64_t value);
  private:
  uint64_t _internal_id() const;
  void _internal_set_id(uint64_t value);
  public:

  // optional .vector_tile.Tile.GeomType type = 3 [default = UNKNOWN];
  bool has_type() const;
  private:
  bool _internal_has_type() const;
  public:
  void clear_type();
  ::vector_tile::Tile_GeomType type() const;
  void set_type(::vector_tile::Tile_GeomType value);
  private:
  ::vector_tile::Tile_GeomType _internal_type() const;
  void _internal_set_type(::vector_tile::Tile_GeomType value);
  public:

  // @@protoc_insertion_point(class_scope:vector_tile.Tile.Feature)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t > tags_;
  mutable std::atomic<int> _tags_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t > geometry_;
  mutable std::atomic<int> _geometry_cached_byte_size_;
  uint64_t id_;
  int type_;
  friend struct ::TableStruct_vector_5ftile_2eproto;
};
// -------------------------------------------------------------------

class Tile_Layer final :
    public ::PROTOBUF_NAMESPACE_ID::MessageLite /* @@protoc_insertion_point(class_definition:vector_tile.Tile.Layer) */ {
 public:
  inline Tile_Layer() : Tile_Layer(nullptr) {}
  ~Tile_Layer() override;
  explicit PROTOBUF_CONSTEXPR Tile_Layer(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

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

  inline Tile_Layer& operator=(const Tile_Layer& from) {
    CopyFrom(from);
    return *this;
  }
  inline Tile_Layer& operator=(Tile_Layer&& 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;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const Tile_Layer& default_instance() {
    return *internal_default_instance();
  }
  static inline const Tile_Layer* internal_default_instance() {
    return reinterpret_cast<const Tile_Layer*>(
               &_Tile_Layer_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(Tile_Layer& a, Tile_Layer& b) {
    a.Swap(&b);
  }
  inline void Swap(Tile_Layer* 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(Tile_Layer* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  Tile_Layer* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<Tile_Layer>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const Tile_Layer& from);
  void MergeFrom(const Tile_Layer& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  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;
  void InternalSwap(Tile_Layer* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "vector_tile.Tile.Layer";
  }
  protected:
  explicit Tile_Layer(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  std::string GetTypeName() const final;

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

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

  enum : int {
    kFeaturesFieldNumber = 2,
    kKeysFieldNumber = 3,
    kValuesFieldNumber = 4,
    kNameFieldNumber = 1,
    kExtentFieldNumber = 5,
    kVersionFieldNumber = 15,
  };
  // repeated .vector_tile.Tile.Feature features = 2;
  int features_size() const;
  private:
  int _internal_features_size() const;
  public:
  void clear_features();
  ::vector_tile::Tile_Feature* mutable_features(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::vector_tile::Tile_Feature >*
      mutable_features();
  private:
  const ::vector_tile::Tile_Feature& _internal_features(int index) const;
  ::vector_tile::Tile_Feature* _internal_add_features();
  public:
  const ::vector_tile::Tile_Feature& features(int index) const;
  ::vector_tile::Tile_Feature* add_features();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::vector_tile::Tile_Feature >&
      features() const;

  // repeated string keys = 3;
  int keys_size() const;
  private:
  int _internal_keys_size() const;
  public:
  void clear_keys();
  const std::string& keys(int index) const;
  std::string* mutable_keys(int index);
  void set_keys(int index, const std::string& value);
  void set_keys(int index, std::string&& value);
  void set_keys(int index, const char* value);
  void set_keys(int index, const char* value, size_t size);
  std::string* add_keys();
  void add_keys(const std::string& value);
  void add_keys(std::string&& value);
  void add_keys(const char* value);
  void add_keys(const char* value, size_t size);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& keys() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_keys();
  private:
  const std::string& _internal_keys(int index) const;
  std::string* _internal_add_keys();
  public:

  // repeated .vector_tile.Tile.Value values = 4;
  int values_size() const;
  private:
  int _internal_values_size() const;
  public:
  void clear_values();
  ::vector_tile::Tile_Value* mutable_values(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::vector_tile::Tile_Value >*
      mutable_values();
  private:
  const ::vector_tile::Tile_Value& _internal_values(int index) const;
  ::vector_tile::Tile_Value* _internal_add_values();
  public:
  const ::vector_tile::Tile_Value& values(int index) const;
  ::vector_tile::Tile_Value* add_values();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::vector_tile::Tile_Value >&
      values() const;

  // required string name = 1;
  bool has_name() const;
  private:
  bool _internal_has_name() const;
  public:
  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:

  // optional uint32 extent = 5 [default = 4096];
  bool has_extent() const;
  private:
  bool _internal_has_extent() const;
  public:
  void clear_extent();
  uint32_t extent() const;
  void set_extent(uint32_t value);
  private:
  uint32_t _internal_extent() const;
  void _internal_set_extent(uint32_t value);
  public:

  // required uint32 version = 15 [default = 1];
  bool has_version() const;
  private:
  bool _internal_has_version() const;
  public:
  void clear_version();
  uint32_t version() const;
  void set_version(uint32_t value);
  private:
  uint32_t _internal_version() const;
  void _internal_set_version(uint32_t value);
  public:


  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline bool HasExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _extensions_.Has(id.number());
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void ClearExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id) {
    _extensions_.ClearExtension(id.number());

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline int ExtensionSize(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _extensions_.ExtensionSize(id.number());
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _proto_TypeTraits::Get(id.number(), _extensions_,
                                  id.default_value());
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::Mutable(id.number(), _field_type,
                                      &_extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void SetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Singular::ConstType value) {
    _proto_TypeTraits::Set(id.number(), _field_type, value, &_extensions_);

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void SetAllocatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Singular::MutableType value) {
    _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
                                    &_extensions_);

  }
  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void UnsafeArenaSetAllocatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Singular::MutableType value) {
    _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
                                               value, &_extensions_);

  }
  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  PROTOBUF_NODISCARD inline
      typename _proto_TypeTraits::Singular::MutableType
      ReleaseExtension(
          const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
              Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::Release(id.number(), _field_type,
                                      &_extensions_);
  }
  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Singular::MutableType
  UnsafeArenaReleaseExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
                                                 &_extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::ConstType GetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id,
      int index) const {

    return _proto_TypeTraits::Get(id.number(), _extensions_, index);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::MutableType MutableExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id,
      int index) {

    return _proto_TypeTraits::Mutable(id.number(), index, &_extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void SetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id,
      int index, typename _proto_TypeTraits::Repeated::ConstType value) {
    _proto_TypeTraits::Set(id.number(), index, value, &_extensions_);

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::MutableType AddExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id) {
    typename _proto_TypeTraits::Repeated::MutableType to_add =
        _proto_TypeTraits::Add(id.number(), _field_type, &_extensions_);

    return to_add;
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void AddExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Repeated::ConstType value) {
    _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
                           &_extensions_);

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline const typename _proto_TypeTraits::Repeated::RepeatedFieldType&
  GetRepeatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _proto_TypeTraits::GetRepeated(id.number(), _extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::RepeatedFieldType*
  MutableRepeatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile_Layer, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
                                              _is_packed, &_extensions_);
  }

  // @@protoc_insertion_point(class_scope:vector_tile.Tile.Layer)
 private:
  class _Internal;

  // helper for ByteSizeLong()
  size_t RequiredFieldsByteSizeFallback() const;

  ::PROTOBUF_NAMESPACE_ID::internal::ExtensionSet _extensions_;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::vector_tile::Tile_Feature > features_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> keys_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::vector_tile::Tile_Value > values_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
  uint32_t extent_;
  uint32_t version_;
  friend struct ::TableStruct_vector_5ftile_2eproto;
};
// -------------------------------------------------------------------

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

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

  inline Tile& operator=(const Tile& from) {
    CopyFrom(from);
    return *this;
  }
  inline Tile& operator=(Tile&& 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;
  }

  inline const std::string& unknown_fields() const {
    return _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString);
  }
  inline std::string* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<std::string>();
  }

  static const Tile& default_instance() {
    return *internal_default_instance();
  }
  static inline const Tile* internal_default_instance() {
    return reinterpret_cast<const Tile*>(
               &_Tile_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(Tile& a, Tile& b) {
    a.Swap(&b);
  }
  inline void Swap(Tile* 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(Tile* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  Tile* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<Tile>(arena);
  }
  void CheckTypeAndMergeFrom(const ::PROTOBUF_NAMESPACE_ID::MessageLite& from)  final;
  void CopyFrom(const Tile& from);
  void MergeFrom(const Tile& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  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;
  void InternalSwap(Tile* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "vector_tile.Tile";
  }
  protected:
  explicit Tile(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  std::string GetTypeName() const final;

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

  typedef Tile_Value Value;
  typedef Tile_Feature Feature;
  typedef Tile_Layer Layer;

  typedef Tile_GeomType GeomType;
  static constexpr GeomType UNKNOWN =
    Tile_GeomType_UNKNOWN;
  static constexpr GeomType POINT =
    Tile_GeomType_POINT;
  static constexpr GeomType LINESTRING =
    Tile_GeomType_LINESTRING;
  static constexpr GeomType POLYGON =
    Tile_GeomType_POLYGON;
  static inline bool GeomType_IsValid(int value) {
    return Tile_GeomType_IsValid(value);
  }
  static constexpr GeomType GeomType_MIN =
    Tile_GeomType_GeomType_MIN;
  static constexpr GeomType GeomType_MAX =
    Tile_GeomType_GeomType_MAX;
  static constexpr int GeomType_ARRAYSIZE =
    Tile_GeomType_GeomType_ARRAYSIZE;
  template<typename T>
  static inline const std::string& GeomType_Name(T enum_t_value) {
    static_assert(::std::is_same<T, GeomType>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function GeomType_Name.");
    return Tile_GeomType_Name(enum_t_value);
  }
  static inline bool GeomType_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      GeomType* value) {
    return Tile_GeomType_Parse(name, value);
  }

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

  enum : int {
    kLayersFieldNumber = 3,
  };
  // repeated .vector_tile.Tile.Layer layers = 3;
  int layers_size() const;
  private:
  int _internal_layers_size() const;
  public:
  void clear_layers();
  ::vector_tile::Tile_Layer* mutable_layers(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::vector_tile::Tile_Layer >*
      mutable_layers();
  private:
  const ::vector_tile::Tile_Layer& _internal_layers(int index) const;
  ::vector_tile::Tile_Layer* _internal_add_layers();
  public:
  const ::vector_tile::Tile_Layer& layers(int index) const;
  ::vector_tile::Tile_Layer* add_layers();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::vector_tile::Tile_Layer >&
      layers() const;


  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline bool HasExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _extensions_.Has(id.number());
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void ClearExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id) {
    _extensions_.ClearExtension(id.number());

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline int ExtensionSize(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _extensions_.ExtensionSize(id.number());
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Singular::ConstType GetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _proto_TypeTraits::Get(id.number(), _extensions_,
                                  id.default_value());
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Singular::MutableType MutableExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::Mutable(id.number(), _field_type,
                                      &_extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void SetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Singular::ConstType value) {
    _proto_TypeTraits::Set(id.number(), _field_type, value, &_extensions_);

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void SetAllocatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Singular::MutableType value) {
    _proto_TypeTraits::SetAllocated(id.number(), _field_type, value,
                                    &_extensions_);

  }
  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void UnsafeArenaSetAllocatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Singular::MutableType value) {
    _proto_TypeTraits::UnsafeArenaSetAllocated(id.number(), _field_type,
                                               value, &_extensions_);

  }
  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  PROTOBUF_NODISCARD inline
      typename _proto_TypeTraits::Singular::MutableType
      ReleaseExtension(
          const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
              Tile, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::Release(id.number(), _field_type,
                                      &_extensions_);
  }
  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Singular::MutableType
  UnsafeArenaReleaseExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::UnsafeArenaRelease(id.number(), _field_type,
                                                 &_extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::ConstType GetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id,
      int index) const {

    return _proto_TypeTraits::Get(id.number(), _extensions_, index);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::MutableType MutableExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id,
      int index) {

    return _proto_TypeTraits::Mutable(id.number(), index, &_extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void SetExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id,
      int index, typename _proto_TypeTraits::Repeated::ConstType value) {
    _proto_TypeTraits::Set(id.number(), index, value, &_extensions_);

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::MutableType AddExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id) {
    typename _proto_TypeTraits::Repeated::MutableType to_add =
        _proto_TypeTraits::Add(id.number(), _field_type, &_extensions_);

    return to_add;
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline void AddExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id,
      typename _proto_TypeTraits::Repeated::ConstType value) {
    _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, value,
                           &_extensions_);

  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline const typename _proto_TypeTraits::Repeated::RepeatedFieldType&
  GetRepeatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id) const {

    return _proto_TypeTraits::GetRepeated(id.number(), _extensions_);
  }

  template <typename _proto_TypeTraits,
            ::PROTOBUF_NAMESPACE_ID::internal::FieldType _field_type,
            bool _is_packed>
  inline typename _proto_TypeTraits::Repeated::RepeatedFieldType*
  MutableRepeatedExtension(
      const ::PROTOBUF_NAMESPACE_ID::internal::ExtensionIdentifier<
          Tile, _proto_TypeTraits, _field_type, _is_packed>& id) {

    return _proto_TypeTraits::MutableRepeated(id.number(), _field_type,
                                              _is_packed, &_extensions_);
  }

  // @@protoc_insertion_point(class_scope:vector_tile.Tile)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::ExtensionSet _extensions_;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::vector_tile::Tile_Layer > layers_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_vector_5ftile_2eproto;
};
// ===================================================================


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

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

// optional string string_value = 1;
inline bool Tile_Value::_internal_has_string_value() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool Tile_Value::has_string_value() const {
  return _internal_has_string_value();
}
inline void Tile_Value::clear_string_value() {
  string_value_.ClearToEmpty();
  _has_bits_[0] &= ~0x00000001u;
}
inline const std::string& Tile_Value::string_value() const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Value.string_value)
  return _internal_string_value();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void Tile_Value::set_string_value(ArgT0&& arg0, ArgT... args) {
 _has_bits_[0] |= 0x00000001u;
 string_value_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Value.string_value)
}
inline std::string* Tile_Value::mutable_string_value() {
  std::string* _s = _internal_mutable_string_value();
  // @@protoc_insertion_point(field_mutable:vector_tile.Tile.Value.string_value)
  return _s;
}
inline const std::string& Tile_Value::_internal_string_value() const {
  return string_value_.Get();
}
inline void Tile_Value::_internal_set_string_value(const std::string& value) {
  _has_bits_[0] |= 0x00000001u;
  string_value_.Set(value, GetArenaForAllocation());
}
inline std::string* Tile_Value::_internal_mutable_string_value() {
  _has_bits_[0] |= 0x00000001u;
  return string_value_.Mutable(GetArenaForAllocation());
}
inline std::string* Tile_Value::release_string_value() {
  // @@protoc_insertion_point(field_release:vector_tile.Tile.Value.string_value)
  if (!_internal_has_string_value()) {
    return nullptr;
  }
  _has_bits_[0] &= ~0x00000001u;
  auto* p = string_value_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (string_value_.IsDefault()) {
    string_value_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void Tile_Value::set_allocated_string_value(std::string* string_value) {
  if (string_value != nullptr) {
    _has_bits_[0] |= 0x00000001u;
  } else {
    _has_bits_[0] &= ~0x00000001u;
  }
  string_value_.SetAllocated(string_value, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (string_value_.IsDefault()) {
    string_value_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:vector_tile.Tile.Value.string_value)
}

// optional float float_value = 2;
inline bool Tile_Value::_internal_has_float_value() const {
  bool value = (_has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline bool Tile_Value::has_float_value() const {
  return _internal_has_float_value();
}
inline void Tile_Value::clear_float_value() {
  float_value_ = 0;
  _has_bits_[0] &= ~0x00000008u;
}
inline float Tile_Value::_internal_float_value() const {
  return float_value_;
}
inline float Tile_Value::float_value() const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Value.float_value)
  return _internal_float_value();
}
inline void Tile_Value::_internal_set_float_value(float value) {
  _has_bits_[0] |= 0x00000008u;
  float_value_ = value;
}
inline void Tile_Value::set_float_value(float value) {
  _internal_set_float_value(value);
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Value.float_value)
}

// optional double double_value = 3;
inline bool Tile_Value::_internal_has_double_value() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool Tile_Value::has_double_value() const {
  return _internal_has_double_value();
}
inline void Tile_Value::clear_double_value() {
  double_value_ = 0;
  _has_bits_[0] &= ~0x00000002u;
}
inline double Tile_Value::_internal_double_value() const {
  return double_value_;
}
inline double Tile_Value::double_value() const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Value.double_value)
  return _internal_double_value();
}
inline void Tile_Value::_internal_set_double_value(double value) {
  _has_bits_[0] |= 0x00000002u;
  double_value_ = value;
}
inline void Tile_Value::set_double_value(double value) {
  _internal_set_double_value(value);
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Value.double_value)
}

// optional int64 int_value = 4;
inline bool Tile_Value::_internal_has_int_value() const {
  bool value = (_has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool Tile_Value::has_int_value() const {
  return _internal_has_int_value();
}
inline void Tile_Value::clear_int_value() {
  int_value_ = int64_t{0};
  _has_bits_[0] &= ~0x00000004u;
}
inline int64_t Tile_Value::_internal_int_value() const {
  return int_value_;
}
inline int64_t Tile_Value::int_value() const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Value.int_value)
  return _internal_int_value();
}
inline void Tile_Value::_internal_set_int_value(int64_t value) {
  _has_bits_[0] |= 0x00000004u;
  int_value_ = value;
}
inline void Tile_Value::set_int_value(int64_t value) {
  _internal_set_int_value(value);
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Value.int_value)
}

// optional uint64 uint_value = 5;
inline bool Tile_Value::_internal_has_uint_value() const {
  bool value = (_has_bits_[0] & 0x00000020u) != 0;
  return value;
}
inline bool Tile_Value::has_uint_value() const {
  return _internal_has_uint_value();
}
inline void Tile_Value::clear_uint_value() {
  uint_value_ = uint64_t{0u};
  _has_bits_[0] &= ~0x00000020u;
}
inline uint64_t Tile_Value::_internal_uint_value() const {
  return uint_value_;
}
inline uint64_t Tile_Value::uint_value() const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Value.uint_value)
  return _internal_uint_value();
}
inline void Tile_Value::_internal_set_uint_value(uint64_t value) {
  _has_bits_[0] |= 0x00000020u;
  uint_value_ = value;
}
inline void Tile_Value::set_uint_value(uint64_t value) {
  _internal_set_uint_value(value);
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Value.uint_value)
}

// optional sint64 sint_value = 6;
inline bool Tile_Value::_internal_has_sint_value() const {
  bool value = (_has_bits_[0] & 0x00000040u) != 0;
  return value;
}
inline bool Tile_Value::has_sint_value() const {
  return _internal_has_sint_value();
}
inline void Tile_Value::clear_sint_value() {
  sint_value_ = int64_t{0};
  _has_bits_[0] &= ~0x00000040u;
}
inline int64_t Tile_Value::_internal_sint_value() const {
  return sint_value_;
}
inline int64_t Tile_Value::sint_value() const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Value.sint_value)
  return _internal_sint_value();
}
inline void Tile_Value::_internal_set_sint_value(int64_t value) {
  _has_bits_[0] |= 0x00000040u;
  sint_value_ = value;
}
inline void Tile_Value::set_sint_value(int64_t value) {
  _internal_set_sint_value(value);
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Value.sint_value)
}

// optional bool bool_value = 7;
inline bool Tile_Value::_internal_has_bool_value() const {
  bool value = (_has_bits_[0] & 0x00000010u) != 0;
  return value;
}
inline bool Tile_Value::has_bool_value() const {
  return _internal_has_bool_value();
}
inline void Tile_Value::clear_bool_value() {
  bool_value_ = false;
  _has_bits_[0] &= ~0x00000010u;
}
inline bool Tile_Value::_internal_bool_value() const {
  return bool_value_;
}
inline bool Tile_Value::bool_value() const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Value.bool_value)
  return _internal_bool_value();
}
inline void Tile_Value::_internal_set_bool_value(bool value) {
  _has_bits_[0] |= 0x00000010u;
  bool_value_ = value;
}
inline void Tile_Value::set_bool_value(bool value) {
  _internal_set_bool_value(value);
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Value.bool_value)
}

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

// Tile_Feature

// optional uint64 id = 1 [default = 0];
inline bool Tile_Feature::_internal_has_id() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool Tile_Feature::has_id() const {
  return _internal_has_id();
}
inline void Tile_Feature::clear_id() {
  id_ = uint64_t{0u};
  _has_bits_[0] &= ~0x00000001u;
}
inline uint64_t Tile_Feature::_internal_id() const {
  return id_;
}
inline uint64_t Tile_Feature::id() const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Feature.id)
  return _internal_id();
}
inline void Tile_Feature::_internal_set_id(uint64_t value) {
  _has_bits_[0] |= 0x00000001u;
  id_ = value;
}
inline void Tile_Feature::set_id(uint64_t value) {
  _internal_set_id(value);
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Feature.id)
}

// repeated uint32 tags = 2 [packed = true];
inline int Tile_Feature::_internal_tags_size() const {
  return tags_.size();
}
inline int Tile_Feature::tags_size() const {
  return _internal_tags_size();
}
inline void Tile_Feature::clear_tags() {
  tags_.Clear();
}
inline uint32_t Tile_Feature::_internal_tags(int index) const {
  return tags_.Get(index);
}
inline uint32_t Tile_Feature::tags(int index) const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Feature.tags)
  return _internal_tags(index);
}
inline void Tile_Feature::set_tags(int index, uint32_t value) {
  tags_.Set(index, value);
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Feature.tags)
}
inline void Tile_Feature::_internal_add_tags(uint32_t value) {
  tags_.Add(value);
}
inline void Tile_Feature::add_tags(uint32_t value) {
  _internal_add_tags(value);
  // @@protoc_insertion_point(field_add:vector_tile.Tile.Feature.tags)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
Tile_Feature::_internal_tags() const {
  return tags_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
Tile_Feature::tags() const {
  // @@protoc_insertion_point(field_list:vector_tile.Tile.Feature.tags)
  return _internal_tags();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
Tile_Feature::_internal_mutable_tags() {
  return &tags_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
Tile_Feature::mutable_tags() {
  // @@protoc_insertion_point(field_mutable_list:vector_tile.Tile.Feature.tags)
  return _internal_mutable_tags();
}

// optional .vector_tile.Tile.GeomType type = 3 [default = UNKNOWN];
inline bool Tile_Feature::_internal_has_type() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool Tile_Feature::has_type() const {
  return _internal_has_type();
}
inline void Tile_Feature::clear_type() {
  type_ = 0;
  _has_bits_[0] &= ~0x00000002u;
}
inline ::vector_tile::Tile_GeomType Tile_Feature::_internal_type() const {
  return static_cast< ::vector_tile::Tile_GeomType >(type_);
}
inline ::vector_tile::Tile_GeomType Tile_Feature::type() const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Feature.type)
  return _internal_type();
}
inline void Tile_Feature::_internal_set_type(::vector_tile::Tile_GeomType value) {
  assert(::vector_tile::Tile_GeomType_IsValid(value));
  _has_bits_[0] |= 0x00000002u;
  type_ = value;
}
inline void Tile_Feature::set_type(::vector_tile::Tile_GeomType value) {
  _internal_set_type(value);
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Feature.type)
}

// repeated uint32 geometry = 4 [packed = true];
inline int Tile_Feature::_internal_geometry_size() const {
  return geometry_.size();
}
inline int Tile_Feature::geometry_size() const {
  return _internal_geometry_size();
}
inline void Tile_Feature::clear_geometry() {
  geometry_.Clear();
}
inline uint32_t Tile_Feature::_internal_geometry(int index) const {
  return geometry_.Get(index);
}
inline uint32_t Tile_Feature::geometry(int index) const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Feature.geometry)
  return _internal_geometry(index);
}
inline void Tile_Feature::set_geometry(int index, uint32_t value) {
  geometry_.Set(index, value);
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Feature.geometry)
}
inline void Tile_Feature::_internal_add_geometry(uint32_t value) {
  geometry_.Add(value);
}
inline void Tile_Feature::add_geometry(uint32_t value) {
  _internal_add_geometry(value);
  // @@protoc_insertion_point(field_add:vector_tile.Tile.Feature.geometry)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
Tile_Feature::_internal_geometry() const {
  return geometry_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >&
Tile_Feature::geometry() const {
  // @@protoc_insertion_point(field_list:vector_tile.Tile.Feature.geometry)
  return _internal_geometry();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
Tile_Feature::_internal_mutable_geometry() {
  return &geometry_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint32_t >*
Tile_Feature::mutable_geometry() {
  // @@protoc_insertion_point(field_mutable_list:vector_tile.Tile.Feature.geometry)
  return _internal_mutable_geometry();
}

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

// Tile_Layer

// required uint32 version = 15 [default = 1];
inline bool Tile_Layer::_internal_has_version() const {
  bool value = (_has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool Tile_Layer::has_version() const {
  return _internal_has_version();
}
inline void Tile_Layer::clear_version() {
  version_ = 1u;
  _has_bits_[0] &= ~0x00000004u;
}
inline uint32_t Tile_Layer::_internal_version() const {
  return version_;
}
inline uint32_t Tile_Layer::version() const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Layer.version)
  return _internal_version();
}
inline void Tile_Layer::_internal_set_version(uint32_t value) {
  _has_bits_[0] |= 0x00000004u;
  version_ = value;
}
inline void Tile_Layer::set_version(uint32_t value) {
  _internal_set_version(value);
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Layer.version)
}

// required string name = 1;
inline bool Tile_Layer::_internal_has_name() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool Tile_Layer::has_name() const {
  return _internal_has_name();
}
inline void Tile_Layer::clear_name() {
  name_.ClearToEmpty();
  _has_bits_[0] &= ~0x00000001u;
}
inline const std::string& Tile_Layer::name() const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Layer.name)
  return _internal_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void Tile_Layer::set_name(ArgT0&& arg0, ArgT... args) {
 _has_bits_[0] |= 0x00000001u;
 name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Layer.name)
}
inline std::string* Tile_Layer::mutable_name() {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:vector_tile.Tile.Layer.name)
  return _s;
}
inline const std::string& Tile_Layer::_internal_name() const {
  return name_.Get();
}
inline void Tile_Layer::_internal_set_name(const std::string& value) {
  _has_bits_[0] |= 0x00000001u;
  name_.Set(value, GetArenaForAllocation());
}
inline std::string* Tile_Layer::_internal_mutable_name() {
  _has_bits_[0] |= 0x00000001u;
  return name_.Mutable(GetArenaForAllocation());
}
inline std::string* Tile_Layer::release_name() {
  // @@protoc_insertion_point(field_release:vector_tile.Tile.Layer.name)
  if (!_internal_has_name()) {
    return nullptr;
  }
  _has_bits_[0] &= ~0x00000001u;
  auto* p = name_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (name_.IsDefault()) {
    name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void Tile_Layer::set_allocated_name(std::string* name) {
  if (name != nullptr) {
    _has_bits_[0] |= 0x00000001u;
  } else {
    _has_bits_[0] &= ~0x00000001u;
  }
  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:vector_tile.Tile.Layer.name)
}

// repeated .vector_tile.Tile.Feature features = 2;
inline int Tile_Layer::_internal_features_size() const {
  return features_.size();
}
inline int Tile_Layer::features_size() const {
  return _internal_features_size();
}
inline void Tile_Layer::clear_features() {
  features_.Clear();
}
inline ::vector_tile::Tile_Feature* Tile_Layer::mutable_features(int index) {
  // @@protoc_insertion_point(field_mutable:vector_tile.Tile.Layer.features)
  return features_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::vector_tile::Tile_Feature >*
Tile_Layer::mutable_features() {
  // @@protoc_insertion_point(field_mutable_list:vector_tile.Tile.Layer.features)
  return &features_;
}
inline const ::vector_tile::Tile_Feature& Tile_Layer::_internal_features(int index) const {
  return features_.Get(index);
}
inline const ::vector_tile::Tile_Feature& Tile_Layer::features(int index) const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Layer.features)
  return _internal_features(index);
}
inline ::vector_tile::Tile_Feature* Tile_Layer::_internal_add_features() {
  return features_.Add();
}
inline ::vector_tile::Tile_Feature* Tile_Layer::add_features() {
  ::vector_tile::Tile_Feature* _add = _internal_add_features();
  // @@protoc_insertion_point(field_add:vector_tile.Tile.Layer.features)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::vector_tile::Tile_Feature >&
Tile_Layer::features() const {
  // @@protoc_insertion_point(field_list:vector_tile.Tile.Layer.features)
  return features_;
}

// repeated string keys = 3;
inline int Tile_Layer::_internal_keys_size() const {
  return keys_.size();
}
inline int Tile_Layer::keys_size() const {
  return _internal_keys_size();
}
inline void Tile_Layer::clear_keys() {
  keys_.Clear();
}
inline std::string* Tile_Layer::add_keys() {
  std::string* _s = _internal_add_keys();
  // @@protoc_insertion_point(field_add_mutable:vector_tile.Tile.Layer.keys)
  return _s;
}
inline const std::string& Tile_Layer::_internal_keys(int index) const {
  return keys_.Get(index);
}
inline const std::string& Tile_Layer::keys(int index) const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Layer.keys)
  return _internal_keys(index);
}
inline std::string* Tile_Layer::mutable_keys(int index) {
  // @@protoc_insertion_point(field_mutable:vector_tile.Tile.Layer.keys)
  return keys_.Mutable(index);
}
inline void Tile_Layer::set_keys(int index, const std::string& value) {
  keys_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Layer.keys)
}
inline void Tile_Layer::set_keys(int index, std::string&& value) {
  keys_.Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Layer.keys)
}
inline void Tile_Layer::set_keys(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  keys_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:vector_tile.Tile.Layer.keys)
}
inline void Tile_Layer::set_keys(int index, const char* value, size_t size) {
  keys_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:vector_tile.Tile.Layer.keys)
}
inline std::string* Tile_Layer::_internal_add_keys() {
  return keys_.Add();
}
inline void Tile_Layer::add_keys(const std::string& value) {
  keys_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:vector_tile.Tile.Layer.keys)
}
inline void Tile_Layer::add_keys(std::string&& value) {
  keys_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:vector_tile.Tile.Layer.keys)
}
inline void Tile_Layer::add_keys(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  keys_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:vector_tile.Tile.Layer.keys)
}
inline void Tile_Layer::add_keys(const char* value, size_t size) {
  keys_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:vector_tile.Tile.Layer.keys)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
Tile_Layer::keys() const {
  // @@protoc_insertion_point(field_list:vector_tile.Tile.Layer.keys)
  return keys_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
Tile_Layer::mutable_keys() {
  // @@protoc_insertion_point(field_mutable_list:vector_tile.Tile.Layer.keys)
  return &keys_;
}

// repeated .vector_tile.Tile.Value values = 4;
inline int Tile_Layer::_internal_values_size() const {
  return values_.size();
}
inline int Tile_Layer::values_size() const {
  return _internal_values_size();
}
inline void Tile_Layer::clear_values() {
  values_.Clear();
}
inline ::vector_tile::Tile_Value* Tile_Layer::mutable_values(int index) {
  // @@protoc_insertion_point(field_mutable:vector_tile.Tile.Layer.values)
  return values_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::vector_tile::Tile_Value >*
Tile_Layer::mutable_values() {
  // @@protoc_insertion_point(field_mutable_list:vector_tile.Tile.Layer.values)
  return &values_;
}
inline const ::vector_tile::Tile_Value& Tile_Layer::_internal_values(int index) const {
  return values_.Get(index);
}
inline const ::vector_tile::Tile_Value& Tile_Layer::values(int index) const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Layer.values)
  return _internal_values(index);
}
inline ::vector_tile::Tile_Value* Tile_Layer::_internal_add_values() {
  return values_.Add();
}
inline ::vector_tile::Tile_Value* Tile_Layer::add_values() {
  ::vector_tile::Tile_Value* _add = _internal_add_values();
  // @@protoc_insertion_point(field_add:vector_tile.Tile.Layer.values)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::vector_tile::Tile_Value >&
Tile_Layer::values() const {
  // @@protoc_insertion_point(field_list:vector_tile.Tile.Layer.values)
  return values_;
}

// optional uint32 extent = 5 [default = 4096];
inline bool Tile_Layer::_internal_has_extent() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool Tile_Layer::has_extent() const {
  return _internal_has_extent();
}
inline void Tile_Layer::clear_extent() {
  extent_ = 4096u;
  _has_bits_[0] &= ~0x00000002u;
}
inline uint32_t Tile_Layer::_internal_extent() const {
  return extent_;
}
inline uint32_t Tile_Layer::extent() const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.Layer.extent)
  return _internal_extent();
}
inline void Tile_Layer::_internal_set_extent(uint32_t value) {
  _has_bits_[0] |= 0x00000002u;
  extent_ = value;
}
inline void Tile_Layer::set_extent(uint32_t value) {
  _internal_set_extent(value);
  // @@protoc_insertion_point(field_set:vector_tile.Tile.Layer.extent)
}

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

// Tile

// repeated .vector_tile.Tile.Layer layers = 3;
inline int Tile::_internal_layers_size() const {
  return layers_.size();
}
inline int Tile::layers_size() const {
  return _internal_layers_size();
}
inline void Tile::clear_layers() {
  layers_.Clear();
}
inline ::vector_tile::Tile_Layer* Tile::mutable_layers(int index) {
  // @@protoc_insertion_point(field_mutable:vector_tile.Tile.layers)
  return layers_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::vector_tile::Tile_Layer >*
Tile::mutable_layers() {
  // @@protoc_insertion_point(field_mutable_list:vector_tile.Tile.layers)
  return &layers_;
}
inline const ::vector_tile::Tile_Layer& Tile::_internal_layers(int index) const {
  return layers_.Get(index);
}
inline const ::vector_tile::Tile_Layer& Tile::layers(int index) const {
  // @@protoc_insertion_point(field_get:vector_tile.Tile.layers)
  return _internal_layers(index);
}
inline ::vector_tile::Tile_Layer* Tile::_internal_add_layers() {
  return layers_.Add();
}
inline ::vector_tile::Tile_Layer* Tile::add_layers() {
  ::vector_tile::Tile_Layer* _add = _internal_add_layers();
  // @@protoc_insertion_point(field_add:vector_tile.Tile.layers)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::vector_tile::Tile_Layer >&
Tile::layers() const {
  // @@protoc_insertion_point(field_list:vector_tile.Tile.layers)
  return layers_;
}

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace vector_tile

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::vector_tile::Tile_GeomType> : ::std::true_type {};

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

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