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

#ifndef PROTOBUF_TnBuildingModelProto_2eproto__INCLUDED
#define PROTOBUF_TnBuildingModelProto_2eproto__INCLUDED

#include <string>

#include <google/protobuf/stubs/common.h>

#if GOOGLE_PROTOBUF_VERSION < 2004000
#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 2004001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/repeated_field.h>
#include <google/protobuf/extension_set.h>
// @@protoc_insertion_point(includes)

namespace TnBuildingModelProto {

// Internal implementation detail -- do not call these.
void  protobuf_AddDesc_TnBuildingModelProto_2eproto();
void protobuf_AssignDesc_TnBuildingModelProto_2eproto();
void protobuf_ShutdownFile_TnBuildingModelProto_2eproto();

class BuildingModel;
class BuildingFootprint;
class BuildingBlock;
class BuildingBlockRef;
class BuildingBlockList;
class BuildingQuadTree;
class BuildingQuadTrees;

enum eImageType {
  eImageType_PNG = 0,
  eImageType_JPEG = 1
};
bool eImageType_IsValid(int value);
const eImageType eImageType_MIN = eImageType_PNG;
const eImageType eImageType_MAX = eImageType_JPEG;
const int eImageType_ARRAYSIZE = eImageType_MAX + 1;

enum eVertexType {
  eVertexType_XyzIn = 0,
  eVertexType_XyzSt = 1,
  eVertexType_XyzInSt = 2
};
bool eVertexType_IsValid(int value);
const eVertexType eVertexType_MIN = eVertexType_XyzIn;
const eVertexType eVertexType_MAX = eVertexType_XyzInSt;
const int eVertexType_ARRAYSIZE = eVertexType_MAX + 1;

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

class BuildingModel : public ::google::protobuf::MessageLite {
 public:
  BuildingModel();
  virtual ~BuildingModel();
  
  BuildingModel(const BuildingModel& from);
  
  inline BuildingModel& operator=(const BuildingModel& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const BuildingModel& default_instance();
  
  void Swap(BuildingModel* other);
  
  // implements Message ----------------------------------------------
  
  BuildingModel* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const BuildingModel& from);
  void MergeFrom(const BuildingModel& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // optional double lat = 1;
  inline bool has_lat() const;
  inline void clear_lat();
  static const int kLatFieldNumber = 1;
  inline double lat() const;
  inline void set_lat(double value);
  
  // optional double lon = 2;
  inline bool has_lon() const;
  inline void clear_lon();
  static const int kLonFieldNumber = 2;
  inline double lon() const;
  inline void set_lon(double value);
  
  // optional double elevation = 3;
  inline bool has_elevation() const;
  inline void clear_elevation();
  static const int kElevationFieldNumber = 3;
  inline double elevation() const;
  inline void set_elevation(double value);
  
  // optional .TnBuildingModelProto.eImageType imageType = 4 [default = eImageType_PNG];
  inline bool has_imagetype() const;
  inline void clear_imagetype();
  static const int kImageTypeFieldNumber = 4;
  inline TnBuildingModelProto::eImageType imagetype() const;
  inline void set_imagetype(TnBuildingModelProto::eImageType value);
  
  // optional .TnBuildingModelProto.eVertexType vertexType = 5 [default = eVertexType_XyzIn];
  inline bool has_vertextype() const;
  inline void clear_vertextype();
  static const int kVertexTypeFieldNumber = 5;
  inline TnBuildingModelProto::eVertexType vertextype() const;
  inline void set_vertextype(TnBuildingModelProto::eVertexType value);
  
  // repeated float vertexXyz = 6 [packed = true];
  inline int vertexxyz_size() const;
  inline void clear_vertexxyz();
  static const int kVertexXyzFieldNumber = 6;
  inline float vertexxyz(int index) const;
  inline void set_vertexxyz(int index, float value);
  inline void add_vertexxyz(float value);
  inline const ::google::protobuf::RepeatedField< float >&
      vertexxyz() const;
  inline ::google::protobuf::RepeatedField< float >*
      mutable_vertexxyz();
  
  // repeated float vertexSt = 7 [packed = true];
  inline int vertexst_size() const;
  inline void clear_vertexst();
  static const int kVertexStFieldNumber = 7;
  inline float vertexst(int index) const;
  inline void set_vertexst(int index, float value);
  inline void add_vertexst(float value);
  inline const ::google::protobuf::RepeatedField< float >&
      vertexst() const;
  inline ::google::protobuf::RepeatedField< float >*
      mutable_vertexst();
  
  // repeated uint32 vertexColor = 8 [packed = true];
  inline int vertexcolor_size() const;
  inline void clear_vertexcolor();
  static const int kVertexColorFieldNumber = 8;
  inline ::google::protobuf::uint32 vertexcolor(int index) const;
  inline void set_vertexcolor(int index, ::google::protobuf::uint32 value);
  inline void add_vertexcolor(::google::protobuf::uint32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
      vertexcolor() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
      mutable_vertexcolor();
  
  // repeated uint32 vertexIndex = 9 [packed = true];
  inline int vertexindex_size() const;
  inline void clear_vertexindex();
  static const int kVertexIndexFieldNumber = 9;
  inline ::google::protobuf::uint32 vertexindex(int index) const;
  inline void set_vertexindex(int index, ::google::protobuf::uint32 value);
  inline void add_vertexindex(::google::protobuf::uint32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
      vertexindex() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
      mutable_vertexindex();
  
  // optional string texture = 10;
  inline bool has_texture() const;
  inline void clear_texture();
  static const int kTextureFieldNumber = 10;
  inline const ::std::string& texture() const;
  inline void set_texture(const ::std::string& value);
  inline void set_texture(const char* value);
  inline void set_texture(const char* value, size_t size);
  inline ::std::string* mutable_texture();
  inline ::std::string* release_texture();
  
  // @@protoc_insertion_point(class_scope:TnBuildingModelProto.BuildingModel)
 private:
  inline void set_has_lat();
  inline void clear_has_lat();
  inline void set_has_lon();
  inline void clear_has_lon();
  inline void set_has_elevation();
  inline void clear_has_elevation();
  inline void set_has_imagetype();
  inline void clear_has_imagetype();
  inline void set_has_vertextype();
  inline void clear_has_vertextype();
  inline void set_has_texture();
  inline void clear_has_texture();
  
  double lat_;
  double lon_;
  double elevation_;
  int imagetype_;
  int vertextype_;
  ::google::protobuf::RepeatedField< float > vertexxyz_;
  mutable int _vertexxyz_cached_byte_size_;
  ::google::protobuf::RepeatedField< float > vertexst_;
  mutable int _vertexst_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > vertexcolor_;
  mutable int _vertexcolor_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > vertexindex_;
  mutable int _vertexindex_cached_byte_size_;
  ::std::string* texture_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(10 + 31) / 32];
  
  friend void  protobuf_AddDesc_TnBuildingModelProto_2eproto();
  friend void protobuf_AssignDesc_TnBuildingModelProto_2eproto();
  friend void protobuf_ShutdownFile_TnBuildingModelProto_2eproto();
  
  void InitAsDefaultInstance();
  static BuildingModel* default_instance_;
};
// -------------------------------------------------------------------

class BuildingFootprint : public ::google::protobuf::MessageLite {
 public:
  BuildingFootprint();
  virtual ~BuildingFootprint();
  
  BuildingFootprint(const BuildingFootprint& from);
  
  inline BuildingFootprint& operator=(const BuildingFootprint& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const BuildingFootprint& default_instance();
  
  void Swap(BuildingFootprint* other);
  
  // implements Message ----------------------------------------------
  
  BuildingFootprint* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const BuildingFootprint& from);
  void MergeFrom(const BuildingFootprint& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // optional double lat = 1;
  inline bool has_lat() const;
  inline void clear_lat();
  static const int kLatFieldNumber = 1;
  inline double lat() const;
  inline void set_lat(double value);
  
  // optional double lon = 2;
  inline bool has_lon() const;
  inline void clear_lon();
  static const int kLonFieldNumber = 2;
  inline double lon() const;
  inline void set_lon(double value);
  
  // optional double elevation = 3;
  inline bool has_elevation() const;
  inline void clear_elevation();
  static const int kElevationFieldNumber = 3;
  inline double elevation() const;
  inline void set_elevation(double value);
  
  // optional double height = 4;
  inline bool has_height() const;
  inline void clear_height();
  static const int kHeightFieldNumber = 4;
  inline double height() const;
  inline void set_height(double value);
  
  // repeated float vertexXy = 5 [packed = true];
  inline int vertexxy_size() const;
  inline void clear_vertexxy();
  static const int kVertexXyFieldNumber = 5;
  inline float vertexxy(int index) const;
  inline void set_vertexxy(int index, float value);
  inline void add_vertexxy(float value);
  inline const ::google::protobuf::RepeatedField< float >&
      vertexxy() const;
  inline ::google::protobuf::RepeatedField< float >*
      mutable_vertexxy();
  
  // repeated uint32 vertexColor = 6 [packed = true];
  inline int vertexcolor_size() const;
  inline void clear_vertexcolor();
  static const int kVertexColorFieldNumber = 6;
  inline ::google::protobuf::uint32 vertexcolor(int index) const;
  inline void set_vertexcolor(int index, ::google::protobuf::uint32 value);
  inline void add_vertexcolor(::google::protobuf::uint32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
      vertexcolor() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
      mutable_vertexcolor();
  
  // @@protoc_insertion_point(class_scope:TnBuildingModelProto.BuildingFootprint)
 private:
  inline void set_has_lat();
  inline void clear_has_lat();
  inline void set_has_lon();
  inline void clear_has_lon();
  inline void set_has_elevation();
  inline void clear_has_elevation();
  inline void set_has_height();
  inline void clear_has_height();
  
  double lat_;
  double lon_;
  double elevation_;
  double height_;
  ::google::protobuf::RepeatedField< float > vertexxy_;
  mutable int _vertexxy_cached_byte_size_;
  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > vertexcolor_;
  mutable int _vertexcolor_cached_byte_size_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32];
  
  friend void  protobuf_AddDesc_TnBuildingModelProto_2eproto();
  friend void protobuf_AssignDesc_TnBuildingModelProto_2eproto();
  friend void protobuf_ShutdownFile_TnBuildingModelProto_2eproto();
  
  void InitAsDefaultInstance();
  static BuildingFootprint* default_instance_;
};
// -------------------------------------------------------------------

class BuildingBlock : public ::google::protobuf::MessageLite {
 public:
  BuildingBlock();
  virtual ~BuildingBlock();
  
  BuildingBlock(const BuildingBlock& from);
  
  inline BuildingBlock& operator=(const BuildingBlock& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const BuildingBlock& default_instance();
  
  void Swap(BuildingBlock* other);
  
  // implements Message ----------------------------------------------
  
  BuildingBlock* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const BuildingBlock& from);
  void MergeFrom(const BuildingBlock& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // optional int32 version = 1;
  inline bool has_version() const;
  inline void clear_version();
  static const int kVersionFieldNumber = 1;
  inline ::google::protobuf::int32 version() const;
  inline void set_version(::google::protobuf::int32 value);
  
  // repeated .TnBuildingModelProto.BuildingModel models = 2;
  inline int models_size() const;
  inline void clear_models();
  static const int kModelsFieldNumber = 2;
  inline const ::TnBuildingModelProto::BuildingModel& models(int index) const;
  inline ::TnBuildingModelProto::BuildingModel* mutable_models(int index);
  inline ::TnBuildingModelProto::BuildingModel* add_models();
  inline const ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingModel >&
      models() const;
  inline ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingModel >*
      mutable_models();
  
  // repeated .TnBuildingModelProto.BuildingFootprint footprints = 3;
  inline int footprints_size() const;
  inline void clear_footprints();
  static const int kFootprintsFieldNumber = 3;
  inline const ::TnBuildingModelProto::BuildingFootprint& footprints(int index) const;
  inline ::TnBuildingModelProto::BuildingFootprint* mutable_footprints(int index);
  inline ::TnBuildingModelProto::BuildingFootprint* add_footprints();
  inline const ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingFootprint >&
      footprints() const;
  inline ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingFootprint >*
      mutable_footprints();
  
  // @@protoc_insertion_point(class_scope:TnBuildingModelProto.BuildingBlock)
 private:
  inline void set_has_version();
  inline void clear_has_version();
  
  ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingModel > models_;
  ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingFootprint > footprints_;
  ::google::protobuf::int32 version_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
  
  friend void  protobuf_AddDesc_TnBuildingModelProto_2eproto();
  friend void protobuf_AssignDesc_TnBuildingModelProto_2eproto();
  friend void protobuf_ShutdownFile_TnBuildingModelProto_2eproto();
  
  void InitAsDefaultInstance();
  static BuildingBlock* default_instance_;
};
// -------------------------------------------------------------------

class BuildingBlockRef : public ::google::protobuf::MessageLite {
 public:
  BuildingBlockRef();
  virtual ~BuildingBlockRef();
  
  BuildingBlockRef(const BuildingBlockRef& from);
  
  inline BuildingBlockRef& operator=(const BuildingBlockRef& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const BuildingBlockRef& default_instance();
  
  void Swap(BuildingBlockRef* other);
  
  // implements Message ----------------------------------------------
  
  BuildingBlockRef* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const BuildingBlockRef& from);
  void MergeFrom(const BuildingBlockRef& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // optional uint32 depth = 1;
  inline bool has_depth() const;
  inline void clear_depth();
  static const int kDepthFieldNumber = 1;
  inline ::google::protobuf::uint32 depth() const;
  inline void set_depth(::google::protobuf::uint32 value);
  
  // optional uint32 col = 2;
  inline bool has_col() const;
  inline void clear_col();
  static const int kColFieldNumber = 2;
  inline ::google::protobuf::uint32 col() const;
  inline void set_col(::google::protobuf::uint32 value);
  
  // optional uint32 row = 3;
  inline bool has_row() const;
  inline void clear_row();
  static const int kRowFieldNumber = 3;
  inline ::google::protobuf::uint32 row() const;
  inline void set_row(::google::protobuf::uint32 value);
  
  // @@protoc_insertion_point(class_scope:TnBuildingModelProto.BuildingBlockRef)
 private:
  inline void set_has_depth();
  inline void clear_has_depth();
  inline void set_has_col();
  inline void clear_has_col();
  inline void set_has_row();
  inline void clear_has_row();
  
  ::google::protobuf::uint32 depth_;
  ::google::protobuf::uint32 col_;
  ::google::protobuf::uint32 row_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
  
  friend void  protobuf_AddDesc_TnBuildingModelProto_2eproto();
  friend void protobuf_AssignDesc_TnBuildingModelProto_2eproto();
  friend void protobuf_ShutdownFile_TnBuildingModelProto_2eproto();
  
  void InitAsDefaultInstance();
  static BuildingBlockRef* default_instance_;
};
// -------------------------------------------------------------------

class BuildingBlockList : public ::google::protobuf::MessageLite {
 public:
  BuildingBlockList();
  virtual ~BuildingBlockList();
  
  BuildingBlockList(const BuildingBlockList& from);
  
  inline BuildingBlockList& operator=(const BuildingBlockList& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const BuildingBlockList& default_instance();
  
  void Swap(BuildingBlockList* other);
  
  // implements Message ----------------------------------------------
  
  BuildingBlockList* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const BuildingBlockList& from);
  void MergeFrom(const BuildingBlockList& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // optional int32 version = 1;
  inline bool has_version() const;
  inline void clear_version();
  static const int kVersionFieldNumber = 1;
  inline ::google::protobuf::int32 version() const;
  inline void set_version(::google::protobuf::int32 value);
  
  // repeated .TnBuildingModelProto.BuildingBlockRef blockRefs = 2;
  inline int blockrefs_size() const;
  inline void clear_blockrefs();
  static const int kBlockRefsFieldNumber = 2;
  inline const ::TnBuildingModelProto::BuildingBlockRef& blockrefs(int index) const;
  inline ::TnBuildingModelProto::BuildingBlockRef* mutable_blockrefs(int index);
  inline ::TnBuildingModelProto::BuildingBlockRef* add_blockrefs();
  inline const ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingBlockRef >&
      blockrefs() const;
  inline ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingBlockRef >*
      mutable_blockrefs();
  
  // @@protoc_insertion_point(class_scope:TnBuildingModelProto.BuildingBlockList)
 private:
  inline void set_has_version();
  inline void clear_has_version();
  
  ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingBlockRef > blockrefs_;
  ::google::protobuf::int32 version_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
  
  friend void  protobuf_AddDesc_TnBuildingModelProto_2eproto();
  friend void protobuf_AssignDesc_TnBuildingModelProto_2eproto();
  friend void protobuf_ShutdownFile_TnBuildingModelProto_2eproto();
  
  void InitAsDefaultInstance();
  static BuildingBlockList* default_instance_;
};
// -------------------------------------------------------------------

class BuildingQuadTree : public ::google::protobuf::MessageLite {
 public:
  BuildingQuadTree();
  virtual ~BuildingQuadTree();
  
  BuildingQuadTree(const BuildingQuadTree& from);
  
  inline BuildingQuadTree& operator=(const BuildingQuadTree& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const BuildingQuadTree& default_instance();
  
  void Swap(BuildingQuadTree* other);
  
  // implements Message ----------------------------------------------
  
  BuildingQuadTree* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const BuildingQuadTree& from);
  void MergeFrom(const BuildingQuadTree& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // optional .TnBuildingModelProto.BuildingQuadTree child00 = 1;
  inline bool has_child00() const;
  inline void clear_child00();
  static const int kChild00FieldNumber = 1;
  inline const ::TnBuildingModelProto::BuildingQuadTree& child00() const;
  inline ::TnBuildingModelProto::BuildingQuadTree* mutable_child00();
  inline ::TnBuildingModelProto::BuildingQuadTree* release_child00();
  
  // optional .TnBuildingModelProto.BuildingQuadTree child01 = 2;
  inline bool has_child01() const;
  inline void clear_child01();
  static const int kChild01FieldNumber = 2;
  inline const ::TnBuildingModelProto::BuildingQuadTree& child01() const;
  inline ::TnBuildingModelProto::BuildingQuadTree* mutable_child01();
  inline ::TnBuildingModelProto::BuildingQuadTree* release_child01();
  
  // optional .TnBuildingModelProto.BuildingQuadTree child10 = 3;
  inline bool has_child10() const;
  inline void clear_child10();
  static const int kChild10FieldNumber = 3;
  inline const ::TnBuildingModelProto::BuildingQuadTree& child10() const;
  inline ::TnBuildingModelProto::BuildingQuadTree* mutable_child10();
  inline ::TnBuildingModelProto::BuildingQuadTree* release_child10();
  
  // optional .TnBuildingModelProto.BuildingQuadTree child11 = 4;
  inline bool has_child11() const;
  inline void clear_child11();
  static const int kChild11FieldNumber = 4;
  inline const ::TnBuildingModelProto::BuildingQuadTree& child11() const;
  inline ::TnBuildingModelProto::BuildingQuadTree* mutable_child11();
  inline ::TnBuildingModelProto::BuildingQuadTree* release_child11();
  
  // repeated .TnBuildingModelProto.BuildingBlockRef buildingRefs = 5;
  inline int buildingrefs_size() const;
  inline void clear_buildingrefs();
  static const int kBuildingRefsFieldNumber = 5;
  inline const ::TnBuildingModelProto::BuildingBlockRef& buildingrefs(int index) const;
  inline ::TnBuildingModelProto::BuildingBlockRef* mutable_buildingrefs(int index);
  inline ::TnBuildingModelProto::BuildingBlockRef* add_buildingrefs();
  inline const ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingBlockRef >&
      buildingrefs() const;
  inline ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingBlockRef >*
      mutable_buildingrefs();
  
  // @@protoc_insertion_point(class_scope:TnBuildingModelProto.BuildingQuadTree)
 private:
  inline void set_has_child00();
  inline void clear_has_child00();
  inline void set_has_child01();
  inline void clear_has_child01();
  inline void set_has_child10();
  inline void clear_has_child10();
  inline void set_has_child11();
  inline void clear_has_child11();
  
  ::TnBuildingModelProto::BuildingQuadTree* child00_;
  ::TnBuildingModelProto::BuildingQuadTree* child01_;
  ::TnBuildingModelProto::BuildingQuadTree* child10_;
  ::TnBuildingModelProto::BuildingQuadTree* child11_;
  ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingBlockRef > buildingrefs_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
  
  friend void  protobuf_AddDesc_TnBuildingModelProto_2eproto();
  friend void protobuf_AssignDesc_TnBuildingModelProto_2eproto();
  friend void protobuf_ShutdownFile_TnBuildingModelProto_2eproto();
  
  void InitAsDefaultInstance();
  static BuildingQuadTree* default_instance_;
};
// -------------------------------------------------------------------

class BuildingQuadTrees : public ::google::protobuf::MessageLite {
 public:
  BuildingQuadTrees();
  virtual ~BuildingQuadTrees();
  
  BuildingQuadTrees(const BuildingQuadTrees& from);
  
  inline BuildingQuadTrees& operator=(const BuildingQuadTrees& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const BuildingQuadTrees& default_instance();
  
  void Swap(BuildingQuadTrees* other);
  
  // implements Message ----------------------------------------------
  
  BuildingQuadTrees* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const BuildingQuadTrees& from);
  void MergeFrom(const BuildingQuadTrees& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // optional double version = 1;
  inline bool has_version() const;
  inline void clear_version();
  static const int kVersionFieldNumber = 1;
  inline double version() const;
  inline void set_version(double value);
  
  // optional uint32 zoom = 2;
  inline bool has_zoom() const;
  inline void clear_zoom();
  static const int kZoomFieldNumber = 2;
  inline ::google::protobuf::uint32 zoom() const;
  inline void set_zoom(::google::protobuf::uint32 value);
  
  // repeated uint32 xy = 3;
  inline int xy_size() const;
  inline void clear_xy();
  static const int kXyFieldNumber = 3;
  inline ::google::protobuf::uint32 xy(int index) const;
  inline void set_xy(int index, ::google::protobuf::uint32 value);
  inline void add_xy(::google::protobuf::uint32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
      xy() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
      mutable_xy();
  
  // repeated .TnBuildingModelProto.BuildingQuadTree quadTrees = 4;
  inline int quadtrees_size() const;
  inline void clear_quadtrees();
  static const int kQuadTreesFieldNumber = 4;
  inline const ::TnBuildingModelProto::BuildingQuadTree& quadtrees(int index) const;
  inline ::TnBuildingModelProto::BuildingQuadTree* mutable_quadtrees(int index);
  inline ::TnBuildingModelProto::BuildingQuadTree* add_quadtrees();
  inline const ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingQuadTree >&
      quadtrees() const;
  inline ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingQuadTree >*
      mutable_quadtrees();
  
  // @@protoc_insertion_point(class_scope:TnBuildingModelProto.BuildingQuadTrees)
 private:
  inline void set_has_version();
  inline void clear_has_version();
  inline void set_has_zoom();
  inline void clear_has_zoom();
  
  double version_;
  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > xy_;
  ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingQuadTree > quadtrees_;
  ::google::protobuf::uint32 zoom_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
  
  friend void  protobuf_AddDesc_TnBuildingModelProto_2eproto();
  friend void protobuf_AssignDesc_TnBuildingModelProto_2eproto();
  friend void protobuf_ShutdownFile_TnBuildingModelProto_2eproto();
  
  void InitAsDefaultInstance();
  static BuildingQuadTrees* default_instance_;
};
// ===================================================================


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

// BuildingModel

// optional double lat = 1;
inline bool BuildingModel::has_lat() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void BuildingModel::set_has_lat() {
  _has_bits_[0] |= 0x00000001u;
}
inline void BuildingModel::clear_has_lat() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void BuildingModel::clear_lat() {
  lat_ = 0;
  clear_has_lat();
}
inline double BuildingModel::lat() const {
  return lat_;
}
inline void BuildingModel::set_lat(double value) {
  set_has_lat();
  lat_ = value;
}

// optional double lon = 2;
inline bool BuildingModel::has_lon() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void BuildingModel::set_has_lon() {
  _has_bits_[0] |= 0x00000002u;
}
inline void BuildingModel::clear_has_lon() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void BuildingModel::clear_lon() {
  lon_ = 0;
  clear_has_lon();
}
inline double BuildingModel::lon() const {
  return lon_;
}
inline void BuildingModel::set_lon(double value) {
  set_has_lon();
  lon_ = value;
}

// optional double elevation = 3;
inline bool BuildingModel::has_elevation() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void BuildingModel::set_has_elevation() {
  _has_bits_[0] |= 0x00000004u;
}
inline void BuildingModel::clear_has_elevation() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void BuildingModel::clear_elevation() {
  elevation_ = 0;
  clear_has_elevation();
}
inline double BuildingModel::elevation() const {
  return elevation_;
}
inline void BuildingModel::set_elevation(double value) {
  set_has_elevation();
  elevation_ = value;
}

// optional .TnBuildingModelProto.eImageType imageType = 4 [default = eImageType_PNG];
inline bool BuildingModel::has_imagetype() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void BuildingModel::set_has_imagetype() {
  _has_bits_[0] |= 0x00000008u;
}
inline void BuildingModel::clear_has_imagetype() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void BuildingModel::clear_imagetype() {
  imagetype_ = 0;
  clear_has_imagetype();
}
inline TnBuildingModelProto::eImageType BuildingModel::imagetype() const {
  return static_cast< TnBuildingModelProto::eImageType >(imagetype_);
}
inline void BuildingModel::set_imagetype(TnBuildingModelProto::eImageType value) {
  GOOGLE_DCHECK(TnBuildingModelProto::eImageType_IsValid(value));
  set_has_imagetype();
  imagetype_ = value;
}

// optional .TnBuildingModelProto.eVertexType vertexType = 5 [default = eVertexType_XyzIn];
inline bool BuildingModel::has_vertextype() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void BuildingModel::set_has_vertextype() {
  _has_bits_[0] |= 0x00000010u;
}
inline void BuildingModel::clear_has_vertextype() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void BuildingModel::clear_vertextype() {
  vertextype_ = 0;
  clear_has_vertextype();
}
inline TnBuildingModelProto::eVertexType BuildingModel::vertextype() const {
  return static_cast< TnBuildingModelProto::eVertexType >(vertextype_);
}
inline void BuildingModel::set_vertextype(TnBuildingModelProto::eVertexType value) {
  GOOGLE_DCHECK(TnBuildingModelProto::eVertexType_IsValid(value));
  set_has_vertextype();
  vertextype_ = value;
}

// repeated float vertexXyz = 6 [packed = true];
inline int BuildingModel::vertexxyz_size() const {
  return vertexxyz_.size();
}
inline void BuildingModel::clear_vertexxyz() {
  vertexxyz_.Clear();
}
inline float BuildingModel::vertexxyz(int index) const {
  return vertexxyz_.Get(index);
}
inline void BuildingModel::set_vertexxyz(int index, float value) {
  vertexxyz_.Set(index, value);
}
inline void BuildingModel::add_vertexxyz(float value) {
  vertexxyz_.Add(value);
}
inline const ::google::protobuf::RepeatedField< float >&
BuildingModel::vertexxyz() const {
  return vertexxyz_;
}
inline ::google::protobuf::RepeatedField< float >*
BuildingModel::mutable_vertexxyz() {
  return &vertexxyz_;
}

// repeated float vertexSt = 7 [packed = true];
inline int BuildingModel::vertexst_size() const {
  return vertexst_.size();
}
inline void BuildingModel::clear_vertexst() {
  vertexst_.Clear();
}
inline float BuildingModel::vertexst(int index) const {
  return vertexst_.Get(index);
}
inline void BuildingModel::set_vertexst(int index, float value) {
  vertexst_.Set(index, value);
}
inline void BuildingModel::add_vertexst(float value) {
  vertexst_.Add(value);
}
inline const ::google::protobuf::RepeatedField< float >&
BuildingModel::vertexst() const {
  return vertexst_;
}
inline ::google::protobuf::RepeatedField< float >*
BuildingModel::mutable_vertexst() {
  return &vertexst_;
}

// repeated uint32 vertexColor = 8 [packed = true];
inline int BuildingModel::vertexcolor_size() const {
  return vertexcolor_.size();
}
inline void BuildingModel::clear_vertexcolor() {
  vertexcolor_.Clear();
}
inline ::google::protobuf::uint32 BuildingModel::vertexcolor(int index) const {
  return vertexcolor_.Get(index);
}
inline void BuildingModel::set_vertexcolor(int index, ::google::protobuf::uint32 value) {
  vertexcolor_.Set(index, value);
}
inline void BuildingModel::add_vertexcolor(::google::protobuf::uint32 value) {
  vertexcolor_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
BuildingModel::vertexcolor() const {
  return vertexcolor_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
BuildingModel::mutable_vertexcolor() {
  return &vertexcolor_;
}

// repeated uint32 vertexIndex = 9 [packed = true];
inline int BuildingModel::vertexindex_size() const {
  return vertexindex_.size();
}
inline void BuildingModel::clear_vertexindex() {
  vertexindex_.Clear();
}
inline ::google::protobuf::uint32 BuildingModel::vertexindex(int index) const {
  return vertexindex_.Get(index);
}
inline void BuildingModel::set_vertexindex(int index, ::google::protobuf::uint32 value) {
  vertexindex_.Set(index, value);
}
inline void BuildingModel::add_vertexindex(::google::protobuf::uint32 value) {
  vertexindex_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
BuildingModel::vertexindex() const {
  return vertexindex_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
BuildingModel::mutable_vertexindex() {
  return &vertexindex_;
}

// optional string texture = 10;
inline bool BuildingModel::has_texture() const {
  return (_has_bits_[0] & 0x00000200u) != 0;
}
inline void BuildingModel::set_has_texture() {
  _has_bits_[0] |= 0x00000200u;
}
inline void BuildingModel::clear_has_texture() {
  _has_bits_[0] &= ~0x00000200u;
}
inline void BuildingModel::clear_texture() {
  if (texture_ != &::google::protobuf::internal::kEmptyString) {
    texture_->clear();
  }
  clear_has_texture();
}
inline const ::std::string& BuildingModel::texture() const {
  return *texture_;
}
inline void BuildingModel::set_texture(const ::std::string& value) {
  set_has_texture();
  if (texture_ == &::google::protobuf::internal::kEmptyString) {
    texture_ = new ::std::string;
  }
  texture_->assign(value);
}
inline void BuildingModel::set_texture(const char* value) {
  set_has_texture();
  if (texture_ == &::google::protobuf::internal::kEmptyString) {
    texture_ = new ::std::string;
  }
  texture_->assign(value);
}
inline void BuildingModel::set_texture(const char* value, size_t size) {
  set_has_texture();
  if (texture_ == &::google::protobuf::internal::kEmptyString) {
    texture_ = new ::std::string;
  }
  texture_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* BuildingModel::mutable_texture() {
  set_has_texture();
  if (texture_ == &::google::protobuf::internal::kEmptyString) {
    texture_ = new ::std::string;
  }
  return texture_;
}
inline ::std::string* BuildingModel::release_texture() {
  clear_has_texture();
  if (texture_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = texture_;
    texture_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

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

// BuildingFootprint

// optional double lat = 1;
inline bool BuildingFootprint::has_lat() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void BuildingFootprint::set_has_lat() {
  _has_bits_[0] |= 0x00000001u;
}
inline void BuildingFootprint::clear_has_lat() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void BuildingFootprint::clear_lat() {
  lat_ = 0;
  clear_has_lat();
}
inline double BuildingFootprint::lat() const {
  return lat_;
}
inline void BuildingFootprint::set_lat(double value) {
  set_has_lat();
  lat_ = value;
}

// optional double lon = 2;
inline bool BuildingFootprint::has_lon() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void BuildingFootprint::set_has_lon() {
  _has_bits_[0] |= 0x00000002u;
}
inline void BuildingFootprint::clear_has_lon() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void BuildingFootprint::clear_lon() {
  lon_ = 0;
  clear_has_lon();
}
inline double BuildingFootprint::lon() const {
  return lon_;
}
inline void BuildingFootprint::set_lon(double value) {
  set_has_lon();
  lon_ = value;
}

// optional double elevation = 3;
inline bool BuildingFootprint::has_elevation() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void BuildingFootprint::set_has_elevation() {
  _has_bits_[0] |= 0x00000004u;
}
inline void BuildingFootprint::clear_has_elevation() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void BuildingFootprint::clear_elevation() {
  elevation_ = 0;
  clear_has_elevation();
}
inline double BuildingFootprint::elevation() const {
  return elevation_;
}
inline void BuildingFootprint::set_elevation(double value) {
  set_has_elevation();
  elevation_ = value;
}

// optional double height = 4;
inline bool BuildingFootprint::has_height() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void BuildingFootprint::set_has_height() {
  _has_bits_[0] |= 0x00000008u;
}
inline void BuildingFootprint::clear_has_height() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void BuildingFootprint::clear_height() {
  height_ = 0;
  clear_has_height();
}
inline double BuildingFootprint::height() const {
  return height_;
}
inline void BuildingFootprint::set_height(double value) {
  set_has_height();
  height_ = value;
}

// repeated float vertexXy = 5 [packed = true];
inline int BuildingFootprint::vertexxy_size() const {
  return vertexxy_.size();
}
inline void BuildingFootprint::clear_vertexxy() {
  vertexxy_.Clear();
}
inline float BuildingFootprint::vertexxy(int index) const {
  return vertexxy_.Get(index);
}
inline void BuildingFootprint::set_vertexxy(int index, float value) {
  vertexxy_.Set(index, value);
}
inline void BuildingFootprint::add_vertexxy(float value) {
  vertexxy_.Add(value);
}
inline const ::google::protobuf::RepeatedField< float >&
BuildingFootprint::vertexxy() const {
  return vertexxy_;
}
inline ::google::protobuf::RepeatedField< float >*
BuildingFootprint::mutable_vertexxy() {
  return &vertexxy_;
}

// repeated uint32 vertexColor = 6 [packed = true];
inline int BuildingFootprint::vertexcolor_size() const {
  return vertexcolor_.size();
}
inline void BuildingFootprint::clear_vertexcolor() {
  vertexcolor_.Clear();
}
inline ::google::protobuf::uint32 BuildingFootprint::vertexcolor(int index) const {
  return vertexcolor_.Get(index);
}
inline void BuildingFootprint::set_vertexcolor(int index, ::google::protobuf::uint32 value) {
  vertexcolor_.Set(index, value);
}
inline void BuildingFootprint::add_vertexcolor(::google::protobuf::uint32 value) {
  vertexcolor_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
BuildingFootprint::vertexcolor() const {
  return vertexcolor_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
BuildingFootprint::mutable_vertexcolor() {
  return &vertexcolor_;
}

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

// BuildingBlock

// optional int32 version = 1;
inline bool BuildingBlock::has_version() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void BuildingBlock::set_has_version() {
  _has_bits_[0] |= 0x00000001u;
}
inline void BuildingBlock::clear_has_version() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void BuildingBlock::clear_version() {
  version_ = 0;
  clear_has_version();
}
inline ::google::protobuf::int32 BuildingBlock::version() const {
  return version_;
}
inline void BuildingBlock::set_version(::google::protobuf::int32 value) {
  set_has_version();
  version_ = value;
}

// repeated .TnBuildingModelProto.BuildingModel models = 2;
inline int BuildingBlock::models_size() const {
  return models_.size();
}
inline void BuildingBlock::clear_models() {
  models_.Clear();
}
inline const ::TnBuildingModelProto::BuildingModel& BuildingBlock::models(int index) const {
  return models_.Get(index);
}
inline ::TnBuildingModelProto::BuildingModel* BuildingBlock::mutable_models(int index) {
  return models_.Mutable(index);
}
inline ::TnBuildingModelProto::BuildingModel* BuildingBlock::add_models() {
  return models_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingModel >&
BuildingBlock::models() const {
  return models_;
}
inline ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingModel >*
BuildingBlock::mutable_models() {
  return &models_;
}

// repeated .TnBuildingModelProto.BuildingFootprint footprints = 3;
inline int BuildingBlock::footprints_size() const {
  return footprints_.size();
}
inline void BuildingBlock::clear_footprints() {
  footprints_.Clear();
}
inline const ::TnBuildingModelProto::BuildingFootprint& BuildingBlock::footprints(int index) const {
  return footprints_.Get(index);
}
inline ::TnBuildingModelProto::BuildingFootprint* BuildingBlock::mutable_footprints(int index) {
  return footprints_.Mutable(index);
}
inline ::TnBuildingModelProto::BuildingFootprint* BuildingBlock::add_footprints() {
  return footprints_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingFootprint >&
BuildingBlock::footprints() const {
  return footprints_;
}
inline ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingFootprint >*
BuildingBlock::mutable_footprints() {
  return &footprints_;
}

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

// BuildingBlockRef

// optional uint32 depth = 1;
inline bool BuildingBlockRef::has_depth() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void BuildingBlockRef::set_has_depth() {
  _has_bits_[0] |= 0x00000001u;
}
inline void BuildingBlockRef::clear_has_depth() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void BuildingBlockRef::clear_depth() {
  depth_ = 0u;
  clear_has_depth();
}
inline ::google::protobuf::uint32 BuildingBlockRef::depth() const {
  return depth_;
}
inline void BuildingBlockRef::set_depth(::google::protobuf::uint32 value) {
  set_has_depth();
  depth_ = value;
}

// optional uint32 col = 2;
inline bool BuildingBlockRef::has_col() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void BuildingBlockRef::set_has_col() {
  _has_bits_[0] |= 0x00000002u;
}
inline void BuildingBlockRef::clear_has_col() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void BuildingBlockRef::clear_col() {
  col_ = 0u;
  clear_has_col();
}
inline ::google::protobuf::uint32 BuildingBlockRef::col() const {
  return col_;
}
inline void BuildingBlockRef::set_col(::google::protobuf::uint32 value) {
  set_has_col();
  col_ = value;
}

// optional uint32 row = 3;
inline bool BuildingBlockRef::has_row() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void BuildingBlockRef::set_has_row() {
  _has_bits_[0] |= 0x00000004u;
}
inline void BuildingBlockRef::clear_has_row() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void BuildingBlockRef::clear_row() {
  row_ = 0u;
  clear_has_row();
}
inline ::google::protobuf::uint32 BuildingBlockRef::row() const {
  return row_;
}
inline void BuildingBlockRef::set_row(::google::protobuf::uint32 value) {
  set_has_row();
  row_ = value;
}

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

// BuildingBlockList

// optional int32 version = 1;
inline bool BuildingBlockList::has_version() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void BuildingBlockList::set_has_version() {
  _has_bits_[0] |= 0x00000001u;
}
inline void BuildingBlockList::clear_has_version() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void BuildingBlockList::clear_version() {
  version_ = 0;
  clear_has_version();
}
inline ::google::protobuf::int32 BuildingBlockList::version() const {
  return version_;
}
inline void BuildingBlockList::set_version(::google::protobuf::int32 value) {
  set_has_version();
  version_ = value;
}

// repeated .TnBuildingModelProto.BuildingBlockRef blockRefs = 2;
inline int BuildingBlockList::blockrefs_size() const {
  return blockrefs_.size();
}
inline void BuildingBlockList::clear_blockrefs() {
  blockrefs_.Clear();
}
inline const ::TnBuildingModelProto::BuildingBlockRef& BuildingBlockList::blockrefs(int index) const {
  return blockrefs_.Get(index);
}
inline ::TnBuildingModelProto::BuildingBlockRef* BuildingBlockList::mutable_blockrefs(int index) {
  return blockrefs_.Mutable(index);
}
inline ::TnBuildingModelProto::BuildingBlockRef* BuildingBlockList::add_blockrefs() {
  return blockrefs_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingBlockRef >&
BuildingBlockList::blockrefs() const {
  return blockrefs_;
}
inline ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingBlockRef >*
BuildingBlockList::mutable_blockrefs() {
  return &blockrefs_;
}

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

// BuildingQuadTree

// optional .TnBuildingModelProto.BuildingQuadTree child00 = 1;
inline bool BuildingQuadTree::has_child00() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void BuildingQuadTree::set_has_child00() {
  _has_bits_[0] |= 0x00000001u;
}
inline void BuildingQuadTree::clear_has_child00() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void BuildingQuadTree::clear_child00() {
  if (child00_ != NULL) child00_->::TnBuildingModelProto::BuildingQuadTree::Clear();
  clear_has_child00();
}
inline const ::TnBuildingModelProto::BuildingQuadTree& BuildingQuadTree::child00() const {
  return child00_ != NULL ? *child00_ : *default_instance_->child00_;
}
inline ::TnBuildingModelProto::BuildingQuadTree* BuildingQuadTree::mutable_child00() {
  set_has_child00();
  if (child00_ == NULL) child00_ = new ::TnBuildingModelProto::BuildingQuadTree;
  return child00_;
}
inline ::TnBuildingModelProto::BuildingQuadTree* BuildingQuadTree::release_child00() {
  clear_has_child00();
  ::TnBuildingModelProto::BuildingQuadTree* temp = child00_;
  child00_ = NULL;
  return temp;
}

// optional .TnBuildingModelProto.BuildingQuadTree child01 = 2;
inline bool BuildingQuadTree::has_child01() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void BuildingQuadTree::set_has_child01() {
  _has_bits_[0] |= 0x00000002u;
}
inline void BuildingQuadTree::clear_has_child01() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void BuildingQuadTree::clear_child01() {
  if (child01_ != NULL) child01_->::TnBuildingModelProto::BuildingQuadTree::Clear();
  clear_has_child01();
}
inline const ::TnBuildingModelProto::BuildingQuadTree& BuildingQuadTree::child01() const {
  return child01_ != NULL ? *child01_ : *default_instance_->child01_;
}
inline ::TnBuildingModelProto::BuildingQuadTree* BuildingQuadTree::mutable_child01() {
  set_has_child01();
  if (child01_ == NULL) child01_ = new ::TnBuildingModelProto::BuildingQuadTree;
  return child01_;
}
inline ::TnBuildingModelProto::BuildingQuadTree* BuildingQuadTree::release_child01() {
  clear_has_child01();
  ::TnBuildingModelProto::BuildingQuadTree* temp = child01_;
  child01_ = NULL;
  return temp;
}

// optional .TnBuildingModelProto.BuildingQuadTree child10 = 3;
inline bool BuildingQuadTree::has_child10() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void BuildingQuadTree::set_has_child10() {
  _has_bits_[0] |= 0x00000004u;
}
inline void BuildingQuadTree::clear_has_child10() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void BuildingQuadTree::clear_child10() {
  if (child10_ != NULL) child10_->::TnBuildingModelProto::BuildingQuadTree::Clear();
  clear_has_child10();
}
inline const ::TnBuildingModelProto::BuildingQuadTree& BuildingQuadTree::child10() const {
  return child10_ != NULL ? *child10_ : *default_instance_->child10_;
}
inline ::TnBuildingModelProto::BuildingQuadTree* BuildingQuadTree::mutable_child10() {
  set_has_child10();
  if (child10_ == NULL) child10_ = new ::TnBuildingModelProto::BuildingQuadTree;
  return child10_;
}
inline ::TnBuildingModelProto::BuildingQuadTree* BuildingQuadTree::release_child10() {
  clear_has_child10();
  ::TnBuildingModelProto::BuildingQuadTree* temp = child10_;
  child10_ = NULL;
  return temp;
}

// optional .TnBuildingModelProto.BuildingQuadTree child11 = 4;
inline bool BuildingQuadTree::has_child11() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void BuildingQuadTree::set_has_child11() {
  _has_bits_[0] |= 0x00000008u;
}
inline void BuildingQuadTree::clear_has_child11() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void BuildingQuadTree::clear_child11() {
  if (child11_ != NULL) child11_->::TnBuildingModelProto::BuildingQuadTree::Clear();
  clear_has_child11();
}
inline const ::TnBuildingModelProto::BuildingQuadTree& BuildingQuadTree::child11() const {
  return child11_ != NULL ? *child11_ : *default_instance_->child11_;
}
inline ::TnBuildingModelProto::BuildingQuadTree* BuildingQuadTree::mutable_child11() {
  set_has_child11();
  if (child11_ == NULL) child11_ = new ::TnBuildingModelProto::BuildingQuadTree;
  return child11_;
}
inline ::TnBuildingModelProto::BuildingQuadTree* BuildingQuadTree::release_child11() {
  clear_has_child11();
  ::TnBuildingModelProto::BuildingQuadTree* temp = child11_;
  child11_ = NULL;
  return temp;
}

// repeated .TnBuildingModelProto.BuildingBlockRef buildingRefs = 5;
inline int BuildingQuadTree::buildingrefs_size() const {
  return buildingrefs_.size();
}
inline void BuildingQuadTree::clear_buildingrefs() {
  buildingrefs_.Clear();
}
inline const ::TnBuildingModelProto::BuildingBlockRef& BuildingQuadTree::buildingrefs(int index) const {
  return buildingrefs_.Get(index);
}
inline ::TnBuildingModelProto::BuildingBlockRef* BuildingQuadTree::mutable_buildingrefs(int index) {
  return buildingrefs_.Mutable(index);
}
inline ::TnBuildingModelProto::BuildingBlockRef* BuildingQuadTree::add_buildingrefs() {
  return buildingrefs_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingBlockRef >&
BuildingQuadTree::buildingrefs() const {
  return buildingrefs_;
}
inline ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingBlockRef >*
BuildingQuadTree::mutable_buildingrefs() {
  return &buildingrefs_;
}

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

// BuildingQuadTrees

// optional double version = 1;
inline bool BuildingQuadTrees::has_version() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void BuildingQuadTrees::set_has_version() {
  _has_bits_[0] |= 0x00000001u;
}
inline void BuildingQuadTrees::clear_has_version() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void BuildingQuadTrees::clear_version() {
  version_ = 0;
  clear_has_version();
}
inline double BuildingQuadTrees::version() const {
  return version_;
}
inline void BuildingQuadTrees::set_version(double value) {
  set_has_version();
  version_ = value;
}

// optional uint32 zoom = 2;
inline bool BuildingQuadTrees::has_zoom() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void BuildingQuadTrees::set_has_zoom() {
  _has_bits_[0] |= 0x00000002u;
}
inline void BuildingQuadTrees::clear_has_zoom() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void BuildingQuadTrees::clear_zoom() {
  zoom_ = 0u;
  clear_has_zoom();
}
inline ::google::protobuf::uint32 BuildingQuadTrees::zoom() const {
  return zoom_;
}
inline void BuildingQuadTrees::set_zoom(::google::protobuf::uint32 value) {
  set_has_zoom();
  zoom_ = value;
}

// repeated uint32 xy = 3;
inline int BuildingQuadTrees::xy_size() const {
  return xy_.size();
}
inline void BuildingQuadTrees::clear_xy() {
  xy_.Clear();
}
inline ::google::protobuf::uint32 BuildingQuadTrees::xy(int index) const {
  return xy_.Get(index);
}
inline void BuildingQuadTrees::set_xy(int index, ::google::protobuf::uint32 value) {
  xy_.Set(index, value);
}
inline void BuildingQuadTrees::add_xy(::google::protobuf::uint32 value) {
  xy_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
BuildingQuadTrees::xy() const {
  return xy_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
BuildingQuadTrees::mutable_xy() {
  return &xy_;
}

// repeated .TnBuildingModelProto.BuildingQuadTree quadTrees = 4;
inline int BuildingQuadTrees::quadtrees_size() const {
  return quadtrees_.size();
}
inline void BuildingQuadTrees::clear_quadtrees() {
  quadtrees_.Clear();
}
inline const ::TnBuildingModelProto::BuildingQuadTree& BuildingQuadTrees::quadtrees(int index) const {
  return quadtrees_.Get(index);
}
inline ::TnBuildingModelProto::BuildingQuadTree* BuildingQuadTrees::mutable_quadtrees(int index) {
  return quadtrees_.Mutable(index);
}
inline ::TnBuildingModelProto::BuildingQuadTree* BuildingQuadTrees::add_quadtrees() {
  return quadtrees_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingQuadTree >&
BuildingQuadTrees::quadtrees() const {
  return quadtrees_;
}
inline ::google::protobuf::RepeatedPtrField< ::TnBuildingModelProto::BuildingQuadTree >*
BuildingQuadTrees::mutable_quadtrees() {
  return &quadtrees_;
}


// @@protoc_insertion_point(namespace_scope)

}  // namespace TnBuildingModelProto

// @@protoc_insertion_point(global_scope)

#endif  // PROTOBUF_TnBuildingModelProto_2eproto__INCLUDED
