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

#ifndef PROTOBUF_map_2edirections_2eproto__INCLUDED
#define PROTOBUF_map_2edirections_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>
#include "services.pb.h"
#include "common.pb.h"
#include "map.common.pb.h"
// @@protoc_insertion_point(includes)

namespace com {
namespace telenav {
namespace proto {
namespace map {
namespace v4 {

// Internal implementation detail -- do not call these.
void  protobuf_AddDesc_map_2edirections_2eproto();
void protobuf_AssignDesc_map_2edirections_2eproto();
void protobuf_ShutdownFile_map_2edirections_2eproto();

class RouteRequest;
class RouteOption;
class Location;
class OutputOption;
class GuidanceRequest;
class BasicRouteResponse;
class RouteResponse;
class FindMeRequest;
class FindMeResponse;
class SystemInfoResponse;
class GpsFix;
class Candidate;
class BasicRoute;
class BasicPath;
class EndPointStatus;
class Route;
class RouteInfo;
class Path;
class GuidanceSegment;
class Name;
class RoadName;
class SegmentRoadName;
class SignPost;
class SignBoard;
class AdminNameInfo;
class RawSignpostRecord;
class EdgeExtraInfo;
class Edge;
class LaneInfo;
class JunctionView;
class TurnInfo;

enum AdminNameInfo_AdminSide {
  AdminNameInfo_AdminSide_ON_LEFT = 0,
  AdminNameInfo_AdminSide_ON_RIGHT = 1,
  AdminNameInfo_AdminSide_ON_BOTH = 2,
  AdminNameInfo_AdminSide_ON_NONE = 3
};
bool AdminNameInfo_AdminSide_IsValid(int value);
const AdminNameInfo_AdminSide AdminNameInfo_AdminSide_AdminSide_MIN = AdminNameInfo_AdminSide_ON_LEFT;
const AdminNameInfo_AdminSide AdminNameInfo_AdminSide_AdminSide_MAX = AdminNameInfo_AdminSide_ON_NONE;
const int AdminNameInfo_AdminSide_AdminSide_ARRAYSIZE = AdminNameInfo_AdminSide_AdminSide_MAX + 1;

enum RouteStyle {
  FASTEST = 1,
  SHORTEST = 2,
  PEDESTRIAN = 3,
  ECO = 4
};
bool RouteStyle_IsValid(int value);
const RouteStyle RouteStyle_MIN = FASTEST;
const RouteStyle RouteStyle_MAX = ECO;
const int RouteStyle_ARRAYSIZE = RouteStyle_MAX + 1;

enum EcoMode {
  LOW_ECO_MODE = 1,
  MEDIUM_ECO_MODE = 2,
  HIGH_ECO_MODE = 3
};
bool EcoMode_IsValid(int value);
const EcoMode EcoMode_MIN = LOW_ECO_MODE;
const EcoMode EcoMode_MAX = HIGH_ECO_MODE;
const int EcoMode_ARRAYSIZE = EcoMode_MAX + 1;

enum PointMatchResult {
  POINT_NOT_MOVE = 0,
  POINT_MOVE_DUE_TO_TIME_RESTRICTION = 1,
  POINT_MOVE_DUE_TO_WALKWAY = 2
};
bool PointMatchResult_IsValid(int value);
const PointMatchResult PointMatchResult_MIN = POINT_NOT_MOVE;
const PointMatchResult PointMatchResult_MAX = POINT_MOVE_DUE_TO_WALKWAY;
const int PointMatchResult_ARRAYSIZE = PointMatchResult_MAX + 1;

enum LocationMatchResult {
  LOCATION_NOT_MATCH = 0,
  LOCATION_MATCH_STREETNAME = 1,
  LOCATION_MATCH_DOORNUMBER = 2
};
bool LocationMatchResult_IsValid(int value);
const LocationMatchResult LocationMatchResult_MIN = LOCATION_NOT_MATCH;
const LocationMatchResult LocationMatchResult_MAX = LOCATION_MATCH_DOORNUMBER;
const int LocationMatchResult_ARRAYSIZE = LocationMatchResult_MAX + 1;

enum SignBoardType {
  SIGN_AS_REAL = 1,
  GENERIC_MOTOWAY_SIGNBOARD = 2,
  GRAPHIC_SIGNBOARD = 3
};
bool SignBoardType_IsValid(int value);
const SignBoardType SignBoardType_MIN = SIGN_AS_REAL;
const SignBoardType SignBoardType_MAX = GRAPHIC_SIGNBOARD;
const int SignBoardType_ARRAYSIZE = SignBoardType_MAX + 1;

enum EdgeForkType {
  EDGE_FORK_NONE = 0,
  EDGE_FORK_ON_BEGIN = 1,
  EDGE_FORK_ON_END = 2,
  EDGE_FORK_ON_BOTH = 3
};
bool EdgeForkType_IsValid(int value);
const EdgeForkType EdgeForkType_MIN = EDGE_FORK_NONE;
const EdgeForkType EdgeForkType_MAX = EDGE_FORK_ON_BOTH;
const int EdgeForkType_ARRAYSIZE = EdgeForkType_MAX + 1;

enum EdgeExitEndType {
  EXIT_END_NONE = 0,
  EXIT_END_ON_LEFT = 1,
  EXIT_END_ON_RIGHT = 2,
  EXIT_END_ON_BOTH = 3
};
bool EdgeExitEndType_IsValid(int value);
const EdgeExitEndType EdgeExitEndType_MIN = EXIT_END_NONE;
const EdgeExitEndType EdgeExitEndType_MAX = EXIT_END_ON_BOTH;
const int EdgeExitEndType_ARRAYSIZE = EdgeExitEndType_MAX + 1;

enum EdgeRestrictedConnectionType {
  RESTRICTED_CONNECTION_PAINTED_DIVIDED_JUNCTION = 0,
  RESTRICTED_CONNECTION_PHYSICAL_DIVIDED_JUNCTION = 1,
  RESTRICTED_CONNECTION_TRAFFIC_LEGAL = 2,
  RESTRICTED_CONNECTION_PHSICAL_BARRIER = 3,
  RESTRICTED_CONNECTION_LOGICAL = 4,
  RESTRICTED_CONNECTION_GATE_KEY_ACCESS = 5,
  RESTRICTED_CONNECTION_GATE_PERMISSION_REQUIRED = 6,
  RESTRICTED_CONNECTION_GATE_EMERGENCY_ACCESS = 7,
  RESTRICTED_CONNECTION_GATE_U_TURN = 8,
  RESTRICTED_CONNECTION_BP_KEY_ACCESS = 9,
  RESTRICTED_CONNECTION_BP_PERMISSION_REQUIRED = 10,
  RESTRICTED_CONNECTION_BP_EMERGENCY_ACCESS = 11,
  RESTRICTED_CONNECTION_BP_UNREMOVABLE = 12,
  RESTRICTED_CONNECTION_ONE_WAY = 13,
  RESTRICTED_CONNECTION_UTURN_PERMIT = 14,
  RESTRICTED_CONNECTION_OK = 15,
  RESTRICTED_CONNECTION_EDGE_RESTRICTION = 16
};
bool EdgeRestrictedConnectionType_IsValid(int value);
const EdgeRestrictedConnectionType EdgeRestrictedConnectionType_MIN = RESTRICTED_CONNECTION_PAINTED_DIVIDED_JUNCTION;
const EdgeRestrictedConnectionType EdgeRestrictedConnectionType_MAX = RESTRICTED_CONNECTION_EDGE_RESTRICTION;
const int EdgeRestrictedConnectionType_ARRAYSIZE = EdgeRestrictedConnectionType_MAX + 1;

enum EdgeGradeCategory {
  EDGE_GRADE_CATEGORY_NOT_COLLECT = 0,
  EDGE_GRADE_CATEGROY_UP = 1,
  EDGE_GRADE_CATEGROY_UNKNOWN = 2,
  EDGE_GRADE_CATEGROY_DOWN = 3
};
bool EdgeGradeCategory_IsValid(int value);
const EdgeGradeCategory EdgeGradeCategory_MIN = EDGE_GRADE_CATEGORY_NOT_COLLECT;
const EdgeGradeCategory EdgeGradeCategory_MAX = EDGE_GRADE_CATEGROY_DOWN;
const int EdgeGradeCategory_ARRAYSIZE = EdgeGradeCategory_MAX + 1;

enum EdgeTrafficSingal {
  EDGE_TRAFFIC_SIGNAL_UNKNOWN = 0,
  EDGE_TRAFFIC_SIGNAL_RIGHT = 1,
  EDGE_TRAFFIC_SIGNAL_LEFT = 2,
  EDGE_TRAFFIC_SIGNAL_OVERHEAD = 3,
  EDGE_TRAFFIC_SIGNAL_NONE = 4
};
bool EdgeTrafficSingal_IsValid(int value);
const EdgeTrafficSingal EdgeTrafficSingal_MIN = EDGE_TRAFFIC_SIGNAL_UNKNOWN;
const EdgeTrafficSingal EdgeTrafficSingal_MAX = EDGE_TRAFFIC_SIGNAL_NONE;
const int EdgeTrafficSingal_ARRAYSIZE = EdgeTrafficSingal_MAX + 1;

enum RawRoadType {
  RAW_HIGHWAY = 0,
  RAW_URBAN_HIGHWAY = 1,
  RAW_NATIONAL_ROAD = 2,
  RAW_MAIN_DISTRICT_ROAD = 3,
  RAW_LOCAL_ROAD = 4,
  RAW_FRONTAGE = 5,
  RAW_LOW_SPEED_ROAD = 6,
  RAW_PRIVATE_ROAD = 7,
  RAW_WALKWAY = 8,
  RAW_NON_NAVIGABLE = 9,
  RAW_SHIP_FERRY = 10,
  RAW_TRAIN_FERRY = 11,
  RAW_PUBLIC_VEHICLE = 12,
  RAW_CARPOOL_LANE = 13,
  RAW_LAYOUT = 14,
  RAW_RESERVED_ROAD = 15
};
bool RawRoadType_IsValid(int value);
const RawRoadType RawRoadType_MIN = RAW_HIGHWAY;
const RawRoadType RawRoadType_MAX = RAW_RESERVED_ROAD;
const int RawRoadType_ARRAYSIZE = RawRoadType_MAX + 1;

enum RawRoadSubType {
  RAW_SUB_TYPE_TRAFFIC_CIRCLE = 0,
  RAW_SUB_TYPE_MAIN_ROAD_NO_SEP = 1,
  RAW_SUB_TYPE_MAIN_ROAD_SEP = 2,
  RAW_SUB_TYPE_CONNECTION_ROAD = 3,
  RAW_SUB_TYPE_JUNCTION = 4,
  RAW_SUB_TYPE_RAMP = 5,
  RAW_SUB_TYPE_SERVICE_ROAD = 6,
  RAW_SUB_TYPE_SA_SERVICE_ROAD_LINK = 7,
  RAW_SUB_TYPE_OVER_BRIDGE = 9,
  RAW_SUB_TYPE_UNDERPASS = 10,
  RAW_SUB_TYPE_TUNNEL = 11,
  RAW_SUB_TYPE_BRIDGE = 12
};
bool RawRoadSubType_IsValid(int value);
const RawRoadSubType RawRoadSubType_MIN = RAW_SUB_TYPE_TRAFFIC_CIRCLE;
const RawRoadSubType RawRoadSubType_MAX = RAW_SUB_TYPE_BRIDGE;
const int RawRoadSubType_ARRAYSIZE = RawRoadSubType_MAX + 1;

enum RawSignpostCategory {
  SIGNPOST_CATEGORY_UNKNOWN = 0,
  SIGNPOST_CATEGORY_TOWARD = 1,
  SIGNPOST_CATEGORY_BRANCH = 2
};
bool RawSignpostCategory_IsValid(int value);
const RawSignpostCategory RawSignpostCategory_MIN = SIGNPOST_CATEGORY_UNKNOWN;
const RawSignpostCategory RawSignpostCategory_MAX = SIGNPOST_CATEGORY_BRANCH;
const int RawSignpostCategory_ARRAYSIZE = RawSignpostCategory_MAX + 1;

enum RawNameCategory {
  NAME_CATEGORY_OFFICAL = 0,
  NAME_CATEGORY_ALLIAS = 1,
  NAME_CATEGORY_ROAD_NUMBER = 2,
  NAME_CATEGORY_EXIT = 3,
  NAME_CATEGORY_ROUNDABOUT_EXIT = 4,
  NAME_CATEGORY_PLACE = 5,
  NAME_CATEGORY_OTHER = 6
};
bool RawNameCategory_IsValid(int value);
const RawNameCategory RawNameCategory_MIN = NAME_CATEGORY_OFFICAL;
const RawNameCategory RawNameCategory_MAX = NAME_CATEGORY_OTHER;
const int RawNameCategory_ARRAYSIZE = RawNameCategory_MAX + 1;

enum RawNameSubCategory {
  NAME_SUBCATEGORY_GENERAL = 0,
  NAME_SUBCATEGORY_BRIDGE = 1,
  NAME_SUBCATEGORY_TUNNEL = 2,
  NAME_SUBCATEGORY_SERVICE = 4,
  NAME_SUBCATEGORY_TOLL = 8
};
bool RawNameSubCategory_IsValid(int value);
const RawNameSubCategory RawNameSubCategory_MIN = NAME_SUBCATEGORY_GENERAL;
const RawNameSubCategory RawNameSubCategory_MAX = NAME_SUBCATEGORY_TOLL;
const int RawNameSubCategory_ARRAYSIZE = RawNameSubCategory_MAX + 1;

enum LanePattern {
  LP_NONE = 1,
  LP_CONTINUE = 2,
  LP_CONTINUE_AND_LEFT = 3,
  LP_CONTINUE_AND_RIGHT = 4,
  LP_LEFT = 5,
  LP_RIGHT = 6,
  LP_LEFT_UTURN = 7,
  LP_RIGHT_UTURN = 8,
  LP_LEFT_AND_RIGHT = 9,
  LP_LEFT_AND_LEFT_UTURN = 10,
  LP_RIGHT_AND_RIGHT_UTURN = 11,
  LP_CONTINUE_AND_LEFT_AND_RIGHT = 12
};
bool LanePattern_IsValid(int value);
const LanePattern LanePattern_MIN = LP_NONE;
const LanePattern LanePattern_MAX = LP_CONTINUE_AND_LEFT_AND_RIGHT;
const int LanePattern_ARRAYSIZE = LanePattern_MAX + 1;

enum JunctionViewType {
  ENHANCED_JUNCTION_VIEW = 1,
  GENERIC_JUNCTION_VIEW = 2,
  BASIC_JUNCTION_VIEW = 3,
  HCG_JUNCTION_VIEW = 4,
  HEG_JUNCTION_VIEW = 5,
  UCG_JUNCTION_VIEW = 6
};
bool JunctionViewType_IsValid(int value);
const JunctionViewType JunctionViewType_MIN = ENHANCED_JUNCTION_VIEW;
const JunctionViewType JunctionViewType_MAX = UCG_JUNCTION_VIEW;
const int JunctionViewType_ARRAYSIZE = JunctionViewType_MAX + 1;

enum HighlightedLane {
  HIGHLIGHT_NONE = 1,
  HIGHLIGHT_CONTINUE = 2,
  HIGHLIGHT_LEFT = 3,
  HIGHLIGHT_RIGHT = 4,
  HIGHLIGHT_LEFT_UTURN = 5,
  HIGHLIGHT_RIGHT_UTURN = 6
};
bool HighlightedLane_IsValid(int value);
const HighlightedLane HighlightedLane_MIN = HIGHLIGHT_NONE;
const HighlightedLane HighlightedLane_MAX = HIGHLIGHT_RIGHT_UTURN;
const int HighlightedLane_ARRAYSIZE = HighlightedLane_MAX + 1;

enum TurnType {
  CONTINUE = 0,
  TURN_SLIGHT_RIGHT = 1,
  TURN_RIGHT = 2,
  TURN_HARD_RIGHT = 3,
  RIGHT_U_TURN = 4,
  LEFT_U_TURN = 5,
  TURN_HARD_LEFT = 6,
  TURN_LEFT = 7,
  TURN_SLIGHT_LEFT = 8,
  ENTER_LEFT = 9,
  ENTER_RIGHT = 10,
  ENTER_AHEAD = 11,
  EXIT_LEFT = 12,
  EXIT_RIGHT = 13,
  EXIT_AHEAD = 14,
  MERGE_LEFT = 15,
  MERGE_RIGHT = 16,
  MERGE_AHEAD = 17,
  LOCATION_LEFT = 18,
  LOCATION_RIGHT = 19,
  LOCATION_AHEAD = 20,
  STAY_LEFT = 21,
  STAY_RIGHT = 22,
  STAY_MIDDLE = 23
};
bool TurnType_IsValid(int value);
const TurnType TurnType_MIN = CONTINUE;
const TurnType TurnType_MAX = STAY_MIDDLE;
const int TurnType_ARRAYSIZE = TurnType_MAX + 1;

enum GuidanceRoadType {
  GRT_UNKNOWN = 0,
  GRT_HIGHWAY = 1,
  GRT_ARTERY = 2,
  GRT_LOCAL = 3,
  GRT_PRIVATE = 4,
  GRT_ROUNDABOUT = 5,
  GRT_FERRY = 6,
  GRT_TUNNEL = 7,
  GRT_BRIDGE = 8,
  GRT_RAMP = 9,
  GRT_INTERSECTION = 10
};
bool GuidanceRoadType_IsValid(int value);
const GuidanceRoadType GuidanceRoadType_MIN = GRT_UNKNOWN;
const GuidanceRoadType GuidanceRoadType_MAX = GRT_INTERSECTION;
const int GuidanceRoadType_ARRAYSIZE = GuidanceRoadType_MAX + 1;

enum Warning {
  HAS_HIGHWAY = 1,
  HAS_TOLL = 2,
  HAS_FERRY = 3,
  HAS_HOV = 4,
  HAS_TUNNEL = 5,
  HAS_AVOID_SEGMENT = 6,
  HAS_TIME_RESTRICTION = 7
};
bool Warning_IsValid(int value);
const Warning Warning_MIN = HAS_HIGHWAY;
const Warning Warning_MAX = HAS_TIME_RESTRICTION;
const int Warning_ARRAYSIZE = Warning_MAX + 1;

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

class RouteRequest : public ::google::protobuf::MessageLite {
 public:
  RouteRequest();
  virtual ~RouteRequest();
  
  RouteRequest(const RouteRequest& from);
  
  inline RouteRequest& operator=(const RouteRequest& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const RouteRequest& default_instance();
  
  void Swap(RouteRequest* other);
  
  // implements Message ----------------------------------------------
  
  RouteRequest* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const RouteRequest& from);
  void MergeFrom(const RouteRequest& 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 .com.telenav.proto.map.v4.Location origin = 1;
  inline bool has_origin() const;
  inline void clear_origin();
  static const int kOriginFieldNumber = 1;
  inline const ::com::telenav::proto::map::v4::Location& origin() const;
  inline ::com::telenav::proto::map::v4::Location* mutable_origin();
  inline ::com::telenav::proto::map::v4::Location* release_origin();
  
  // optional .com.telenav.proto.map.v4.Location destination = 2;
  inline bool has_destination() const;
  inline void clear_destination();
  static const int kDestinationFieldNumber = 2;
  inline const ::com::telenav::proto::map::v4::Location& destination() const;
  inline ::com::telenav::proto::map::v4::Location* mutable_destination();
  inline ::com::telenav::proto::map::v4::Location* release_destination();
  
  // optional .com.telenav.proto.map.v4.RouteStyle style = 7 [default = FASTEST];
  inline bool has_style() const;
  inline void clear_style();
  static const int kStyleFieldNumber = 7;
  inline com::telenav::proto::map::v4::RouteStyle style() const;
  inline void set_style(com::telenav::proto::map::v4::RouteStyle value);
  
  // optional .com.telenav.proto.map.v4.RouteOption option = 8;
  inline bool has_option() const;
  inline void clear_option();
  static const int kOptionFieldNumber = 8;
  inline const ::com::telenav::proto::map::v4::RouteOption& option() const;
  inline ::com::telenav::proto::map::v4::RouteOption* mutable_option();
  inline ::com::telenav::proto::map::v4::RouteOption* release_option();
  
  // optional int32 max_route_number = 9 [default = 1];
  inline bool has_max_route_number() const;
  inline void clear_max_route_number();
  static const int kMaxRouteNumberFieldNumber = 9;
  inline ::google::protobuf::int32 max_route_number() const;
  inline void set_max_route_number(::google::protobuf::int32 value);
  
  // optional int32 heading = 10 [default = -1];
  inline bool has_heading() const;
  inline void clear_heading();
  static const int kHeadingFieldNumber = 10;
  inline ::google::protobuf::int32 heading() const;
  inline void set_heading(::google::protobuf::int32 value);
  
  // optional int32 speed_in_mps = 11;
  inline bool has_speed_in_mps() const;
  inline void clear_speed_in_mps();
  static const int kSpeedInMpsFieldNumber = 11;
  inline ::google::protobuf::int32 speed_in_mps() const;
  inline void set_speed_in_mps(::google::protobuf::int32 value);
  
  // repeated .com.telenav.proto.LatLon dest_candidate = 12;
  inline int dest_candidate_size() const;
  inline void clear_dest_candidate();
  static const int kDestCandidateFieldNumber = 12;
  inline const ::com::telenav::proto::LatLon& dest_candidate(int index) const;
  inline ::com::telenav::proto::LatLon* mutable_dest_candidate(int index);
  inline ::com::telenav::proto::LatLon* add_dest_candidate();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::LatLon >&
      dest_candidate() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::LatLon >*
      mutable_dest_candidate();
  
  // optional .com.telenav.proto.map.v4.OutputOption output_option = 13;
  inline bool has_output_option() const;
  inline void clear_output_option();
  static const int kOutputOptionFieldNumber = 13;
  inline const ::com::telenav::proto::map::v4::OutputOption& output_option() const;
  inline ::com::telenav::proto::map::v4::OutputOption* mutable_output_option();
  inline ::com::telenav::proto::map::v4::OutputOption* release_output_option();
  
  // optional int32 deviation_count = 18;
  inline bool has_deviation_count() const;
  inline void clear_deviation_count();
  static const int kDeviationCountFieldNumber = 18;
  inline ::google::protobuf::int32 deviation_count() const;
  inline void set_deviation_count(::google::protobuf::int32 value);
  
  // optional string data_set = 19;
  inline bool has_data_set() const;
  inline void clear_data_set();
  static const int kDataSetFieldNumber = 19;
  inline const ::std::string& data_set() const;
  inline void set_data_set(const ::std::string& value);
  inline void set_data_set(const char* value);
  inline void set_data_set(const char* value, size_t size);
  inline ::std::string* mutable_data_set();
  inline ::std::string* release_data_set();
  
  // optional .com.telenav.proto.Context context = 16;
  inline bool has_context() const;
  inline void clear_context();
  static const int kContextFieldNumber = 16;
  inline const ::com::telenav::proto::Context& context() const;
  inline ::com::telenav::proto::Context* mutable_context();
  inline ::com::telenav::proto::Context* release_context();
  
  // optional int64 route_start_time = 20;
  inline bool has_route_start_time() const;
  inline void clear_route_start_time();
  static const int kRouteStartTimeFieldNumber = 20;
  inline ::google::protobuf::int64 route_start_time() const;
  inline void set_route_start_time(::google::protobuf::int64 value);
  
  // optional bool use_time_restriction_for_road = 21;
  inline bool has_use_time_restriction_for_road() const;
  inline void clear_use_time_restriction_for_road();
  static const int kUseTimeRestrictionForRoadFieldNumber = 21;
  inline bool use_time_restriction_for_road() const;
  inline void set_use_time_restriction_for_road(bool value);
  
  // optional .com.telenav.proto.map.v4.EcoMode eco_mode = 22 [default = HIGH_ECO_MODE];
  inline bool has_eco_mode() const;
  inline void clear_eco_mode();
  static const int kEcoModeFieldNumber = 22;
  inline com::telenav::proto::map::v4::EcoMode eco_mode() const;
  inline void set_eco_mode(com::telenav::proto::map::v4::EcoMode value);
  
  // repeated .com.telenav.proto.map.v4.Location waypoint = 23;
  inline int waypoint_size() const;
  inline void clear_waypoint();
  static const int kWaypointFieldNumber = 23;
  inline const ::com::telenav::proto::map::v4::Location& waypoint(int index) const;
  inline ::com::telenav::proto::map::v4::Location* mutable_waypoint(int index);
  inline ::com::telenav::proto::map::v4::Location* add_waypoint();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Location >&
      waypoint() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Location >*
      mutable_waypoint();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.RouteRequest)
 private:
  inline void set_has_origin();
  inline void clear_has_origin();
  inline void set_has_destination();
  inline void clear_has_destination();
  inline void set_has_style();
  inline void clear_has_style();
  inline void set_has_option();
  inline void clear_has_option();
  inline void set_has_max_route_number();
  inline void clear_has_max_route_number();
  inline void set_has_heading();
  inline void clear_has_heading();
  inline void set_has_speed_in_mps();
  inline void clear_has_speed_in_mps();
  inline void set_has_output_option();
  inline void clear_has_output_option();
  inline void set_has_deviation_count();
  inline void clear_has_deviation_count();
  inline void set_has_data_set();
  inline void clear_has_data_set();
  inline void set_has_context();
  inline void clear_has_context();
  inline void set_has_route_start_time();
  inline void clear_has_route_start_time();
  inline void set_has_use_time_restriction_for_road();
  inline void clear_has_use_time_restriction_for_road();
  inline void set_has_eco_mode();
  inline void clear_has_eco_mode();
  
  ::com::telenav::proto::map::v4::Location* origin_;
  ::com::telenav::proto::map::v4::Location* destination_;
  ::com::telenav::proto::map::v4::RouteOption* option_;
  int style_;
  ::google::protobuf::int32 max_route_number_;
  ::google::protobuf::int32 heading_;
  ::google::protobuf::int32 speed_in_mps_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::LatLon > dest_candidate_;
  ::com::telenav::proto::map::v4::OutputOption* output_option_;
  ::std::string* data_set_;
  ::com::telenav::proto::Context* context_;
  ::google::protobuf::int32 deviation_count_;
  bool use_time_restriction_for_road_;
  ::google::protobuf::int64 route_start_time_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Location > waypoint_;
  int eco_mode_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(16 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static RouteRequest* default_instance_;
};
// -------------------------------------------------------------------

class RouteOption : public ::google::protobuf::MessageLite {
 public:
  RouteOption();
  virtual ~RouteOption();
  
  RouteOption(const RouteOption& from);
  
  inline RouteOption& operator=(const RouteOption& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const RouteOption& default_instance();
  
  void Swap(RouteOption* other);
  
  // implements Message ----------------------------------------------
  
  RouteOption* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const RouteOption& from);
  void MergeFrom(const RouteOption& 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 bool avoid_hov_lane = 1;
  inline bool has_avoid_hov_lane() const;
  inline void clear_avoid_hov_lane();
  static const int kAvoidHovLaneFieldNumber = 1;
  inline bool avoid_hov_lane() const;
  inline void set_avoid_hov_lane(bool value);
  
  // optional bool avoid_highway = 2;
  inline bool has_avoid_highway() const;
  inline void clear_avoid_highway();
  static const int kAvoidHighwayFieldNumber = 2;
  inline bool avoid_highway() const;
  inline void set_avoid_highway(bool value);
  
  // optional bool avoid_toll_road = 3;
  inline bool has_avoid_toll_road() const;
  inline void clear_avoid_toll_road();
  static const int kAvoidTollRoadFieldNumber = 3;
  inline bool avoid_toll_road() const;
  inline void set_avoid_toll_road(bool value);
  
  // optional bool avoid_ferry = 4;
  inline bool has_avoid_ferry() const;
  inline void clear_avoid_ferry();
  static const int kAvoidFerryFieldNumber = 4;
  inline bool avoid_ferry() const;
  inline void set_avoid_ferry(bool value);
  
  // optional bool avoid_car_train = 5;
  inline bool has_avoid_car_train() const;
  inline void clear_avoid_car_train();
  static const int kAvoidCarTrainFieldNumber = 5;
  inline bool avoid_car_train() const;
  inline void set_avoid_car_train(bool value);
  
  // optional bool avoid_unpaved_road = 6;
  inline bool has_avoid_unpaved_road() const;
  inline void clear_avoid_unpaved_road();
  static const int kAvoidUnpavedRoadFieldNumber = 6;
  inline bool avoid_unpaved_road() const;
  inline void set_avoid_unpaved_road(bool value);
  
  // optional bool avoid_tunnel = 7;
  inline bool has_avoid_tunnel() const;
  inline void clear_avoid_tunnel();
  static const int kAvoidTunnelFieldNumber = 7;
  inline bool avoid_tunnel() const;
  inline void set_avoid_tunnel(bool value);
  
  // optional bool avoid_uturn = 8;
  inline bool has_avoid_uturn() const;
  inline void clear_avoid_uturn();
  static const int kAvoidUturnFieldNumber = 8;
  inline bool avoid_uturn() const;
  inline void set_avoid_uturn(bool value);
  
  // optional bool avoid_traffic = 9;
  inline bool has_avoid_traffic() const;
  inline void clear_avoid_traffic();
  static const int kAvoidTrafficFieldNumber = 9;
  inline bool avoid_traffic() const;
  inline void set_avoid_traffic(bool value);
  
  // repeated string must_avoid_edge_id = 10;
  inline int must_avoid_edge_id_size() const;
  inline void clear_must_avoid_edge_id();
  static const int kMustAvoidEdgeIdFieldNumber = 10;
  inline const ::std::string& must_avoid_edge_id(int index) const;
  inline ::std::string* mutable_must_avoid_edge_id(int index);
  inline void set_must_avoid_edge_id(int index, const ::std::string& value);
  inline void set_must_avoid_edge_id(int index, const char* value);
  inline void set_must_avoid_edge_id(int index, const char* value, size_t size);
  inline ::std::string* add_must_avoid_edge_id();
  inline void add_must_avoid_edge_id(const ::std::string& value);
  inline void add_must_avoid_edge_id(const char* value);
  inline void add_must_avoid_edge_id(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& must_avoid_edge_id() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_must_avoid_edge_id();
  
  // repeated string try_avoid_edge_Id = 11;
  inline int try_avoid_edge_id_size() const;
  inline void clear_try_avoid_edge_id();
  static const int kTryAvoidEdgeIdFieldNumber = 11;
  inline const ::std::string& try_avoid_edge_id(int index) const;
  inline ::std::string* mutable_try_avoid_edge_id(int index);
  inline void set_try_avoid_edge_id(int index, const ::std::string& value);
  inline void set_try_avoid_edge_id(int index, const char* value);
  inline void set_try_avoid_edge_id(int index, const char* value, size_t size);
  inline ::std::string* add_try_avoid_edge_id();
  inline void add_try_avoid_edge_id(const ::std::string& value);
  inline void add_try_avoid_edge_id(const char* value);
  inline void add_try_avoid_edge_id(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& try_avoid_edge_id() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_try_avoid_edge_id();
  
  // repeated string preferred_edge_Id = 12;
  inline int preferred_edge_id_size() const;
  inline void clear_preferred_edge_id();
  static const int kPreferredEdgeIdFieldNumber = 12;
  inline const ::std::string& preferred_edge_id(int index) const;
  inline ::std::string* mutable_preferred_edge_id(int index);
  inline void set_preferred_edge_id(int index, const ::std::string& value);
  inline void set_preferred_edge_id(int index, const char* value);
  inline void set_preferred_edge_id(int index, const char* value, size_t size);
  inline ::std::string* add_preferred_edge_id();
  inline void add_preferred_edge_id(const ::std::string& value);
  inline void add_preferred_edge_id(const char* value);
  inline void add_preferred_edge_id(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& preferred_edge_id() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_preferred_edge_id();
  
  // repeated string avoid_traffic_id = 13;
  inline int avoid_traffic_id_size() const;
  inline void clear_avoid_traffic_id();
  static const int kAvoidTrafficIdFieldNumber = 13;
  inline const ::std::string& avoid_traffic_id(int index) const;
  inline ::std::string* mutable_avoid_traffic_id(int index);
  inline void set_avoid_traffic_id(int index, const ::std::string& value);
  inline void set_avoid_traffic_id(int index, const char* value);
  inline void set_avoid_traffic_id(int index, const char* value, size_t size);
  inline ::std::string* add_avoid_traffic_id();
  inline void add_avoid_traffic_id(const ::std::string& value);
  inline void add_avoid_traffic_id(const char* value);
  inline void add_avoid_traffic_id(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& avoid_traffic_id() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_avoid_traffic_id();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.RouteOption)
 private:
  inline void set_has_avoid_hov_lane();
  inline void clear_has_avoid_hov_lane();
  inline void set_has_avoid_highway();
  inline void clear_has_avoid_highway();
  inline void set_has_avoid_toll_road();
  inline void clear_has_avoid_toll_road();
  inline void set_has_avoid_ferry();
  inline void clear_has_avoid_ferry();
  inline void set_has_avoid_car_train();
  inline void clear_has_avoid_car_train();
  inline void set_has_avoid_unpaved_road();
  inline void clear_has_avoid_unpaved_road();
  inline void set_has_avoid_tunnel();
  inline void clear_has_avoid_tunnel();
  inline void set_has_avoid_uturn();
  inline void clear_has_avoid_uturn();
  inline void set_has_avoid_traffic();
  inline void clear_has_avoid_traffic();
  
  bool avoid_hov_lane_;
  bool avoid_highway_;
  bool avoid_toll_road_;
  bool avoid_ferry_;
  bool avoid_car_train_;
  bool avoid_unpaved_road_;
  bool avoid_tunnel_;
  bool avoid_uturn_;
  ::google::protobuf::RepeatedPtrField< ::std::string> must_avoid_edge_id_;
  ::google::protobuf::RepeatedPtrField< ::std::string> try_avoid_edge_id_;
  ::google::protobuf::RepeatedPtrField< ::std::string> preferred_edge_id_;
  ::google::protobuf::RepeatedPtrField< ::std::string> avoid_traffic_id_;
  bool avoid_traffic_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(13 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static RouteOption* default_instance_;
};
// -------------------------------------------------------------------

class Location : public ::google::protobuf::MessageLite {
 public:
  Location();
  virtual ~Location();
  
  Location(const Location& from);
  
  inline Location& operator=(const Location& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const Location& default_instance();
  
  void Swap(Location* other);
  
  // implements Message ----------------------------------------------
  
  Location* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const Location& from);
  void MergeFrom(const Location& 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 .com.telenav.proto.LatLon lat_lon = 1;
  inline bool has_lat_lon() const;
  inline void clear_lat_lon();
  static const int kLatLonFieldNumber = 1;
  inline const ::com::telenav::proto::LatLon& lat_lon() const;
  inline ::com::telenav::proto::LatLon* mutable_lat_lon();
  inline ::com::telenav::proto::LatLon* release_lat_lon();
  
  // optional .com.telenav.proto.Address address = 2;
  inline bool has_address() const;
  inline void clear_address();
  static const int kAddressFieldNumber = 2;
  inline const ::com::telenav::proto::Address& address() const;
  inline ::com::telenav::proto::Address* mutable_address();
  inline ::com::telenav::proto::Address* release_address();
  
  // repeated string edge_id = 3;
  inline int edge_id_size() const;
  inline void clear_edge_id();
  static const int kEdgeIdFieldNumber = 3;
  inline const ::std::string& edge_id(int index) const;
  inline ::std::string* mutable_edge_id(int index);
  inline void set_edge_id(int index, const ::std::string& value);
  inline void set_edge_id(int index, const char* value);
  inline void set_edge_id(int index, const char* value, size_t size);
  inline ::std::string* add_edge_id();
  inline void add_edge_id(const ::std::string& value);
  inline void add_edge_id(const char* value);
  inline void add_edge_id(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& edge_id() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_edge_id();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.Location)
 private:
  inline void set_has_lat_lon();
  inline void clear_has_lat_lon();
  inline void set_has_address();
  inline void clear_has_address();
  
  ::com::telenav::proto::LatLon* lat_lon_;
  ::com::telenav::proto::Address* address_;
  ::google::protobuf::RepeatedPtrField< ::std::string> edge_id_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static Location* default_instance_;
};
// -------------------------------------------------------------------

class OutputOption : public ::google::protobuf::MessageLite {
 public:
  OutputOption();
  virtual ~OutputOption();
  
  OutputOption(const OutputOption& from);
  
  inline OutputOption& operator=(const OutputOption& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const OutputOption& default_instance();
  
  void Swap(OutputOption* other);
  
  // implements Message ----------------------------------------------
  
  OutputOption* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const OutputOption& from);
  void MergeFrom(const OutputOption& 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 bool eta_only = 1 [default = false];
  inline bool has_eta_only() const;
  inline void clear_eta_only();
  static const int kEtaOnlyFieldNumber = 1;
  inline bool eta_only() const;
  inline void set_eta_only(bool value);
  
  // optional bool edge_detail = 2 [default = false];
  inline bool has_edge_detail() const;
  inline void clear_edge_detail();
  static const int kEdgeDetailFieldNumber = 2;
  inline bool edge_detail() const;
  inline void set_edge_detail(bool value);
  
  // optional bool basic_route = 3 [default = false];
  inline bool has_basic_route() const;
  inline void clear_basic_route();
  static const int kBasicRouteFieldNumber = 3;
  inline bool basic_route() const;
  inline void set_basic_route(bool value);
  
  // optional bool traffic_id = 4 [default = true];
  inline bool has_traffic_id() const;
  inline void clear_traffic_id();
  static const int kTrafficIdFieldNumber = 4;
  inline bool traffic_id() const;
  inline void set_traffic_id(bool value);
  
  // optional bool lane_info = 5 [default = true];
  inline bool has_lane_info() const;
  inline void clear_lane_info();
  static const int kLaneInfoFieldNumber = 5;
  inline bool lane_info() const;
  inline void set_lane_info(bool value);
  
  // optional bool speed_limit = 6 [default = true];
  inline bool has_speed_limit() const;
  inline void clear_speed_limit();
  static const int kSpeedLimitFieldNumber = 6;
  inline bool speed_limit() const;
  inline void set_speed_limit(bool value);
  
  // optional bool overview = 9 [default = false];
  inline bool has_overview() const;
  inline void clear_overview();
  static const int kOverviewFieldNumber = 9;
  inline bool overview() const;
  inline void set_overview(bool value);
  
  // optional bool route_info = 10 [default = true];
  inline bool has_route_info() const;
  inline void clear_route_info();
  static const int kRouteInfoFieldNumber = 10;
  inline bool route_info() const;
  inline void set_route_info(bool value);
  
  // optional int32 overview_decimated_level = 11;
  inline bool has_overview_decimated_level() const;
  inline void clear_overview_decimated_level();
  static const int kOverviewDecimatedLevelFieldNumber = 11;
  inline ::google::protobuf::int32 overview_decimated_level() const;
  inline void set_overview_decimated_level(::google::protobuf::int32 value);
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.OutputOption)
 private:
  inline void set_has_eta_only();
  inline void clear_has_eta_only();
  inline void set_has_edge_detail();
  inline void clear_has_edge_detail();
  inline void set_has_basic_route();
  inline void clear_has_basic_route();
  inline void set_has_traffic_id();
  inline void clear_has_traffic_id();
  inline void set_has_lane_info();
  inline void clear_has_lane_info();
  inline void set_has_speed_limit();
  inline void clear_has_speed_limit();
  inline void set_has_overview();
  inline void clear_has_overview();
  inline void set_has_route_info();
  inline void clear_has_route_info();
  inline void set_has_overview_decimated_level();
  inline void clear_has_overview_decimated_level();
  
  bool eta_only_;
  bool edge_detail_;
  bool basic_route_;
  bool traffic_id_;
  bool lane_info_;
  bool speed_limit_;
  bool overview_;
  bool route_info_;
  ::google::protobuf::int32 overview_decimated_level_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(9 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static OutputOption* default_instance_;
};
// -------------------------------------------------------------------

class GuidanceRequest : public ::google::protobuf::MessageLite {
 public:
  GuidanceRequest();
  virtual ~GuidanceRequest();
  
  GuidanceRequest(const GuidanceRequest& from);
  
  inline GuidanceRequest& operator=(const GuidanceRequest& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const GuidanceRequest& default_instance();
  
  void Swap(GuidanceRequest* other);
  
  // implements Message ----------------------------------------------
  
  GuidanceRequest* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const GuidanceRequest& from);
  void MergeFrom(const GuidanceRequest& 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 -------------------------------------------------------
  
  // repeated .com.telenav.proto.map.v4.BasicPath basic_path = 1;
  inline int basic_path_size() const;
  inline void clear_basic_path();
  static const int kBasicPathFieldNumber = 1;
  inline const ::com::telenav::proto::map::v4::BasicPath& basic_path(int index) const;
  inline ::com::telenav::proto::map::v4::BasicPath* mutable_basic_path(int index);
  inline ::com::telenav::proto::map::v4::BasicPath* add_basic_path();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::BasicPath >&
      basic_path() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::BasicPath >*
      mutable_basic_path();
  
  // optional int32 start_index = 2;
  inline bool has_start_index() const;
  inline void clear_start_index();
  static const int kStartIndexFieldNumber = 2;
  inline ::google::protobuf::int32 start_index() const;
  inline void set_start_index(::google::protobuf::int32 value);
  
  // optional int32 end_index = 3;
  inline bool has_end_index() const;
  inline void clear_end_index();
  static const int kEndIndexFieldNumber = 3;
  inline ::google::protobuf::int32 end_index() const;
  inline void set_end_index(::google::protobuf::int32 value);
  
  // optional int32 length_in_meter = 4;
  inline bool has_length_in_meter() const;
  inline void clear_length_in_meter();
  static const int kLengthInMeterFieldNumber = 4;
  inline ::google::protobuf::int32 length_in_meter() const;
  inline void set_length_in_meter(::google::protobuf::int32 value);
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.GuidanceRequest)
 private:
  inline void set_has_start_index();
  inline void clear_has_start_index();
  inline void set_has_end_index();
  inline void clear_has_end_index();
  inline void set_has_length_in_meter();
  inline void clear_has_length_in_meter();
  
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::BasicPath > basic_path_;
  ::google::protobuf::int32 start_index_;
  ::google::protobuf::int32 end_index_;
  ::google::protobuf::int32 length_in_meter_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static GuidanceRequest* default_instance_;
};
// -------------------------------------------------------------------

class BasicRouteResponse : public ::google::protobuf::MessageLite {
 public:
  BasicRouteResponse();
  virtual ~BasicRouteResponse();
  
  BasicRouteResponse(const BasicRouteResponse& from);
  
  inline BasicRouteResponse& operator=(const BasicRouteResponse& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const BasicRouteResponse& default_instance();
  
  void Swap(BasicRouteResponse* other);
  
  // implements Message ----------------------------------------------
  
  BasicRouteResponse* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const BasicRouteResponse& from);
  void MergeFrom(const BasicRouteResponse& 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 .com.telenav.proto.ServiceStatus status = 1;
  inline bool has_status() const;
  inline void clear_status();
  static const int kStatusFieldNumber = 1;
  inline const ::com::telenav::proto::ServiceStatus& status() const;
  inline ::com::telenav::proto::ServiceStatus* mutable_status();
  inline ::com::telenav::proto::ServiceStatus* release_status();
  
  // optional string data_version = 3;
  inline bool has_data_version() const;
  inline void clear_data_version();
  static const int kDataVersionFieldNumber = 3;
  inline const ::std::string& data_version() const;
  inline void set_data_version(const ::std::string& value);
  inline void set_data_version(const char* value);
  inline void set_data_version(const char* value, size_t size);
  inline ::std::string* mutable_data_version();
  inline ::std::string* release_data_version();
  
  // repeated .com.telenav.proto.map.v4.RouteInfo route_info = 4;
  inline int route_info_size() const;
  inline void clear_route_info();
  static const int kRouteInfoFieldNumber = 4;
  inline const ::com::telenav::proto::map::v4::RouteInfo& route_info(int index) const;
  inline ::com::telenav::proto::map::v4::RouteInfo* mutable_route_info(int index);
  inline ::com::telenav::proto::map::v4::RouteInfo* add_route_info();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RouteInfo >&
      route_info() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RouteInfo >*
      mutable_route_info();
  
  // repeated .com.telenav.proto.map.v4.BasicRoute route = 5;
  inline int route_size() const;
  inline void clear_route();
  static const int kRouteFieldNumber = 5;
  inline const ::com::telenav::proto::map::v4::BasicRoute& route(int index) const;
  inline ::com::telenav::proto::map::v4::BasicRoute* mutable_route(int index);
  inline ::com::telenav::proto::map::v4::BasicRoute* add_route();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::BasicRoute >&
      route() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::BasicRoute >*
      mutable_route();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.BasicRouteResponse)
 private:
  inline void set_has_status();
  inline void clear_has_status();
  inline void set_has_data_version();
  inline void clear_has_data_version();
  
  ::com::telenav::proto::ServiceStatus* status_;
  ::std::string* data_version_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RouteInfo > route_info_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::BasicRoute > route_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static BasicRouteResponse* default_instance_;
};
// -------------------------------------------------------------------

class RouteResponse : public ::google::protobuf::MessageLite {
 public:
  RouteResponse();
  virtual ~RouteResponse();
  
  RouteResponse(const RouteResponse& from);
  
  inline RouteResponse& operator=(const RouteResponse& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const RouteResponse& default_instance();
  
  void Swap(RouteResponse* other);
  
  // implements Message ----------------------------------------------
  
  RouteResponse* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const RouteResponse& from);
  void MergeFrom(const RouteResponse& 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 .com.telenav.proto.ServiceStatus status = 1;
  inline bool has_status() const;
  inline void clear_status();
  static const int kStatusFieldNumber = 1;
  inline const ::com::telenav::proto::ServiceStatus& status() const;
  inline ::com::telenav::proto::ServiceStatus* mutable_status();
  inline ::com::telenav::proto::ServiceStatus* release_status();
  
  // optional string data_version = 3;
  inline bool has_data_version() const;
  inline void clear_data_version();
  static const int kDataVersionFieldNumber = 3;
  inline const ::std::string& data_version() const;
  inline void set_data_version(const ::std::string& value);
  inline void set_data_version(const char* value);
  inline void set_data_version(const char* value, size_t size);
  inline ::std::string* mutable_data_version();
  inline ::std::string* release_data_version();
  
  // repeated .com.telenav.proto.map.v4.Route route = 4;
  inline int route_size() const;
  inline void clear_route();
  static const int kRouteFieldNumber = 4;
  inline const ::com::telenav::proto::map::v4::Route& route(int index) const;
  inline ::com::telenav::proto::map::v4::Route* mutable_route(int index);
  inline ::com::telenav::proto::map::v4::Route* add_route();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Route >&
      route() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Route >*
      mutable_route();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.RouteResponse)
 private:
  inline void set_has_status();
  inline void clear_has_status();
  inline void set_has_data_version();
  inline void clear_has_data_version();
  
  ::com::telenav::proto::ServiceStatus* status_;
  ::std::string* data_version_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Route > route_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static RouteResponse* default_instance_;
};
// -------------------------------------------------------------------

class FindMeRequest : public ::google::protobuf::MessageLite {
 public:
  FindMeRequest();
  virtual ~FindMeRequest();
  
  FindMeRequest(const FindMeRequest& from);
  
  inline FindMeRequest& operator=(const FindMeRequest& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const FindMeRequest& default_instance();
  
  void Swap(FindMeRequest* other);
  
  // implements Message ----------------------------------------------
  
  FindMeRequest* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const FindMeRequest& from);
  void MergeFrom(const FindMeRequest& 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 -------------------------------------------------------
  
  // repeated .com.telenav.proto.map.v4.GpsFix gps_fix = 1;
  inline int gps_fix_size() const;
  inline void clear_gps_fix();
  static const int kGpsFixFieldNumber = 1;
  inline const ::com::telenav::proto::map::v4::GpsFix& gps_fix(int index) const;
  inline ::com::telenav::proto::map::v4::GpsFix* mutable_gps_fix(int index);
  inline ::com::telenav::proto::map::v4::GpsFix* add_gps_fix();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::GpsFix >&
      gps_fix() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::GpsFix >*
      mutable_gps_fix();
  
  // optional int32 latch_heading = 2 [default = -999];
  inline bool has_latch_heading() const;
  inline void clear_latch_heading();
  static const int kLatchHeadingFieldNumber = 2;
  inline ::google::protobuf::int32 latch_heading() const;
  inline void set_latch_heading(::google::protobuf::int32 value);
  
  // optional .com.telenav.proto.Context context = 3;
  inline bool has_context() const;
  inline void clear_context();
  static const int kContextFieldNumber = 3;
  inline const ::com::telenav::proto::Context& context() const;
  inline ::com::telenav::proto::Context* mutable_context();
  inline ::com::telenav::proto::Context* release_context();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.FindMeRequest)
 private:
  inline void set_has_latch_heading();
  inline void clear_has_latch_heading();
  inline void set_has_context();
  inline void clear_has_context();
  
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::GpsFix > gps_fix_;
  ::com::telenav::proto::Context* context_;
  ::google::protobuf::int32 latch_heading_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static FindMeRequest* default_instance_;
};
// -------------------------------------------------------------------

class FindMeResponse : public ::google::protobuf::MessageLite {
 public:
  FindMeResponse();
  virtual ~FindMeResponse();
  
  FindMeResponse(const FindMeResponse& from);
  
  inline FindMeResponse& operator=(const FindMeResponse& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const FindMeResponse& default_instance();
  
  void Swap(FindMeResponse* other);
  
  // implements Message ----------------------------------------------
  
  FindMeResponse* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const FindMeResponse& from);
  void MergeFrom(const FindMeResponse& 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 .com.telenav.proto.ServiceStatus status = 1;
  inline bool has_status() const;
  inline void clear_status();
  static const int kStatusFieldNumber = 1;
  inline const ::com::telenav::proto::ServiceStatus& status() const;
  inline ::com::telenav::proto::ServiceStatus* mutable_status();
  inline ::com::telenav::proto::ServiceStatus* release_status();
  
  // optional string data_version = 3;
  inline bool has_data_version() const;
  inline void clear_data_version();
  static const int kDataVersionFieldNumber = 3;
  inline const ::std::string& data_version() const;
  inline void set_data_version(const ::std::string& value);
  inline void set_data_version(const char* value);
  inline void set_data_version(const char* value, size_t size);
  inline ::std::string* mutable_data_version();
  inline ::std::string* release_data_version();
  
  // repeated .com.telenav.proto.map.v4.Candidate candidate = 4;
  inline int candidate_size() const;
  inline void clear_candidate();
  static const int kCandidateFieldNumber = 4;
  inline const ::com::telenav::proto::map::v4::Candidate& candidate(int index) const;
  inline ::com::telenav::proto::map::v4::Candidate* mutable_candidate(int index);
  inline ::com::telenav::proto::map::v4::Candidate* add_candidate();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Candidate >&
      candidate() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Candidate >*
      mutable_candidate();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.FindMeResponse)
 private:
  inline void set_has_status();
  inline void clear_has_status();
  inline void set_has_data_version();
  inline void clear_has_data_version();
  
  ::com::telenav::proto::ServiceStatus* status_;
  ::std::string* data_version_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Candidate > candidate_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static FindMeResponse* default_instance_;
};
// -------------------------------------------------------------------

class SystemInfoResponse : public ::google::protobuf::MessageLite {
 public:
  SystemInfoResponse();
  virtual ~SystemInfoResponse();
  
  SystemInfoResponse(const SystemInfoResponse& from);
  
  inline SystemInfoResponse& operator=(const SystemInfoResponse& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const SystemInfoResponse& default_instance();
  
  void Swap(SystemInfoResponse* other);
  
  // implements Message ----------------------------------------------
  
  SystemInfoResponse* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const SystemInfoResponse& from);
  void MergeFrom(const SystemInfoResponse& 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 .com.telenav.proto.ServiceStatus status = 1;
  inline bool has_status() const;
  inline void clear_status();
  static const int kStatusFieldNumber = 1;
  inline const ::com::telenav::proto::ServiceStatus& status() const;
  inline ::com::telenav::proto::ServiceStatus* mutable_status();
  inline ::com::telenav::proto::ServiceStatus* release_status();
  
  // optional string app_version = 2;
  inline bool has_app_version() const;
  inline void clear_app_version();
  static const int kAppVersionFieldNumber = 2;
  inline const ::std::string& app_version() const;
  inline void set_app_version(const ::std::string& value);
  inline void set_app_version(const char* value);
  inline void set_app_version(const char* value, size_t size);
  inline ::std::string* mutable_app_version();
  inline ::std::string* release_app_version();
  
  // optional string data_version = 3;
  inline bool has_data_version() const;
  inline void clear_data_version();
  static const int kDataVersionFieldNumber = 3;
  inline const ::std::string& data_version() const;
  inline void set_data_version(const ::std::string& value);
  inline void set_data_version(const char* value);
  inline void set_data_version(const char* value, size_t size);
  inline ::std::string* mutable_data_version();
  inline ::std::string* release_data_version();
  
  // optional int64 up_time = 4;
  inline bool has_up_time() const;
  inline void clear_up_time();
  static const int kUpTimeFieldNumber = 4;
  inline ::google::protobuf::int64 up_time() const;
  inline void set_up_time(::google::protobuf::int64 value);
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.SystemInfoResponse)
 private:
  inline void set_has_status();
  inline void clear_has_status();
  inline void set_has_app_version();
  inline void clear_has_app_version();
  inline void set_has_data_version();
  inline void clear_has_data_version();
  inline void set_has_up_time();
  inline void clear_has_up_time();
  
  ::com::telenav::proto::ServiceStatus* status_;
  ::std::string* app_version_;
  ::std::string* data_version_;
  ::google::protobuf::int64 up_time_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static SystemInfoResponse* default_instance_;
};
// -------------------------------------------------------------------

class GpsFix : public ::google::protobuf::MessageLite {
 public:
  GpsFix();
  virtual ~GpsFix();
  
  GpsFix(const GpsFix& from);
  
  inline GpsFix& operator=(const GpsFix& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const GpsFix& default_instance();
  
  void Swap(GpsFix* other);
  
  // implements Message ----------------------------------------------
  
  GpsFix* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const GpsFix& from);
  void MergeFrom(const GpsFix& 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 .com.telenav.proto.LatLon lat_lon = 1;
  inline bool has_lat_lon() const;
  inline void clear_lat_lon();
  static const int kLatLonFieldNumber = 1;
  inline const ::com::telenav::proto::LatLon& lat_lon() const;
  inline ::com::telenav::proto::LatLon* mutable_lat_lon();
  inline ::com::telenav::proto::LatLon* release_lat_lon();
  
  // optional double alt = 2;
  inline bool has_alt() const;
  inline void clear_alt();
  static const int kAltFieldNumber = 2;
  inline double alt() const;
  inline void set_alt(double value);
  
  // optional int64 time_stamp = 3;
  inline bool has_time_stamp() const;
  inline void clear_time_stamp();
  static const int kTimeStampFieldNumber = 3;
  inline ::google::protobuf::int64 time_stamp() const;
  inline void set_time_stamp(::google::protobuf::int64 value);
  
  // optional int32 speed = 4;
  inline bool has_speed() const;
  inline void clear_speed();
  static const int kSpeedFieldNumber = 4;
  inline ::google::protobuf::int32 speed() const;
  inline void set_speed(::google::protobuf::int32 value);
  
  // optional int32 heading = 5;
  inline bool has_heading() const;
  inline void clear_heading();
  static const int kHeadingFieldNumber = 5;
  inline ::google::protobuf::int32 heading() const;
  inline void set_heading(::google::protobuf::int32 value);
  
  // optional int32 error = 6;
  inline bool has_error() const;
  inline void clear_error();
  static const int kErrorFieldNumber = 6;
  inline ::google::protobuf::int32 error() const;
  inline void set_error(::google::protobuf::int32 value);
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.GpsFix)
 private:
  inline void set_has_lat_lon();
  inline void clear_has_lat_lon();
  inline void set_has_alt();
  inline void clear_has_alt();
  inline void set_has_time_stamp();
  inline void clear_has_time_stamp();
  inline void set_has_speed();
  inline void clear_has_speed();
  inline void set_has_heading();
  inline void clear_has_heading();
  inline void set_has_error();
  inline void clear_has_error();
  
  ::com::telenav::proto::LatLon* lat_lon_;
  double alt_;
  ::google::protobuf::int64 time_stamp_;
  ::google::protobuf::int32 speed_;
  ::google::protobuf::int32 heading_;
  ::google::protobuf::int32 error_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static GpsFix* default_instance_;
};
// -------------------------------------------------------------------

class Candidate : public ::google::protobuf::MessageLite {
 public:
  Candidate();
  virtual ~Candidate();
  
  Candidate(const Candidate& from);
  
  inline Candidate& operator=(const Candidate& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const Candidate& default_instance();
  
  void Swap(Candidate* other);
  
  // implements Message ----------------------------------------------
  
  Candidate* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const Candidate& from);
  void MergeFrom(const Candidate& 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 .com.telenav.proto.LatLon lat_lon = 1;
  inline bool has_lat_lon() const;
  inline void clear_lat_lon();
  static const int kLatLonFieldNumber = 1;
  inline const ::com::telenav::proto::LatLon& lat_lon() const;
  inline ::com::telenav::proto::LatLon* mutable_lat_lon();
  inline ::com::telenav::proto::LatLon* release_lat_lon();
  
  // optional .com.telenav.proto.Address address = 2;
  inline bool has_address() const;
  inline void clear_address();
  static const int kAddressFieldNumber = 2;
  inline const ::com::telenav::proto::Address& address() const;
  inline ::com::telenav::proto::Address* mutable_address();
  inline ::com::telenav::proto::Address* release_address();
  
  // optional int32 heading = 3;
  inline bool has_heading() const;
  inline void clear_heading();
  static const int kHeadingFieldNumber = 3;
  inline ::google::protobuf::int32 heading() const;
  inline void set_heading(::google::protobuf::int32 value);
  
  // optional int32 speed_in_mps = 4;
  inline bool has_speed_in_mps() const;
  inline void clear_speed_in_mps();
  static const int kSpeedInMpsFieldNumber = 4;
  inline ::google::protobuf::int32 speed_in_mps() const;
  inline void set_speed_in_mps(::google::protobuf::int32 value);
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.Candidate)
 private:
  inline void set_has_lat_lon();
  inline void clear_has_lat_lon();
  inline void set_has_address();
  inline void clear_has_address();
  inline void set_has_heading();
  inline void clear_has_heading();
  inline void set_has_speed_in_mps();
  inline void clear_has_speed_in_mps();
  
  ::com::telenav::proto::LatLon* lat_lon_;
  ::com::telenav::proto::Address* address_;
  ::google::protobuf::int32 heading_;
  ::google::protobuf::int32 speed_in_mps_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static Candidate* default_instance_;
};
// -------------------------------------------------------------------

class BasicRoute : public ::google::protobuf::MessageLite {
 public:
  BasicRoute();
  virtual ~BasicRoute();
  
  BasicRoute(const BasicRoute& from);
  
  inline BasicRoute& operator=(const BasicRoute& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const BasicRoute& default_instance();
  
  void Swap(BasicRoute* other);
  
  // implements Message ----------------------------------------------
  
  BasicRoute* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const BasicRoute& from);
  void MergeFrom(const BasicRoute& 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 -------------------------------------------------------
  
  // repeated .com.telenav.proto.map.v4.BasicPath head_path = 2;
  inline int head_path_size() const;
  inline void clear_head_path();
  static const int kHeadPathFieldNumber = 2;
  inline const ::com::telenav::proto::map::v4::BasicPath& head_path(int index) const;
  inline ::com::telenav::proto::map::v4::BasicPath* mutable_head_path(int index);
  inline ::com::telenav::proto::map::v4::BasicPath* add_head_path();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::BasicPath >&
      head_path() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::BasicPath >*
      mutable_head_path();
  
  // optional .com.telenav.proto.map.v4.BasicPath body_path = 3;
  inline bool has_body_path() const;
  inline void clear_body_path();
  static const int kBodyPathFieldNumber = 3;
  inline const ::com::telenav::proto::map::v4::BasicPath& body_path() const;
  inline ::com::telenav::proto::map::v4::BasicPath* mutable_body_path();
  inline ::com::telenav::proto::map::v4::BasicPath* release_body_path();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.BasicRoute)
 private:
  inline void set_has_body_path();
  inline void clear_has_body_path();
  
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::BasicPath > head_path_;
  ::com::telenav::proto::map::v4::BasicPath* body_path_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static BasicRoute* default_instance_;
};
// -------------------------------------------------------------------

class BasicPath : public ::google::protobuf::MessageLite {
 public:
  BasicPath();
  virtual ~BasicPath();
  
  BasicPath(const BasicPath& from);
  
  inline BasicPath& operator=(const BasicPath& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const BasicPath& default_instance();
  
  void Swap(BasicPath* other);
  
  // implements Message ----------------------------------------------
  
  BasicPath* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const BasicPath& from);
  void MergeFrom(const BasicPath& 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 -------------------------------------------------------
  
  // repeated string edge_id = 2;
  inline int edge_id_size() const;
  inline void clear_edge_id();
  static const int kEdgeIdFieldNumber = 2;
  inline const ::std::string& edge_id(int index) const;
  inline ::std::string* mutable_edge_id(int index);
  inline void set_edge_id(int index, const ::std::string& value);
  inline void set_edge_id(int index, const char* value);
  inline void set_edge_id(int index, const char* value, size_t size);
  inline ::std::string* add_edge_id();
  inline void add_edge_id(const ::std::string& value);
  inline void add_edge_id(const char* value);
  inline void add_edge_id(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& edge_id() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_edge_id();
  
  // optional .com.telenav.proto.map.v4.Location start_point = 3;
  inline bool has_start_point() const;
  inline void clear_start_point();
  static const int kStartPointFieldNumber = 3;
  inline const ::com::telenav::proto::map::v4::Location& start_point() const;
  inline ::com::telenav::proto::map::v4::Location* mutable_start_point();
  inline ::com::telenav::proto::map::v4::Location* release_start_point();
  
  // optional .com.telenav.proto.map.v4.EndPointStatus start_point_status = 4;
  inline bool has_start_point_status() const;
  inline void clear_start_point_status();
  static const int kStartPointStatusFieldNumber = 4;
  inline const ::com::telenav::proto::map::v4::EndPointStatus& start_point_status() const;
  inline ::com::telenav::proto::map::v4::EndPointStatus* mutable_start_point_status();
  inline ::com::telenav::proto::map::v4::EndPointStatus* release_start_point_status();
  
  // optional .com.telenav.proto.map.v4.Location end_point = 5;
  inline bool has_end_point() const;
  inline void clear_end_point();
  static const int kEndPointFieldNumber = 5;
  inline const ::com::telenav::proto::map::v4::Location& end_point() const;
  inline ::com::telenav::proto::map::v4::Location* mutable_end_point();
  inline ::com::telenav::proto::map::v4::Location* release_end_point();
  
  // optional .com.telenav.proto.map.v4.EndPointStatus end_point_status = 6;
  inline bool has_end_point_status() const;
  inline void clear_end_point_status();
  static const int kEndPointStatusFieldNumber = 6;
  inline const ::com::telenav::proto::map::v4::EndPointStatus& end_point_status() const;
  inline ::com::telenav::proto::map::v4::EndPointStatus* mutable_end_point_status();
  inline ::com::telenav::proto::map::v4::EndPointStatus* release_end_point_status();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.BasicPath)
 private:
  inline void set_has_start_point();
  inline void clear_has_start_point();
  inline void set_has_start_point_status();
  inline void clear_has_start_point_status();
  inline void set_has_end_point();
  inline void clear_has_end_point();
  inline void set_has_end_point_status();
  inline void clear_has_end_point_status();
  
  ::google::protobuf::RepeatedPtrField< ::std::string> edge_id_;
  ::com::telenav::proto::map::v4::Location* start_point_;
  ::com::telenav::proto::map::v4::EndPointStatus* start_point_status_;
  ::com::telenav::proto::map::v4::Location* end_point_;
  ::com::telenav::proto::map::v4::EndPointStatus* end_point_status_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static BasicPath* default_instance_;
};
// -------------------------------------------------------------------

class EndPointStatus : public ::google::protobuf::MessageLite {
 public:
  EndPointStatus();
  virtual ~EndPointStatus();
  
  EndPointStatus(const EndPointStatus& from);
  
  inline EndPointStatus& operator=(const EndPointStatus& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const EndPointStatus& default_instance();
  
  void Swap(EndPointStatus* other);
  
  // implements Message ----------------------------------------------
  
  EndPointStatus* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const EndPointStatus& from);
  void MergeFrom(const EndPointStatus& 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 string edge_clipped_points = 1;
  inline bool has_edge_clipped_points() const;
  inline void clear_edge_clipped_points();
  static const int kEdgeClippedPointsFieldNumber = 1;
  inline const ::std::string& edge_clipped_points() const;
  inline void set_edge_clipped_points(const ::std::string& value);
  inline void set_edge_clipped_points(const char* value);
  inline void set_edge_clipped_points(const char* value, size_t size);
  inline ::std::string* mutable_edge_clipped_points();
  inline ::std::string* release_edge_clipped_points();
  
  // optional .com.telenav.proto.map.v4.PointMatchResult point_match_result = 2;
  inline bool has_point_match_result() const;
  inline void clear_point_match_result();
  static const int kPointMatchResultFieldNumber = 2;
  inline com::telenav::proto::map::v4::PointMatchResult point_match_result() const;
  inline void set_point_match_result(com::telenav::proto::map::v4::PointMatchResult value);
  
  // optional .com.telenav.proto.map.v4.LocationMatchResult location_match_result = 3;
  inline bool has_location_match_result() const;
  inline void clear_location_match_result();
  static const int kLocationMatchResultFieldNumber = 3;
  inline com::telenav::proto::map::v4::LocationMatchResult location_match_result() const;
  inline void set_location_match_result(com::telenav::proto::map::v4::LocationMatchResult value);
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.EndPointStatus)
 private:
  inline void set_has_edge_clipped_points();
  inline void clear_has_edge_clipped_points();
  inline void set_has_point_match_result();
  inline void clear_has_point_match_result();
  inline void set_has_location_match_result();
  inline void clear_has_location_match_result();
  
  ::std::string* edge_clipped_points_;
  int point_match_result_;
  int location_match_result_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static EndPointStatus* default_instance_;
};
// -------------------------------------------------------------------

class Route : public ::google::protobuf::MessageLite {
 public:
  Route();
  virtual ~Route();
  
  Route(const Route& from);
  
  inline Route& operator=(const Route& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const Route& default_instance();
  
  void Swap(Route* other);
  
  // implements Message ----------------------------------------------
  
  Route* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const Route& from);
  void MergeFrom(const Route& 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 .com.telenav.proto.map.v4.RouteInfo route_info = 2;
  inline bool has_route_info() const;
  inline void clear_route_info();
  static const int kRouteInfoFieldNumber = 2;
  inline const ::com::telenav::proto::map::v4::RouteInfo& route_info() const;
  inline ::com::telenav::proto::map::v4::RouteInfo* mutable_route_info();
  inline ::com::telenav::proto::map::v4::RouteInfo* release_route_info();
  
  // repeated .com.telenav.proto.map.v4.Path path = 3;
  inline int path_size() const;
  inline void clear_path();
  static const int kPathFieldNumber = 3;
  inline const ::com::telenav::proto::map::v4::Path& path(int index) const;
  inline ::com::telenav::proto::map::v4::Path* mutable_path(int index);
  inline ::com::telenav::proto::map::v4::Path* add_path();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Path >&
      path() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Path >*
      mutable_path();
  
  // repeated .com.telenav.proto.map.v4.GuidanceSegment segment = 4;
  inline int segment_size() const;
  inline void clear_segment();
  static const int kSegmentFieldNumber = 4;
  inline const ::com::telenav::proto::map::v4::GuidanceSegment& segment(int index) const;
  inline ::com::telenav::proto::map::v4::GuidanceSegment* mutable_segment(int index);
  inline ::com::telenav::proto::map::v4::GuidanceSegment* add_segment();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::GuidanceSegment >&
      segment() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::GuidanceSegment >*
      mutable_segment();
  
  // optional bool partial = 5 [default = false];
  inline bool has_partial() const;
  inline void clear_partial();
  static const int kPartialFieldNumber = 5;
  inline bool partial() const;
  inline void set_partial(bool value);
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.Route)
 private:
  inline void set_has_route_info();
  inline void clear_has_route_info();
  inline void set_has_partial();
  inline void clear_has_partial();
  
  ::com::telenav::proto::map::v4::RouteInfo* route_info_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Path > path_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::GuidanceSegment > segment_;
  bool partial_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static Route* default_instance_;
};
// -------------------------------------------------------------------

class RouteInfo : public ::google::protobuf::MessageLite {
 public:
  RouteInfo();
  virtual ~RouteInfo();
  
  RouteInfo(const RouteInfo& from);
  
  inline RouteInfo& operator=(const RouteInfo& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const RouteInfo& default_instance();
  
  void Swap(RouteInfo* other);
  
  // implements Message ----------------------------------------------
  
  RouteInfo* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const RouteInfo& from);
  void MergeFrom(const RouteInfo& 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 string overview = 1;
  inline bool has_overview() const;
  inline void clear_overview();
  static const int kOverviewFieldNumber = 1;
  inline const ::std::string& overview() const;
  inline void set_overview(const ::std::string& value);
  inline void set_overview(const char* value);
  inline void set_overview(const char* value, size_t size);
  inline ::std::string* mutable_overview();
  inline ::std::string* release_overview();
  
  // optional string summary = 2;
  inline bool has_summary() const;
  inline void clear_summary();
  static const int kSummaryFieldNumber = 2;
  inline const ::std::string& summary() const;
  inline void set_summary(const ::std::string& value);
  inline void set_summary(const char* value);
  inline void set_summary(const char* value, size_t size);
  inline ::std::string* mutable_summary();
  inline ::std::string* release_summary();
  
  // optional int32 travel_time_in_second = 3;
  inline bool has_travel_time_in_second() const;
  inline void clear_travel_time_in_second();
  static const int kTravelTimeInSecondFieldNumber = 3;
  inline ::google::protobuf::int32 travel_time_in_second() const;
  inline void set_travel_time_in_second(::google::protobuf::int32 value);
  
  // optional int32 travel_dist_in_meter = 4;
  inline bool has_travel_dist_in_meter() const;
  inline void clear_travel_dist_in_meter();
  static const int kTravelDistInMeterFieldNumber = 4;
  inline ::google::protobuf::int32 travel_dist_in_meter() const;
  inline void set_travel_dist_in_meter(::google::protobuf::int32 value);
  
  // optional int32 traffic_delay_in_second = 5;
  inline bool has_traffic_delay_in_second() const;
  inline void clear_traffic_delay_in_second();
  static const int kTrafficDelayInSecondFieldNumber = 5;
  inline ::google::protobuf::int32 traffic_delay_in_second() const;
  inline void set_traffic_delay_in_second(::google::protobuf::int32 value);
  
  // optional int32 time_zone_id = 7;
  inline bool has_time_zone_id() const;
  inline void clear_time_zone_id();
  static const int kTimeZoneIdFieldNumber = 7;
  inline ::google::protobuf::int32 time_zone_id() const;
  inline void set_time_zone_id(::google::protobuf::int32 value);
  
  // optional bool estimate_only = 8;
  inline bool has_estimate_only() const;
  inline void clear_estimate_only();
  static const int kEstimateOnlyFieldNumber = 8;
  inline bool estimate_only() const;
  inline void set_estimate_only(bool value);
  
  // repeated .com.telenav.proto.map.v4.Warning warning = 9;
  inline int warning_size() const;
  inline void clear_warning();
  static const int kWarningFieldNumber = 9;
  inline com::telenav::proto::map::v4::Warning warning(int index) const;
  inline void set_warning(int index, com::telenav::proto::map::v4::Warning value);
  inline void add_warning(com::telenav::proto::map::v4::Warning value);
  inline const ::google::protobuf::RepeatedField<int>& warning() const;
  inline ::google::protobuf::RepeatedField<int>* mutable_warning();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.RouteInfo)
 private:
  inline void set_has_overview();
  inline void clear_has_overview();
  inline void set_has_summary();
  inline void clear_has_summary();
  inline void set_has_travel_time_in_second();
  inline void clear_has_travel_time_in_second();
  inline void set_has_travel_dist_in_meter();
  inline void clear_has_travel_dist_in_meter();
  inline void set_has_traffic_delay_in_second();
  inline void clear_has_traffic_delay_in_second();
  inline void set_has_time_zone_id();
  inline void clear_has_time_zone_id();
  inline void set_has_estimate_only();
  inline void clear_has_estimate_only();
  
  ::std::string* overview_;
  ::std::string* summary_;
  ::google::protobuf::int32 travel_time_in_second_;
  ::google::protobuf::int32 travel_dist_in_meter_;
  ::google::protobuf::int32 traffic_delay_in_second_;
  ::google::protobuf::int32 time_zone_id_;
  ::google::protobuf::RepeatedField<int> warning_;
  bool estimate_only_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static RouteInfo* default_instance_;
};
// -------------------------------------------------------------------

class Path : public ::google::protobuf::MessageLite {
 public:
  Path();
  virtual ~Path();
  
  Path(const Path& from);
  
  inline Path& operator=(const Path& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const Path& default_instance();
  
  void Swap(Path* other);
  
  // implements Message ----------------------------------------------
  
  Path* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const Path& from);
  void MergeFrom(const Path& 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 -------------------------------------------------------
  
  // repeated int32 segment_index = 1;
  inline int segment_index_size() const;
  inline void clear_segment_index();
  static const int kSegmentIndexFieldNumber = 1;
  inline ::google::protobuf::int32 segment_index(int index) const;
  inline void set_segment_index(int index, ::google::protobuf::int32 value);
  inline void add_segment_index(::google::protobuf::int32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
      segment_index() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
      mutable_segment_index();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.Path)
 private:
  
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > segment_index_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static Path* default_instance_;
};
// -------------------------------------------------------------------

class GuidanceSegment : public ::google::protobuf::MessageLite {
 public:
  GuidanceSegment();
  virtual ~GuidanceSegment();
  
  GuidanceSegment(const GuidanceSegment& from);
  
  inline GuidanceSegment& operator=(const GuidanceSegment& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const GuidanceSegment& default_instance();
  
  void Swap(GuidanceSegment* other);
  
  // implements Message ----------------------------------------------
  
  GuidanceSegment* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const GuidanceSegment& from);
  void MergeFrom(const GuidanceSegment& 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 .com.telenav.proto.map.v4.TurnType turn_type = 1;
  inline bool has_turn_type() const;
  inline void clear_turn_type();
  static const int kTurnTypeFieldNumber = 1;
  inline com::telenav::proto::map::v4::TurnType turn_type() const;
  inline void set_turn_type(com::telenav::proto::map::v4::TurnType value);
  
  // optional .com.telenav.proto.map.v4.TurnInfo turn_info = 2;
  inline bool has_turn_info() const;
  inline void clear_turn_info();
  static const int kTurnInfoFieldNumber = 2;
  inline const ::com::telenav::proto::map::v4::TurnInfo& turn_info() const;
  inline ::com::telenav::proto::map::v4::TurnInfo* mutable_turn_info();
  inline ::com::telenav::proto::map::v4::TurnInfo* release_turn_info();
  
  // repeated .com.telenav.proto.map.v4.Warning warning = 3;
  inline int warning_size() const;
  inline void clear_warning();
  static const int kWarningFieldNumber = 3;
  inline com::telenav::proto::map::v4::Warning warning(int index) const;
  inline void set_warning(int index, com::telenav::proto::map::v4::Warning value);
  inline void add_warning(com::telenav::proto::map::v4::Warning value);
  inline const ::google::protobuf::RepeatedField<int>& warning() const;
  inline ::google::protobuf::RepeatedField<int>* mutable_warning();
  
  // optional .com.telenav.proto.map.v4.SegmentRoadName road_name = 4;
  inline bool has_road_name() const;
  inline void clear_road_name();
  static const int kRoadNameFieldNumber = 4;
  inline const ::com::telenav::proto::map::v4::SegmentRoadName& road_name() const;
  inline ::com::telenav::proto::map::v4::SegmentRoadName* mutable_road_name();
  inline ::com::telenav::proto::map::v4::SegmentRoadName* release_road_name();
  
  // optional .com.telenav.proto.map.v4.SignPost sign_post = 5;
  inline bool has_sign_post() const;
  inline void clear_sign_post();
  static const int kSignPostFieldNumber = 5;
  inline const ::com::telenav::proto::map::v4::SignPost& sign_post() const;
  inline ::com::telenav::proto::map::v4::SignPost* mutable_sign_post();
  inline ::com::telenav::proto::map::v4::SignPost* release_sign_post();
  
  // repeated .com.telenav.proto.map.v4.SignBoard sign_board = 6;
  inline int sign_board_size() const;
  inline void clear_sign_board();
  static const int kSignBoardFieldNumber = 6;
  inline const ::com::telenav::proto::map::v4::SignBoard& sign_board(int index) const;
  inline ::com::telenav::proto::map::v4::SignBoard* mutable_sign_board(int index);
  inline ::com::telenav::proto::map::v4::SignBoard* add_sign_board();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::SignBoard >&
      sign_board() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::SignBoard >*
      mutable_sign_board();
  
  // repeated .com.telenav.proto.map.v4.RawSignpostRecord raw_signpost = 7;
  inline int raw_signpost_size() const;
  inline void clear_raw_signpost();
  static const int kRawSignpostFieldNumber = 7;
  inline const ::com::telenav::proto::map::v4::RawSignpostRecord& raw_signpost(int index) const;
  inline ::com::telenav::proto::map::v4::RawSignpostRecord* mutable_raw_signpost(int index);
  inline ::com::telenav::proto::map::v4::RawSignpostRecord* add_raw_signpost();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RawSignpostRecord >&
      raw_signpost() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RawSignpostRecord >*
      mutable_raw_signpost();
  
  // optional uint32 segment_flags = 8;
  inline bool has_segment_flags() const;
  inline void clear_segment_flags();
  static const int kSegmentFlagsFieldNumber = 8;
  inline ::google::protobuf::uint32 segment_flags() const;
  inline void set_segment_flags(::google::protobuf::uint32 value);
  
  // optional .com.telenav.proto.Country country = 10;
  inline bool has_country() const;
  inline void clear_country();
  static const int kCountryFieldNumber = 10;
  inline com::telenav::proto::Country country() const;
  inline void set_country(com::telenav::proto::Country value);
  
  // optional string language = 11;
  inline bool has_language() const;
  inline void clear_language();
  static const int kLanguageFieldNumber = 11;
  inline const ::std::string& language() const;
  inline void set_language(const ::std::string& value);
  inline void set_language(const char* value);
  inline void set_language(const char* value, size_t size);
  inline ::std::string* mutable_language();
  inline ::std::string* release_language();
  
  // optional bool is_left_side_drive = 12;
  inline bool has_is_left_side_drive() const;
  inline void clear_is_left_side_drive();
  static const int kIsLeftSideDriveFieldNumber = 12;
  inline bool is_left_side_drive() const;
  inline void set_is_left_side_drive(bool value);
  
  // repeated .com.telenav.proto.map.v4.LaneInfo lane_info = 13;
  inline int lane_info_size() const;
  inline void clear_lane_info();
  static const int kLaneInfoFieldNumber = 13;
  inline const ::com::telenav::proto::map::v4::LaneInfo& lane_info(int index) const;
  inline ::com::telenav::proto::map::v4::LaneInfo* mutable_lane_info(int index);
  inline ::com::telenav::proto::map::v4::LaneInfo* add_lane_info();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::LaneInfo >&
      lane_info() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::LaneInfo >*
      mutable_lane_info();
  
  // optional double length_in_meter = 14;
  inline bool has_length_in_meter() const;
  inline void clear_length_in_meter();
  static const int kLengthInMeterFieldNumber = 14;
  inline double length_in_meter() const;
  inline void set_length_in_meter(double value);
  
  // repeated .com.telenav.proto.map.v4.JunctionView junction_view = 15;
  inline int junction_view_size() const;
  inline void clear_junction_view();
  static const int kJunctionViewFieldNumber = 15;
  inline const ::com::telenav::proto::map::v4::JunctionView& junction_view(int index) const;
  inline ::com::telenav::proto::map::v4::JunctionView* mutable_junction_view(int index);
  inline ::com::telenav::proto::map::v4::JunctionView* add_junction_view();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::JunctionView >&
      junction_view() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::JunctionView >*
      mutable_junction_view();
  
  // repeated .com.telenav.proto.map.v4.Edge edge = 16;
  inline int edge_size() const;
  inline void clear_edge();
  static const int kEdgeFieldNumber = 16;
  inline const ::com::telenav::proto::map::v4::Edge& edge(int index) const;
  inline ::com::telenav::proto::map::v4::Edge* mutable_edge(int index);
  inline ::com::telenav::proto::map::v4::Edge* add_edge();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Edge >&
      edge() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Edge >*
      mutable_edge();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.GuidanceSegment)
 private:
  inline void set_has_turn_type();
  inline void clear_has_turn_type();
  inline void set_has_turn_info();
  inline void clear_has_turn_info();
  inline void set_has_road_name();
  inline void clear_has_road_name();
  inline void set_has_sign_post();
  inline void clear_has_sign_post();
  inline void set_has_segment_flags();
  inline void clear_has_segment_flags();
  inline void set_has_country();
  inline void clear_has_country();
  inline void set_has_language();
  inline void clear_has_language();
  inline void set_has_is_left_side_drive();
  inline void clear_has_is_left_side_drive();
  inline void set_has_length_in_meter();
  inline void clear_has_length_in_meter();
  
  ::com::telenav::proto::map::v4::TurnInfo* turn_info_;
  ::google::protobuf::RepeatedField<int> warning_;
  ::com::telenav::proto::map::v4::SegmentRoadName* road_name_;
  int turn_type_;
  ::google::protobuf::uint32 segment_flags_;
  ::com::telenav::proto::map::v4::SignPost* sign_post_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::SignBoard > sign_board_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RawSignpostRecord > raw_signpost_;
  ::std::string* language_;
  int country_;
  bool is_left_side_drive_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::LaneInfo > lane_info_;
  double length_in_meter_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::JunctionView > junction_view_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Edge > edge_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(15 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static GuidanceSegment* default_instance_;
};
// -------------------------------------------------------------------

class Name : public ::google::protobuf::MessageLite {
 public:
  Name();
  virtual ~Name();
  
  Name(const Name& from);
  
  inline Name& operator=(const Name& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const Name& default_instance();
  
  void Swap(Name* other);
  
  // implements Message ----------------------------------------------
  
  Name* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const Name& from);
  void MergeFrom(const Name& 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 string text = 1;
  inline bool has_text() const;
  inline void clear_text();
  static const int kTextFieldNumber = 1;
  inline const ::std::string& text() const;
  inline void set_text(const ::std::string& value);
  inline void set_text(const char* value);
  inline void set_text(const char* value, size_t size);
  inline ::std::string* mutable_text();
  inline ::std::string* release_text();
  
  // optional string phoneme = 2;
  inline bool has_phoneme() const;
  inline void clear_phoneme();
  static const int kPhonemeFieldNumber = 2;
  inline const ::std::string& phoneme() const;
  inline void set_phoneme(const ::std::string& value);
  inline void set_phoneme(const char* value);
  inline void set_phoneme(const char* value, size_t size);
  inline ::std::string* mutable_phoneme();
  inline ::std::string* release_phoneme();
  
  // optional string language_tag = 3;
  inline bool has_language_tag() const;
  inline void clear_language_tag();
  static const int kLanguageTagFieldNumber = 3;
  inline const ::std::string& language_tag() const;
  inline void set_language_tag(const ::std::string& value);
  inline void set_language_tag(const char* value);
  inline void set_language_tag(const char* value, size_t size);
  inline ::std::string* mutable_language_tag();
  inline ::std::string* release_language_tag();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.Name)
 private:
  inline void set_has_text();
  inline void clear_has_text();
  inline void set_has_phoneme();
  inline void clear_has_phoneme();
  inline void set_has_language_tag();
  inline void clear_has_language_tag();
  
  ::std::string* text_;
  ::std::string* phoneme_;
  ::std::string* language_tag_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static Name* default_instance_;
};
// -------------------------------------------------------------------

class RoadName : public ::google::protobuf::MessageLite {
 public:
  RoadName();
  virtual ~RoadName();
  
  RoadName(const RoadName& from);
  
  inline RoadName& operator=(const RoadName& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const RoadName& default_instance();
  
  void Swap(RoadName* other);
  
  // implements Message ----------------------------------------------
  
  RoadName* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const RoadName& from);
  void MergeFrom(const RoadName& 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 .com.telenav.proto.map.v4.Name name = 1;
  inline bool has_name() const;
  inline void clear_name();
  static const int kNameFieldNumber = 1;
  inline const ::com::telenav::proto::map::v4::Name& name() const;
  inline ::com::telenav::proto::map::v4::Name* mutable_name();
  inline ::com::telenav::proto::map::v4::Name* release_name();
  
  // optional .com.telenav.proto.map.v4.Name short_name = 2;
  inline bool has_short_name() const;
  inline void clear_short_name();
  static const int kShortNameFieldNumber = 2;
  inline const ::com::telenav::proto::map::v4::Name& short_name() const;
  inline ::com::telenav::proto::map::v4::Name* mutable_short_name();
  inline ::com::telenav::proto::map::v4::Name* release_short_name();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.RoadName)
 private:
  inline void set_has_name();
  inline void clear_has_name();
  inline void set_has_short_name();
  inline void clear_has_short_name();
  
  ::com::telenav::proto::map::v4::Name* name_;
  ::com::telenav::proto::map::v4::Name* short_name_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static RoadName* default_instance_;
};
// -------------------------------------------------------------------

class SegmentRoadName : public ::google::protobuf::MessageLite {
 public:
  SegmentRoadName();
  virtual ~SegmentRoadName();
  
  SegmentRoadName(const SegmentRoadName& from);
  
  inline SegmentRoadName& operator=(const SegmentRoadName& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const SegmentRoadName& default_instance();
  
  void Swap(SegmentRoadName* other);
  
  // implements Message ----------------------------------------------
  
  SegmentRoadName* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const SegmentRoadName& from);
  void MergeFrom(const SegmentRoadName& 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 -------------------------------------------------------
  
  // repeated .com.telenav.proto.map.v4.RoadName official_name = 1;
  inline int official_name_size() const;
  inline void clear_official_name();
  static const int kOfficialNameFieldNumber = 1;
  inline const ::com::telenav::proto::map::v4::RoadName& official_name(int index) const;
  inline ::com::telenav::proto::map::v4::RoadName* mutable_official_name(int index);
  inline ::com::telenav::proto::map::v4::RoadName* add_official_name();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
      official_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
      mutable_official_name();
  
  // repeated .com.telenav.proto.map.v4.RoadName route_number = 2;
  inline int route_number_size() const;
  inline void clear_route_number();
  static const int kRouteNumberFieldNumber = 2;
  inline const ::com::telenav::proto::map::v4::RoadName& route_number(int index) const;
  inline ::com::telenav::proto::map::v4::RoadName* mutable_route_number(int index);
  inline ::com::telenav::proto::map::v4::RoadName* add_route_number();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
      route_number() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
      mutable_route_number();
  
  // repeated .com.telenav.proto.map.v4.RoadName alternate_name = 3;
  inline int alternate_name_size() const;
  inline void clear_alternate_name();
  static const int kAlternateNameFieldNumber = 3;
  inline const ::com::telenav::proto::map::v4::RoadName& alternate_name(int index) const;
  inline ::com::telenav::proto::map::v4::RoadName* mutable_alternate_name(int index);
  inline ::com::telenav::proto::map::v4::RoadName* add_alternate_name();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
      alternate_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
      mutable_alternate_name();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.SegmentRoadName)
 private:
  
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName > official_name_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName > route_number_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName > alternate_name_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static SegmentRoadName* default_instance_;
};
// -------------------------------------------------------------------

class SignPost : public ::google::protobuf::MessageLite {
 public:
  SignPost();
  virtual ~SignPost();
  
  SignPost(const SignPost& from);
  
  inline SignPost& operator=(const SignPost& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const SignPost& default_instance();
  
  void Swap(SignPost* other);
  
  // implements Message ----------------------------------------------
  
  SignPost* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const SignPost& from);
  void MergeFrom(const SignPost& 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 -------------------------------------------------------
  
  // repeated .com.telenav.proto.map.v4.RoadName official_name = 1;
  inline int official_name_size() const;
  inline void clear_official_name();
  static const int kOfficialNameFieldNumber = 1;
  inline const ::com::telenav::proto::map::v4::RoadName& official_name(int index) const;
  inline ::com::telenav::proto::map::v4::RoadName* mutable_official_name(int index);
  inline ::com::telenav::proto::map::v4::RoadName* add_official_name();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
      official_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
      mutable_official_name();
  
  // repeated .com.telenav.proto.map.v4.RoadName route_number = 2;
  inline int route_number_size() const;
  inline void clear_route_number();
  static const int kRouteNumberFieldNumber = 2;
  inline const ::com::telenav::proto::map::v4::RoadName& route_number(int index) const;
  inline ::com::telenav::proto::map::v4::RoadName* mutable_route_number(int index);
  inline ::com::telenav::proto::map::v4::RoadName* add_route_number();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
      route_number() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
      mutable_route_number();
  
  // repeated .com.telenav.proto.map.v4.RoadName alternate_name = 3;
  inline int alternate_name_size() const;
  inline void clear_alternate_name();
  static const int kAlternateNameFieldNumber = 3;
  inline const ::com::telenav::proto::map::v4::RoadName& alternate_name(int index) const;
  inline ::com::telenav::proto::map::v4::RoadName* mutable_alternate_name(int index);
  inline ::com::telenav::proto::map::v4::RoadName* add_alternate_name();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
      alternate_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
      mutable_alternate_name();
  
  // repeated .com.telenav.proto.map.v4.Name place_name = 4;
  inline int place_name_size() const;
  inline void clear_place_name();
  static const int kPlaceNameFieldNumber = 4;
  inline const ::com::telenav::proto::map::v4::Name& place_name(int index) const;
  inline ::com::telenav::proto::map::v4::Name* mutable_place_name(int index);
  inline ::com::telenav::proto::map::v4::Name* add_place_name();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Name >&
      place_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Name >*
      mutable_place_name();
  
  // optional .com.telenav.proto.map.v4.Name exit_label = 5;
  inline bool has_exit_label() const;
  inline void clear_exit_label();
  static const int kExitLabelFieldNumber = 5;
  inline const ::com::telenav::proto::map::v4::Name& exit_label() const;
  inline ::com::telenav::proto::map::v4::Name* mutable_exit_label();
  inline ::com::telenav::proto::map::v4::Name* release_exit_label();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.SignPost)
 private:
  inline void set_has_exit_label();
  inline void clear_has_exit_label();
  
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName > official_name_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName > route_number_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName > alternate_name_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Name > place_name_;
  ::com::telenav::proto::map::v4::Name* exit_label_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static SignPost* default_instance_;
};
// -------------------------------------------------------------------

class SignBoard : public ::google::protobuf::MessageLite {
 public:
  SignBoard();
  virtual ~SignBoard();
  
  SignBoard(const SignBoard& from);
  
  inline SignBoard& operator=(const SignBoard& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const SignBoard& default_instance();
  
  void Swap(SignBoard* other);
  
  // implements Message ----------------------------------------------
  
  SignBoard* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const SignBoard& from);
  void MergeFrom(const SignBoard& 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 .com.telenav.proto.map.v4.SignBoardType type = 1;
  inline bool has_type() const;
  inline void clear_type();
  static const int kTypeFieldNumber = 1;
  inline com::telenav::proto::map::v4::SignBoardType type() const;
  inline void set_type(com::telenav::proto::map::v4::SignBoardType value);
  
  // optional string pattern_id = 2;
  inline bool has_pattern_id() const;
  inline void clear_pattern_id();
  static const int kPatternIdFieldNumber = 2;
  inline const ::std::string& pattern_id() const;
  inline void set_pattern_id(const ::std::string& value);
  inline void set_pattern_id(const char* value);
  inline void set_pattern_id(const char* value, size_t size);
  inline ::std::string* mutable_pattern_id();
  inline ::std::string* release_pattern_id();
  
  // optional string arrow_id = 3;
  inline bool has_arrow_id() const;
  inline void clear_arrow_id();
  static const int kArrowIdFieldNumber = 3;
  inline const ::std::string& arrow_id() const;
  inline void set_arrow_id(const ::std::string& value);
  inline void set_arrow_id(const char* value);
  inline void set_arrow_id(const char* value, size_t size);
  inline ::std::string* mutable_arrow_id();
  inline ::std::string* release_arrow_id();
  
  // optional string image_id = 4;
  inline bool has_image_id() const;
  inline void clear_image_id();
  static const int kImageIdFieldNumber = 4;
  inline const ::std::string& image_id() const;
  inline void set_image_id(const ::std::string& value);
  inline void set_image_id(const char* value);
  inline void set_image_id(const char* value, size_t size);
  inline ::std::string* mutable_image_id();
  inline ::std::string* release_image_id();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.SignBoard)
 private:
  inline void set_has_type();
  inline void clear_has_type();
  inline void set_has_pattern_id();
  inline void clear_has_pattern_id();
  inline void set_has_arrow_id();
  inline void clear_has_arrow_id();
  inline void set_has_image_id();
  inline void clear_has_image_id();
  
  ::std::string* pattern_id_;
  ::std::string* arrow_id_;
  ::std::string* image_id_;
  int type_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static SignBoard* default_instance_;
};
// -------------------------------------------------------------------

class AdminNameInfo : public ::google::protobuf::MessageLite {
 public:
  AdminNameInfo();
  virtual ~AdminNameInfo();
  
  AdminNameInfo(const AdminNameInfo& from);
  
  inline AdminNameInfo& operator=(const AdminNameInfo& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const AdminNameInfo& default_instance();
  
  void Swap(AdminNameInfo* other);
  
  // implements Message ----------------------------------------------
  
  AdminNameInfo* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const AdminNameInfo& from);
  void MergeFrom(const AdminNameInfo& 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 ----------------------------------------------------
  
  typedef AdminNameInfo_AdminSide AdminSide;
  static const AdminSide ON_LEFT = AdminNameInfo_AdminSide_ON_LEFT;
  static const AdminSide ON_RIGHT = AdminNameInfo_AdminSide_ON_RIGHT;
  static const AdminSide ON_BOTH = AdminNameInfo_AdminSide_ON_BOTH;
  static const AdminSide ON_NONE = AdminNameInfo_AdminSide_ON_NONE;
  static inline bool AdminSide_IsValid(int value) {
    return AdminNameInfo_AdminSide_IsValid(value);
  }
  static const AdminSide AdminSide_MIN =
    AdminNameInfo_AdminSide_AdminSide_MIN;
  static const AdminSide AdminSide_MAX =
    AdminNameInfo_AdminSide_AdminSide_MAX;
  static const int AdminSide_ARRAYSIZE =
    AdminNameInfo_AdminSide_AdminSide_ARRAYSIZE;
  
  // accessors -------------------------------------------------------
  
  // optional .com.telenav.proto.map.v4.AdminNameInfo.AdminSide admin_side = 1;
  inline bool has_admin_side() const;
  inline void clear_admin_side();
  static const int kAdminSideFieldNumber = 1;
  inline ::com::telenav::proto::map::v4::AdminNameInfo_AdminSide admin_side() const;
  inline void set_admin_side(::com::telenav::proto::map::v4::AdminNameInfo_AdminSide value);
  
  // optional string country = 2;
  inline bool has_country() const;
  inline void clear_country();
  static const int kCountryFieldNumber = 2;
  inline const ::std::string& country() const;
  inline void set_country(const ::std::string& value);
  inline void set_country(const char* value);
  inline void set_country(const char* value, size_t size);
  inline ::std::string* mutable_country();
  inline ::std::string* release_country();
  
  // optional string zip_code = 3;
  inline bool has_zip_code() const;
  inline void clear_zip_code();
  static const int kZipCodeFieldNumber = 3;
  inline const ::std::string& zip_code() const;
  inline void set_zip_code(const ::std::string& value);
  inline void set_zip_code(const char* value);
  inline void set_zip_code(const char* value, size_t size);
  inline ::std::string* mutable_zip_code();
  inline ::std::string* release_zip_code();
  
  // repeated string state_name = 6;
  inline int state_name_size() const;
  inline void clear_state_name();
  static const int kStateNameFieldNumber = 6;
  inline const ::std::string& state_name(int index) const;
  inline ::std::string* mutable_state_name(int index);
  inline void set_state_name(int index, const ::std::string& value);
  inline void set_state_name(int index, const char* value);
  inline void set_state_name(int index, const char* value, size_t size);
  inline ::std::string* add_state_name();
  inline void add_state_name(const ::std::string& value);
  inline void add_state_name(const char* value);
  inline void add_state_name(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& state_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_state_name();
  
  // repeated string city_name = 7;
  inline int city_name_size() const;
  inline void clear_city_name();
  static const int kCityNameFieldNumber = 7;
  inline const ::std::string& city_name(int index) const;
  inline ::std::string* mutable_city_name(int index);
  inline void set_city_name(int index, const ::std::string& value);
  inline void set_city_name(int index, const char* value);
  inline void set_city_name(int index, const char* value, size_t size);
  inline ::std::string* add_city_name();
  inline void add_city_name(const ::std::string& value);
  inline void add_city_name(const char* value);
  inline void add_city_name(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& city_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_city_name();
  
  // repeated string city_alias_name = 8;
  inline int city_alias_name_size() const;
  inline void clear_city_alias_name();
  static const int kCityAliasNameFieldNumber = 8;
  inline const ::std::string& city_alias_name(int index) const;
  inline ::std::string* mutable_city_alias_name(int index);
  inline void set_city_alias_name(int index, const ::std::string& value);
  inline void set_city_alias_name(int index, const char* value);
  inline void set_city_alias_name(int index, const char* value, size_t size);
  inline ::std::string* add_city_alias_name();
  inline void add_city_alias_name(const ::std::string& value);
  inline void add_city_alias_name(const char* value);
  inline void add_city_alias_name(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& city_alias_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_city_alias_name();
  
  // repeated string sub_city_name = 9;
  inline int sub_city_name_size() const;
  inline void clear_sub_city_name();
  static const int kSubCityNameFieldNumber = 9;
  inline const ::std::string& sub_city_name(int index) const;
  inline ::std::string* mutable_sub_city_name(int index);
  inline void set_sub_city_name(int index, const ::std::string& value);
  inline void set_sub_city_name(int index, const char* value);
  inline void set_sub_city_name(int index, const char* value, size_t size);
  inline ::std::string* add_sub_city_name();
  inline void add_sub_city_name(const ::std::string& value);
  inline void add_sub_city_name(const char* value);
  inline void add_sub_city_name(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& sub_city_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_sub_city_name();
  
  // repeated string county_name = 10;
  inline int county_name_size() const;
  inline void clear_county_name();
  static const int kCountyNameFieldNumber = 10;
  inline const ::std::string& county_name(int index) const;
  inline ::std::string* mutable_county_name(int index);
  inline void set_county_name(int index, const ::std::string& value);
  inline void set_county_name(int index, const char* value);
  inline void set_county_name(int index, const char* value, size_t size);
  inline ::std::string* add_county_name();
  inline void add_county_name(const ::std::string& value);
  inline void add_county_name(const char* value);
  inline void add_county_name(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& county_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_county_name();
  
  // repeated string sub_county_name = 11;
  inline int sub_county_name_size() const;
  inline void clear_sub_county_name();
  static const int kSubCountyNameFieldNumber = 11;
  inline const ::std::string& sub_county_name(int index) const;
  inline ::std::string* mutable_sub_county_name(int index);
  inline void set_sub_county_name(int index, const ::std::string& value);
  inline void set_sub_county_name(int index, const char* value);
  inline void set_sub_county_name(int index, const char* value, size_t size);
  inline ::std::string* add_sub_county_name();
  inline void add_sub_county_name(const ::std::string& value);
  inline void add_sub_county_name(const char* value);
  inline void add_sub_county_name(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& sub_county_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_sub_county_name();
  
  // repeated string road_sign = 15;
  inline int road_sign_size() const;
  inline void clear_road_sign();
  static const int kRoadSignFieldNumber = 15;
  inline const ::std::string& road_sign(int index) const;
  inline ::std::string* mutable_road_sign(int index);
  inline void set_road_sign(int index, const ::std::string& value);
  inline void set_road_sign(int index, const char* value);
  inline void set_road_sign(int index, const char* value, size_t size);
  inline ::std::string* add_road_sign();
  inline void add_road_sign(const ::std::string& value);
  inline void add_road_sign(const char* value);
  inline void add_road_sign(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& road_sign() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_road_sign();
  
  // repeated string area_name = 16;
  inline int area_name_size() const;
  inline void clear_area_name();
  static const int kAreaNameFieldNumber = 16;
  inline const ::std::string& area_name(int index) const;
  inline ::std::string* mutable_area_name(int index);
  inline void set_area_name(int index, const ::std::string& value);
  inline void set_area_name(int index, const char* value);
  inline void set_area_name(int index, const char* value, size_t size);
  inline ::std::string* add_area_name();
  inline void add_area_name(const ::std::string& value);
  inline void add_area_name(const char* value);
  inline void add_area_name(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& area_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_area_name();
  
  // repeated string street_name = 17;
  inline int street_name_size() const;
  inline void clear_street_name();
  static const int kStreetNameFieldNumber = 17;
  inline const ::std::string& street_name(int index) const;
  inline ::std::string* mutable_street_name(int index);
  inline void set_street_name(int index, const ::std::string& value);
  inline void set_street_name(int index, const char* value);
  inline void set_street_name(int index, const char* value, size_t size);
  inline ::std::string* add_street_name();
  inline void add_street_name(const ::std::string& value);
  inline void add_street_name(const char* value);
  inline void add_street_name(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& street_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_street_name();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.AdminNameInfo)
 private:
  inline void set_has_admin_side();
  inline void clear_has_admin_side();
  inline void set_has_country();
  inline void clear_has_country();
  inline void set_has_zip_code();
  inline void clear_has_zip_code();
  
  ::std::string* country_;
  ::std::string* zip_code_;
  ::google::protobuf::RepeatedPtrField< ::std::string> state_name_;
  ::google::protobuf::RepeatedPtrField< ::std::string> city_name_;
  ::google::protobuf::RepeatedPtrField< ::std::string> city_alias_name_;
  ::google::protobuf::RepeatedPtrField< ::std::string> sub_city_name_;
  ::google::protobuf::RepeatedPtrField< ::std::string> county_name_;
  ::google::protobuf::RepeatedPtrField< ::std::string> sub_county_name_;
  ::google::protobuf::RepeatedPtrField< ::std::string> road_sign_;
  ::google::protobuf::RepeatedPtrField< ::std::string> area_name_;
  ::google::protobuf::RepeatedPtrField< ::std::string> street_name_;
  int admin_side_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(12 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static AdminNameInfo* default_instance_;
};
// -------------------------------------------------------------------

class RawSignpostRecord : public ::google::protobuf::MessageLite {
 public:
  RawSignpostRecord();
  virtual ~RawSignpostRecord();
  
  RawSignpostRecord(const RawSignpostRecord& from);
  
  inline RawSignpostRecord& operator=(const RawSignpostRecord& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const RawSignpostRecord& default_instance();
  
  void Swap(RawSignpostRecord* other);
  
  // implements Message ----------------------------------------------
  
  RawSignpostRecord* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const RawSignpostRecord& from);
  void MergeFrom(const RawSignpostRecord& 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 .com.telenav.proto.map.v4.RawSignpostCategory signpost_category = 1;
  inline bool has_signpost_category() const;
  inline void clear_signpost_category();
  static const int kSignpostCategoryFieldNumber = 1;
  inline com::telenav::proto::map::v4::RawSignpostCategory signpost_category() const;
  inline void set_signpost_category(com::telenav::proto::map::v4::RawSignpostCategory value);
  
  // optional .com.telenav.proto.map.v4.RawNameCategory name_category = 2;
  inline bool has_name_category() const;
  inline void clear_name_category();
  static const int kNameCategoryFieldNumber = 2;
  inline com::telenav::proto::map::v4::RawNameCategory name_category() const;
  inline void set_name_category(com::telenav::proto::map::v4::RawNameCategory value);
  
  // optional uint32 name_sub_category = 3;
  inline bool has_name_sub_category() const;
  inline void clear_name_sub_category();
  static const int kNameSubCategoryFieldNumber = 3;
  inline ::google::protobuf::uint32 name_sub_category() const;
  inline void set_name_sub_category(::google::protobuf::uint32 value);
  
  // optional string content = 4;
  inline bool has_content() const;
  inline void clear_content();
  static const int kContentFieldNumber = 4;
  inline const ::std::string& content() const;
  inline void set_content(const ::std::string& value);
  inline void set_content(const char* value);
  inline void set_content(const char* value, size_t size);
  inline ::std::string* mutable_content();
  inline ::std::string* release_content();
  
  // optional string language_tag = 5;
  inline bool has_language_tag() const;
  inline void clear_language_tag();
  static const int kLanguageTagFieldNumber = 5;
  inline const ::std::string& language_tag() const;
  inline void set_language_tag(const ::std::string& value);
  inline void set_language_tag(const char* value);
  inline void set_language_tag(const char* value, size_t size);
  inline ::std::string* mutable_language_tag();
  inline ::std::string* release_language_tag();
  
  // optional string translated = 6;
  inline bool has_translated() const;
  inline void clear_translated();
  static const int kTranslatedFieldNumber = 6;
  inline const ::std::string& translated() const;
  inline void set_translated(const ::std::string& value);
  inline void set_translated(const char* value);
  inline void set_translated(const char* value, size_t size);
  inline ::std::string* mutable_translated();
  inline ::std::string* release_translated();
  
  // optional string translated_language_tag = 7;
  inline bool has_translated_language_tag() const;
  inline void clear_translated_language_tag();
  static const int kTranslatedLanguageTagFieldNumber = 7;
  inline const ::std::string& translated_language_tag() const;
  inline void set_translated_language_tag(const ::std::string& value);
  inline void set_translated_language_tag(const char* value);
  inline void set_translated_language_tag(const char* value, size_t size);
  inline ::std::string* mutable_translated_language_tag();
  inline ::std::string* release_translated_language_tag();
  
  // repeated string phoneme = 8;
  inline int phoneme_size() const;
  inline void clear_phoneme();
  static const int kPhonemeFieldNumber = 8;
  inline const ::std::string& phoneme(int index) const;
  inline ::std::string* mutable_phoneme(int index);
  inline void set_phoneme(int index, const ::std::string& value);
  inline void set_phoneme(int index, const char* value);
  inline void set_phoneme(int index, const char* value, size_t size);
  inline ::std::string* add_phoneme();
  inline void add_phoneme(const ::std::string& value);
  inline void add_phoneme(const char* value);
  inline void add_phoneme(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& phoneme() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_phoneme();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.RawSignpostRecord)
 private:
  inline void set_has_signpost_category();
  inline void clear_has_signpost_category();
  inline void set_has_name_category();
  inline void clear_has_name_category();
  inline void set_has_name_sub_category();
  inline void clear_has_name_sub_category();
  inline void set_has_content();
  inline void clear_has_content();
  inline void set_has_language_tag();
  inline void clear_has_language_tag();
  inline void set_has_translated();
  inline void clear_has_translated();
  inline void set_has_translated_language_tag();
  inline void clear_has_translated_language_tag();
  
  int signpost_category_;
  int name_category_;
  ::std::string* content_;
  ::std::string* language_tag_;
  ::std::string* translated_;
  ::std::string* translated_language_tag_;
  ::google::protobuf::RepeatedPtrField< ::std::string> phoneme_;
  ::google::protobuf::uint32 name_sub_category_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static RawSignpostRecord* default_instance_;
};
// -------------------------------------------------------------------

class EdgeExtraInfo : public ::google::protobuf::MessageLite {
 public:
  EdgeExtraInfo();
  virtual ~EdgeExtraInfo();
  
  EdgeExtraInfo(const EdgeExtraInfo& from);
  
  inline EdgeExtraInfo& operator=(const EdgeExtraInfo& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const EdgeExtraInfo& default_instance();
  
  void Swap(EdgeExtraInfo* other);
  
  // implements Message ----------------------------------------------
  
  EdgeExtraInfo* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const EdgeExtraInfo& from);
  void MergeFrom(const EdgeExtraInfo& 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 .com.telenav.proto.map.v4.RawRoadType raw_road_type = 1;
  inline bool has_raw_road_type() const;
  inline void clear_raw_road_type();
  static const int kRawRoadTypeFieldNumber = 1;
  inline com::telenav::proto::map::v4::RawRoadType raw_road_type() const;
  inline void set_raw_road_type(com::telenav::proto::map::v4::RawRoadType value);
  
  // optional .com.telenav.proto.map.v4.RawRoadSubType raw_road_sub_type = 2;
  inline bool has_raw_road_sub_type() const;
  inline void clear_raw_road_sub_type();
  static const int kRawRoadSubTypeFieldNumber = 2;
  inline com::telenav::proto::map::v4::RawRoadSubType raw_road_sub_type() const;
  inline void set_raw_road_sub_type(com::telenav::proto::map::v4::RawRoadSubType value);
  
  // optional int32 road_priority = 3;
  inline bool has_road_priority() const;
  inline void clear_road_priority();
  static const int kRoadPriorityFieldNumber = 3;
  inline ::google::protobuf::int32 road_priority() const;
  inline void set_road_priority(::google::protobuf::int32 value);
  
  // optional double average_speed = 4;
  inline bool has_average_speed() const;
  inline void clear_average_speed();
  static const int kAverageSpeedFieldNumber = 4;
  inline double average_speed() const;
  inline void set_average_speed(double value);
  
  // optional double historical_speed = 5;
  inline bool has_historical_speed() const;
  inline void clear_historical_speed();
  static const int kHistoricalSpeedFieldNumber = 5;
  inline double historical_speed() const;
  inline void set_historical_speed(double value);
  
  // optional .com.telenav.proto.map.v4.EdgeRestrictedConnectionType edge_restricted_connection_type = 7;
  inline bool has_edge_restricted_connection_type() const;
  inline void clear_edge_restricted_connection_type();
  static const int kEdgeRestrictedConnectionTypeFieldNumber = 7;
  inline com::telenav::proto::map::v4::EdgeRestrictedConnectionType edge_restricted_connection_type() const;
  inline void set_edge_restricted_connection_type(com::telenav::proto::map::v4::EdgeRestrictedConnectionType value);
  
  // optional int32 time_restrict_id = 8;
  inline bool has_time_restrict_id() const;
  inline void clear_time_restrict_id();
  static const int kTimeRestrictIdFieldNumber = 8;
  inline ::google::protobuf::int32 time_restrict_id() const;
  inline void set_time_restrict_id(::google::protobuf::int32 value);
  
  // optional int32 time_zone_index = 9;
  inline bool has_time_zone_index() const;
  inline void clear_time_zone_index();
  static const int kTimeZoneIndexFieldNumber = 9;
  inline ::google::protobuf::int32 time_zone_index() const;
  inline void set_time_zone_index(::google::protobuf::int32 value);
  
  // optional int32 fans_count = 10;
  inline bool has_fans_count() const;
  inline void clear_fans_count();
  static const int kFansCountFieldNumber = 10;
  inline ::google::protobuf::int32 fans_count() const;
  inline void set_fans_count(::google::protobuf::int32 value);
  
  // optional uint32 edge_flags = 11;
  inline bool has_edge_flags() const;
  inline void clear_edge_flags();
  static const int kEdgeFlagsFieldNumber = 11;
  inline ::google::protobuf::uint32 edge_flags() const;
  inline void set_edge_flags(::google::protobuf::uint32 value);
  
  // repeated .com.telenav.proto.map.v4.RoadName official_name = 12;
  inline int official_name_size() const;
  inline void clear_official_name();
  static const int kOfficialNameFieldNumber = 12;
  inline const ::com::telenav::proto::map::v4::RoadName& official_name(int index) const;
  inline ::com::telenav::proto::map::v4::RoadName* mutable_official_name(int index);
  inline ::com::telenav::proto::map::v4::RoadName* add_official_name();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
      official_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
      mutable_official_name();
  
  // repeated .com.telenav.proto.map.v4.RoadName route_number = 13;
  inline int route_number_size() const;
  inline void clear_route_number();
  static const int kRouteNumberFieldNumber = 13;
  inline const ::com::telenav::proto::map::v4::RoadName& route_number(int index) const;
  inline ::com::telenav::proto::map::v4::RoadName* mutable_route_number(int index);
  inline ::com::telenav::proto::map::v4::RoadName* add_route_number();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
      route_number() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
      mutable_route_number();
  
  // repeated .com.telenav.proto.map.v4.RoadName alternate_name = 14;
  inline int alternate_name_size() const;
  inline void clear_alternate_name();
  static const int kAlternateNameFieldNumber = 14;
  inline const ::com::telenav::proto::map::v4::RoadName& alternate_name(int index) const;
  inline ::com::telenav::proto::map::v4::RoadName* mutable_alternate_name(int index);
  inline ::com::telenav::proto::map::v4::RoadName* add_alternate_name();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
      alternate_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
      mutable_alternate_name();
  
  // repeated .com.telenav.proto.map.v4.AdminNameInfo admin_name = 15;
  inline int admin_name_size() const;
  inline void clear_admin_name();
  static const int kAdminNameFieldNumber = 15;
  inline const ::com::telenav::proto::map::v4::AdminNameInfo& admin_name(int index) const;
  inline ::com::telenav::proto::map::v4::AdminNameInfo* mutable_admin_name(int index);
  inline ::com::telenav::proto::map::v4::AdminNameInfo* add_admin_name();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::AdminNameInfo >&
      admin_name() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::AdminNameInfo >*
      mutable_admin_name();
  
  // repeated .com.telenav.proto.map.v4.LaneInfo lane_info = 16;
  inline int lane_info_size() const;
  inline void clear_lane_info();
  static const int kLaneInfoFieldNumber = 16;
  inline const ::com::telenav::proto::map::v4::LaneInfo& lane_info(int index) const;
  inline ::com::telenav::proto::map::v4::LaneInfo* mutable_lane_info(int index);
  inline ::com::telenav::proto::map::v4::LaneInfo* add_lane_info();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::LaneInfo >&
      lane_info() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::LaneInfo >*
      mutable_lane_info();
  
  // repeated .com.telenav.proto.map.v4.RawSignpostRecord edge_signpost = 17;
  inline int edge_signpost_size() const;
  inline void clear_edge_signpost();
  static const int kEdgeSignpostFieldNumber = 17;
  inline const ::com::telenav::proto::map::v4::RawSignpostRecord& edge_signpost(int index) const;
  inline ::com::telenav::proto::map::v4::RawSignpostRecord* mutable_edge_signpost(int index);
  inline ::com::telenav::proto::map::v4::RawSignpostRecord* add_edge_signpost();
  inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RawSignpostRecord >&
      edge_signpost() const;
  inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RawSignpostRecord >*
      mutable_edge_signpost();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.EdgeExtraInfo)
 private:
  inline void set_has_raw_road_type();
  inline void clear_has_raw_road_type();
  inline void set_has_raw_road_sub_type();
  inline void clear_has_raw_road_sub_type();
  inline void set_has_road_priority();
  inline void clear_has_road_priority();
  inline void set_has_average_speed();
  inline void clear_has_average_speed();
  inline void set_has_historical_speed();
  inline void clear_has_historical_speed();
  inline void set_has_edge_restricted_connection_type();
  inline void clear_has_edge_restricted_connection_type();
  inline void set_has_time_restrict_id();
  inline void clear_has_time_restrict_id();
  inline void set_has_time_zone_index();
  inline void clear_has_time_zone_index();
  inline void set_has_fans_count();
  inline void clear_has_fans_count();
  inline void set_has_edge_flags();
  inline void clear_has_edge_flags();
  
  int raw_road_type_;
  int raw_road_sub_type_;
  double average_speed_;
  ::google::protobuf::int32 road_priority_;
  int edge_restricted_connection_type_;
  double historical_speed_;
  ::google::protobuf::int32 time_restrict_id_;
  ::google::protobuf::int32 time_zone_index_;
  ::google::protobuf::int32 fans_count_;
  ::google::protobuf::uint32 edge_flags_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName > official_name_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName > route_number_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName > alternate_name_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::AdminNameInfo > admin_name_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::LaneInfo > lane_info_;
  ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RawSignpostRecord > edge_signpost_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(16 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static EdgeExtraInfo* default_instance_;
};
// -------------------------------------------------------------------

class Edge : public ::google::protobuf::MessageLite {
 public:
  Edge();
  virtual ~Edge();
  
  Edge(const Edge& from);
  
  inline Edge& operator=(const Edge& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const Edge& default_instance();
  
  void Swap(Edge* other);
  
  // implements Message ----------------------------------------------
  
  Edge* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const Edge& from);
  void MergeFrom(const Edge& 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 .com.telenav.proto.map.RoadType road_type = 1;
  inline bool has_road_type() const;
  inline void clear_road_type();
  static const int kRoadTypeFieldNumber = 1;
  inline com::telenav::proto::map::RoadType road_type() const;
  inline void set_road_type(com::telenav::proto::map::RoadType value);
  
  // optional double speed_limit_in_kph = 3 [default = -1];
  inline bool has_speed_limit_in_kph() const;
  inline void clear_speed_limit_in_kph();
  static const int kSpeedLimitInKphFieldNumber = 3;
  inline double speed_limit_in_kph() const;
  inline void set_speed_limit_in_kph(double value);
  
  // optional double travel_speed_in_mps = 4 [default = -1];
  inline bool has_travel_speed_in_mps() const;
  inline void clear_travel_speed_in_mps();
  static const int kTravelSpeedInMpsFieldNumber = 4;
  inline double travel_speed_in_mps() const;
  inline void set_travel_speed_in_mps(double value);
  
  // repeated string map_edge_id = 5;
  inline int map_edge_id_size() const;
  inline void clear_map_edge_id();
  static const int kMapEdgeIdFieldNumber = 5;
  inline const ::std::string& map_edge_id(int index) const;
  inline ::std::string* mutable_map_edge_id(int index);
  inline void set_map_edge_id(int index, const ::std::string& value);
  inline void set_map_edge_id(int index, const char* value);
  inline void set_map_edge_id(int index, const char* value, size_t size);
  inline ::std::string* add_map_edge_id();
  inline void add_map_edge_id(const ::std::string& value);
  inline void add_map_edge_id(const char* value);
  inline void add_map_edge_id(const char* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& map_edge_id() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_map_edge_id();
  
  // optional double length_in_meter = 6;
  inline bool has_length_in_meter() const;
  inline void clear_length_in_meter();
  static const int kLengthInMeterFieldNumber = 6;
  inline double length_in_meter() const;
  inline void set_length_in_meter(double value);
  
  // optional string encoded_polyline = 7;
  inline bool has_encoded_polyline() const;
  inline void clear_encoded_polyline();
  static const int kEncodedPolylineFieldNumber = 7;
  inline const ::std::string& encoded_polyline() const;
  inline void set_encoded_polyline(const ::std::string& value);
  inline void set_encoded_polyline(const char* value);
  inline void set_encoded_polyline(const char* value, size_t size);
  inline ::std::string* mutable_encoded_polyline();
  inline ::std::string* release_encoded_polyline();
  
  // optional string traffic_id = 8;
  inline bool has_traffic_id() const;
  inline void clear_traffic_id();
  static const int kTrafficIdFieldNumber = 8;
  inline const ::std::string& traffic_id() const;
  inline void set_traffic_id(const ::std::string& value);
  inline void set_traffic_id(const char* value);
  inline void set_traffic_id(const char* value, size_t size);
  inline ::std::string* mutable_traffic_id();
  inline ::std::string* release_traffic_id();
  
  // optional int32 turn_cost_in_second = 10;
  inline bool has_turn_cost_in_second() const;
  inline void clear_turn_cost_in_second();
  static const int kTurnCostInSecondFieldNumber = 10;
  inline ::google::protobuf::int32 turn_cost_in_second() const;
  inline void set_turn_cost_in_second(::google::protobuf::int32 value);
  
  // optional .com.telenav.proto.map.v4.EdgeExtraInfo edge_extra_info = 11;
  inline bool has_edge_extra_info() const;
  inline void clear_edge_extra_info();
  static const int kEdgeExtraInfoFieldNumber = 11;
  inline const ::com::telenav::proto::map::v4::EdgeExtraInfo& edge_extra_info() const;
  inline ::com::telenav::proto::map::v4::EdgeExtraInfo* mutable_edge_extra_info();
  inline ::com::telenav::proto::map::v4::EdgeExtraInfo* release_edge_extra_info();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.Edge)
 private:
  inline void set_has_road_type();
  inline void clear_has_road_type();
  inline void set_has_speed_limit_in_kph();
  inline void clear_has_speed_limit_in_kph();
  inline void set_has_travel_speed_in_mps();
  inline void clear_has_travel_speed_in_mps();
  inline void set_has_length_in_meter();
  inline void clear_has_length_in_meter();
  inline void set_has_encoded_polyline();
  inline void clear_has_encoded_polyline();
  inline void set_has_traffic_id();
  inline void clear_has_traffic_id();
  inline void set_has_turn_cost_in_second();
  inline void clear_has_turn_cost_in_second();
  inline void set_has_edge_extra_info();
  inline void clear_has_edge_extra_info();
  
  double speed_limit_in_kph_;
  double travel_speed_in_mps_;
  ::google::protobuf::RepeatedPtrField< ::std::string> map_edge_id_;
  int road_type_;
  ::google::protobuf::int32 turn_cost_in_second_;
  double length_in_meter_;
  ::std::string* encoded_polyline_;
  ::std::string* traffic_id_;
  ::com::telenav::proto::map::v4::EdgeExtraInfo* edge_extra_info_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(9 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static Edge* default_instance_;
};
// -------------------------------------------------------------------

class LaneInfo : public ::google::protobuf::MessageLite {
 public:
  LaneInfo();
  virtual ~LaneInfo();
  
  LaneInfo(const LaneInfo& from);
  
  inline LaneInfo& operator=(const LaneInfo& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const LaneInfo& default_instance();
  
  void Swap(LaneInfo* other);
  
  // implements Message ----------------------------------------------
  
  LaneInfo* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const LaneInfo& from);
  void MergeFrom(const LaneInfo& 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 .com.telenav.proto.map.v4.LanePattern pattern = 1;
  inline bool has_pattern() const;
  inline void clear_pattern();
  static const int kPatternFieldNumber = 1;
  inline com::telenav::proto::map::v4::LanePattern pattern() const;
  inline void set_pattern(com::telenav::proto::map::v4::LanePattern value);
  
  // optional .com.telenav.proto.map.v4.HighlightedLane highlight = 2;
  inline bool has_highlight() const;
  inline void clear_highlight();
  static const int kHighlightFieldNumber = 2;
  inline com::telenav::proto::map::v4::HighlightedLane highlight() const;
  inline void set_highlight(com::telenav::proto::map::v4::HighlightedLane value);
  
  // optional bool preferred = 3 [default = false];
  inline bool has_preferred() const;
  inline void clear_preferred();
  static const int kPreferredFieldNumber = 3;
  inline bool preferred() const;
  inline void set_preferred(bool value);
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.LaneInfo)
 private:
  inline void set_has_pattern();
  inline void clear_has_pattern();
  inline void set_has_highlight();
  inline void clear_has_highlight();
  inline void set_has_preferred();
  inline void clear_has_preferred();
  
  int pattern_;
  int highlight_;
  bool preferred_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static LaneInfo* default_instance_;
};
// -------------------------------------------------------------------

class JunctionView : public ::google::protobuf::MessageLite {
 public:
  JunctionView();
  virtual ~JunctionView();
  
  JunctionView(const JunctionView& from);
  
  inline JunctionView& operator=(const JunctionView& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const JunctionView& default_instance();
  
  void Swap(JunctionView* other);
  
  // implements Message ----------------------------------------------
  
  JunctionView* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const JunctionView& from);
  void MergeFrom(const JunctionView& 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 .com.telenav.proto.map.v4.JunctionViewType type = 1;
  inline bool has_type() const;
  inline void clear_type();
  static const int kTypeFieldNumber = 1;
  inline com::telenav::proto::map::v4::JunctionViewType type() const;
  inline void set_type(com::telenav::proto::map::v4::JunctionViewType value);
  
  // optional string pattern_id = 2;
  inline bool has_pattern_id() const;
  inline void clear_pattern_id();
  static const int kPatternIdFieldNumber = 2;
  inline const ::std::string& pattern_id() const;
  inline void set_pattern_id(const ::std::string& value);
  inline void set_pattern_id(const char* value);
  inline void set_pattern_id(const char* value, size_t size);
  inline ::std::string* mutable_pattern_id();
  inline ::std::string* release_pattern_id();
  
  // optional string arrow_id = 3;
  inline bool has_arrow_id() const;
  inline void clear_arrow_id();
  static const int kArrowIdFieldNumber = 3;
  inline const ::std::string& arrow_id() const;
  inline void set_arrow_id(const ::std::string& value);
  inline void set_arrow_id(const char* value);
  inline void set_arrow_id(const char* value, size_t size);
  inline ::std::string* mutable_arrow_id();
  inline ::std::string* release_arrow_id();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.JunctionView)
 private:
  inline void set_has_type();
  inline void clear_has_type();
  inline void set_has_pattern_id();
  inline void clear_has_pattern_id();
  inline void set_has_arrow_id();
  inline void clear_has_arrow_id();
  
  ::std::string* pattern_id_;
  ::std::string* arrow_id_;
  int type_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static JunctionView* default_instance_;
};
// -------------------------------------------------------------------

class TurnInfo : public ::google::protobuf::MessageLite {
 public:
  TurnInfo();
  virtual ~TurnInfo();
  
  TurnInfo(const TurnInfo& from);
  
  inline TurnInfo& operator=(const TurnInfo& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const TurnInfo& default_instance();
  
  void Swap(TurnInfo* other);
  
  // implements Message ----------------------------------------------
  
  TurnInfo* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const TurnInfo& from);
  void MergeFrom(const TurnInfo& 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 .com.telenav.proto.map.v4.GuidanceRoadType from_roadtype = 1;
  inline bool has_from_roadtype() const;
  inline void clear_from_roadtype();
  static const int kFromRoadtypeFieldNumber = 1;
  inline com::telenav::proto::map::v4::GuidanceRoadType from_roadtype() const;
  inline void set_from_roadtype(com::telenav::proto::map::v4::GuidanceRoadType value);
  
  // optional .com.telenav.proto.map.v4.GuidanceRoadType to_roadtype = 2;
  inline bool has_to_roadtype() const;
  inline void clear_to_roadtype();
  static const int kToRoadtypeFieldNumber = 2;
  inline com::telenav::proto::map::v4::GuidanceRoadType to_roadtype() const;
  inline void set_to_roadtype(com::telenav::proto::map::v4::GuidanceRoadType value);
  
  // optional int32 radius_in_meter = 3;
  inline bool has_radius_in_meter() const;
  inline void clear_radius_in_meter();
  static const int kRadiusInMeterFieldNumber = 3;
  inline ::google::protobuf::int32 radius_in_meter() const;
  inline void set_radius_in_meter(::google::protobuf::int32 value);
  
  // optional int32 target_number = 4;
  inline bool has_target_number() const;
  inline void clear_target_number();
  static const int kTargetNumberFieldNumber = 4;
  inline ::google::protobuf::int32 target_number() const;
  inline void set_target_number(::google::protobuf::int32 value);
  
  // optional int32 nth_turn = 5;
  inline bool has_nth_turn() const;
  inline void clear_nth_turn();
  static const int kNthTurnFieldNumber = 5;
  inline ::google::protobuf::int32 nth_turn() const;
  inline void set_nth_turn(::google::protobuf::int32 value);
  
  // repeated double nth_turn_distances = 6;
  inline int nth_turn_distances_size() const;
  inline void clear_nth_turn_distances();
  static const int kNthTurnDistancesFieldNumber = 6;
  inline double nth_turn_distances(int index) const;
  inline void set_nth_turn_distances(int index, double value);
  inline void add_nth_turn_distances(double value);
  inline const ::google::protobuf::RepeatedField< double >&
      nth_turn_distances() const;
  inline ::google::protobuf::RepeatedField< double >*
      mutable_nth_turn_distances();
  
  // @@protoc_insertion_point(class_scope:com.telenav.proto.map.v4.TurnInfo)
 private:
  inline void set_has_from_roadtype();
  inline void clear_has_from_roadtype();
  inline void set_has_to_roadtype();
  inline void clear_has_to_roadtype();
  inline void set_has_radius_in_meter();
  inline void clear_has_radius_in_meter();
  inline void set_has_target_number();
  inline void clear_has_target_number();
  inline void set_has_nth_turn();
  inline void clear_has_nth_turn();
  
  int from_roadtype_;
  int to_roadtype_;
  ::google::protobuf::int32 radius_in_meter_;
  ::google::protobuf::int32 target_number_;
  ::google::protobuf::RepeatedField< double > nth_turn_distances_;
  ::google::protobuf::int32 nth_turn_;
  
  mutable int _cached_size_;
  ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32];
  
  friend void  protobuf_AddDesc_map_2edirections_2eproto();
  friend void protobuf_AssignDesc_map_2edirections_2eproto();
  friend void protobuf_ShutdownFile_map_2edirections_2eproto();
  
  void InitAsDefaultInstance();
  static TurnInfo* default_instance_;
};
// ===================================================================


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

// RouteRequest

// optional .com.telenav.proto.map.v4.Location origin = 1;
inline bool RouteRequest::has_origin() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void RouteRequest::set_has_origin() {
  _has_bits_[0] |= 0x00000001u;
}
inline void RouteRequest::clear_has_origin() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void RouteRequest::clear_origin() {
  if (origin_ != NULL) origin_->::com::telenav::proto::map::v4::Location::Clear();
  clear_has_origin();
}
inline const ::com::telenav::proto::map::v4::Location& RouteRequest::origin() const {
  return origin_ != NULL ? *origin_ : *default_instance_->origin_;
}
inline ::com::telenav::proto::map::v4::Location* RouteRequest::mutable_origin() {
  set_has_origin();
  if (origin_ == NULL) origin_ = new ::com::telenav::proto::map::v4::Location;
  return origin_;
}
inline ::com::telenav::proto::map::v4::Location* RouteRequest::release_origin() {
  clear_has_origin();
  ::com::telenav::proto::map::v4::Location* temp = origin_;
  origin_ = NULL;
  return temp;
}

// optional .com.telenav.proto.map.v4.Location destination = 2;
inline bool RouteRequest::has_destination() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void RouteRequest::set_has_destination() {
  _has_bits_[0] |= 0x00000002u;
}
inline void RouteRequest::clear_has_destination() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void RouteRequest::clear_destination() {
  if (destination_ != NULL) destination_->::com::telenav::proto::map::v4::Location::Clear();
  clear_has_destination();
}
inline const ::com::telenav::proto::map::v4::Location& RouteRequest::destination() const {
  return destination_ != NULL ? *destination_ : *default_instance_->destination_;
}
inline ::com::telenav::proto::map::v4::Location* RouteRequest::mutable_destination() {
  set_has_destination();
  if (destination_ == NULL) destination_ = new ::com::telenav::proto::map::v4::Location;
  return destination_;
}
inline ::com::telenav::proto::map::v4::Location* RouteRequest::release_destination() {
  clear_has_destination();
  ::com::telenav::proto::map::v4::Location* temp = destination_;
  destination_ = NULL;
  return temp;
}

// optional .com.telenav.proto.map.v4.RouteStyle style = 7 [default = FASTEST];
inline bool RouteRequest::has_style() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void RouteRequest::set_has_style() {
  _has_bits_[0] |= 0x00000004u;
}
inline void RouteRequest::clear_has_style() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void RouteRequest::clear_style() {
  style_ = 1;
  clear_has_style();
}
inline com::telenav::proto::map::v4::RouteStyle RouteRequest::style() const {
  return static_cast< com::telenav::proto::map::v4::RouteStyle >(style_);
}
inline void RouteRequest::set_style(com::telenav::proto::map::v4::RouteStyle value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::RouteStyle_IsValid(value));
  set_has_style();
  style_ = value;
}

// optional .com.telenav.proto.map.v4.RouteOption option = 8;
inline bool RouteRequest::has_option() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void RouteRequest::set_has_option() {
  _has_bits_[0] |= 0x00000008u;
}
inline void RouteRequest::clear_has_option() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void RouteRequest::clear_option() {
  if (option_ != NULL) option_->::com::telenav::proto::map::v4::RouteOption::Clear();
  clear_has_option();
}
inline const ::com::telenav::proto::map::v4::RouteOption& RouteRequest::option() const {
  return option_ != NULL ? *option_ : *default_instance_->option_;
}
inline ::com::telenav::proto::map::v4::RouteOption* RouteRequest::mutable_option() {
  set_has_option();
  if (option_ == NULL) option_ = new ::com::telenav::proto::map::v4::RouteOption;
  return option_;
}
inline ::com::telenav::proto::map::v4::RouteOption* RouteRequest::release_option() {
  clear_has_option();
  ::com::telenav::proto::map::v4::RouteOption* temp = option_;
  option_ = NULL;
  return temp;
}

// optional int32 max_route_number = 9 [default = 1];
inline bool RouteRequest::has_max_route_number() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void RouteRequest::set_has_max_route_number() {
  _has_bits_[0] |= 0x00000010u;
}
inline void RouteRequest::clear_has_max_route_number() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void RouteRequest::clear_max_route_number() {
  max_route_number_ = 1;
  clear_has_max_route_number();
}
inline ::google::protobuf::int32 RouteRequest::max_route_number() const {
  return max_route_number_;
}
inline void RouteRequest::set_max_route_number(::google::protobuf::int32 value) {
  set_has_max_route_number();
  max_route_number_ = value;
}

// optional int32 heading = 10 [default = -1];
inline bool RouteRequest::has_heading() const {
  return (_has_bits_[0] & 0x00000020u) != 0;
}
inline void RouteRequest::set_has_heading() {
  _has_bits_[0] |= 0x00000020u;
}
inline void RouteRequest::clear_has_heading() {
  _has_bits_[0] &= ~0x00000020u;
}
inline void RouteRequest::clear_heading() {
  heading_ = -1;
  clear_has_heading();
}
inline ::google::protobuf::int32 RouteRequest::heading() const {
  return heading_;
}
inline void RouteRequest::set_heading(::google::protobuf::int32 value) {
  set_has_heading();
  heading_ = value;
}

// optional int32 speed_in_mps = 11;
inline bool RouteRequest::has_speed_in_mps() const {
  return (_has_bits_[0] & 0x00000040u) != 0;
}
inline void RouteRequest::set_has_speed_in_mps() {
  _has_bits_[0] |= 0x00000040u;
}
inline void RouteRequest::clear_has_speed_in_mps() {
  _has_bits_[0] &= ~0x00000040u;
}
inline void RouteRequest::clear_speed_in_mps() {
  speed_in_mps_ = 0;
  clear_has_speed_in_mps();
}
inline ::google::protobuf::int32 RouteRequest::speed_in_mps() const {
  return speed_in_mps_;
}
inline void RouteRequest::set_speed_in_mps(::google::protobuf::int32 value) {
  set_has_speed_in_mps();
  speed_in_mps_ = value;
}

// repeated .com.telenav.proto.LatLon dest_candidate = 12;
inline int RouteRequest::dest_candidate_size() const {
  return dest_candidate_.size();
}
inline void RouteRequest::clear_dest_candidate() {
  dest_candidate_.Clear();
}
inline const ::com::telenav::proto::LatLon& RouteRequest::dest_candidate(int index) const {
  return dest_candidate_.Get(index);
}
inline ::com::telenav::proto::LatLon* RouteRequest::mutable_dest_candidate(int index) {
  return dest_candidate_.Mutable(index);
}
inline ::com::telenav::proto::LatLon* RouteRequest::add_dest_candidate() {
  return dest_candidate_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::LatLon >&
RouteRequest::dest_candidate() const {
  return dest_candidate_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::LatLon >*
RouteRequest::mutable_dest_candidate() {
  return &dest_candidate_;
}

// optional .com.telenav.proto.map.v4.OutputOption output_option = 13;
inline bool RouteRequest::has_output_option() const {
  return (_has_bits_[0] & 0x00000100u) != 0;
}
inline void RouteRequest::set_has_output_option() {
  _has_bits_[0] |= 0x00000100u;
}
inline void RouteRequest::clear_has_output_option() {
  _has_bits_[0] &= ~0x00000100u;
}
inline void RouteRequest::clear_output_option() {
  if (output_option_ != NULL) output_option_->::com::telenav::proto::map::v4::OutputOption::Clear();
  clear_has_output_option();
}
inline const ::com::telenav::proto::map::v4::OutputOption& RouteRequest::output_option() const {
  return output_option_ != NULL ? *output_option_ : *default_instance_->output_option_;
}
inline ::com::telenav::proto::map::v4::OutputOption* RouteRequest::mutable_output_option() {
  set_has_output_option();
  if (output_option_ == NULL) output_option_ = new ::com::telenav::proto::map::v4::OutputOption;
  return output_option_;
}
inline ::com::telenav::proto::map::v4::OutputOption* RouteRequest::release_output_option() {
  clear_has_output_option();
  ::com::telenav::proto::map::v4::OutputOption* temp = output_option_;
  output_option_ = NULL;
  return temp;
}

// optional int32 deviation_count = 18;
inline bool RouteRequest::has_deviation_count() const {
  return (_has_bits_[0] & 0x00000200u) != 0;
}
inline void RouteRequest::set_has_deviation_count() {
  _has_bits_[0] |= 0x00000200u;
}
inline void RouteRequest::clear_has_deviation_count() {
  _has_bits_[0] &= ~0x00000200u;
}
inline void RouteRequest::clear_deviation_count() {
  deviation_count_ = 0;
  clear_has_deviation_count();
}
inline ::google::protobuf::int32 RouteRequest::deviation_count() const {
  return deviation_count_;
}
inline void RouteRequest::set_deviation_count(::google::protobuf::int32 value) {
  set_has_deviation_count();
  deviation_count_ = value;
}

// optional string data_set = 19;
inline bool RouteRequest::has_data_set() const {
  return (_has_bits_[0] & 0x00000400u) != 0;
}
inline void RouteRequest::set_has_data_set() {
  _has_bits_[0] |= 0x00000400u;
}
inline void RouteRequest::clear_has_data_set() {
  _has_bits_[0] &= ~0x00000400u;
}
inline void RouteRequest::clear_data_set() {
  if (data_set_ != &::google::protobuf::internal::kEmptyString) {
    data_set_->clear();
  }
  clear_has_data_set();
}
inline const ::std::string& RouteRequest::data_set() const {
  return *data_set_;
}
inline void RouteRequest::set_data_set(const ::std::string& value) {
  set_has_data_set();
  if (data_set_ == &::google::protobuf::internal::kEmptyString) {
    data_set_ = new ::std::string;
  }
  data_set_->assign(value);
}
inline void RouteRequest::set_data_set(const char* value) {
  set_has_data_set();
  if (data_set_ == &::google::protobuf::internal::kEmptyString) {
    data_set_ = new ::std::string;
  }
  data_set_->assign(value);
}
inline void RouteRequest::set_data_set(const char* value, size_t size) {
  set_has_data_set();
  if (data_set_ == &::google::protobuf::internal::kEmptyString) {
    data_set_ = new ::std::string;
  }
  data_set_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* RouteRequest::mutable_data_set() {
  set_has_data_set();
  if (data_set_ == &::google::protobuf::internal::kEmptyString) {
    data_set_ = new ::std::string;
  }
  return data_set_;
}
inline ::std::string* RouteRequest::release_data_set() {
  clear_has_data_set();
  if (data_set_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = data_set_;
    data_set_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional .com.telenav.proto.Context context = 16;
inline bool RouteRequest::has_context() const {
  return (_has_bits_[0] & 0x00000800u) != 0;
}
inline void RouteRequest::set_has_context() {
  _has_bits_[0] |= 0x00000800u;
}
inline void RouteRequest::clear_has_context() {
  _has_bits_[0] &= ~0x00000800u;
}
inline void RouteRequest::clear_context() {
  if (context_ != NULL) context_->::com::telenav::proto::Context::Clear();
  clear_has_context();
}
inline const ::com::telenav::proto::Context& RouteRequest::context() const {
  return context_ != NULL ? *context_ : *default_instance_->context_;
}
inline ::com::telenav::proto::Context* RouteRequest::mutable_context() {
  set_has_context();
  if (context_ == NULL) context_ = new ::com::telenav::proto::Context;
  return context_;
}
inline ::com::telenav::proto::Context* RouteRequest::release_context() {
  clear_has_context();
  ::com::telenav::proto::Context* temp = context_;
  context_ = NULL;
  return temp;
}

// optional int64 route_start_time = 20;
inline bool RouteRequest::has_route_start_time() const {
  return (_has_bits_[0] & 0x00001000u) != 0;
}
inline void RouteRequest::set_has_route_start_time() {
  _has_bits_[0] |= 0x00001000u;
}
inline void RouteRequest::clear_has_route_start_time() {
  _has_bits_[0] &= ~0x00001000u;
}
inline void RouteRequest::clear_route_start_time() {
  route_start_time_ = GOOGLE_LONGLONG(0);
  clear_has_route_start_time();
}
inline ::google::protobuf::int64 RouteRequest::route_start_time() const {
  return route_start_time_;
}
inline void RouteRequest::set_route_start_time(::google::protobuf::int64 value) {
  set_has_route_start_time();
  route_start_time_ = value;
}

// optional bool use_time_restriction_for_road = 21;
inline bool RouteRequest::has_use_time_restriction_for_road() const {
  return (_has_bits_[0] & 0x00002000u) != 0;
}
inline void RouteRequest::set_has_use_time_restriction_for_road() {
  _has_bits_[0] |= 0x00002000u;
}
inline void RouteRequest::clear_has_use_time_restriction_for_road() {
  _has_bits_[0] &= ~0x00002000u;
}
inline void RouteRequest::clear_use_time_restriction_for_road() {
  use_time_restriction_for_road_ = false;
  clear_has_use_time_restriction_for_road();
}
inline bool RouteRequest::use_time_restriction_for_road() const {
  return use_time_restriction_for_road_;
}
inline void RouteRequest::set_use_time_restriction_for_road(bool value) {
  set_has_use_time_restriction_for_road();
  use_time_restriction_for_road_ = value;
}

// optional .com.telenav.proto.map.v4.EcoMode eco_mode = 22 [default = HIGH_ECO_MODE];
inline bool RouteRequest::has_eco_mode() const {
  return (_has_bits_[0] & 0x00004000u) != 0;
}
inline void RouteRequest::set_has_eco_mode() {
  _has_bits_[0] |= 0x00004000u;
}
inline void RouteRequest::clear_has_eco_mode() {
  _has_bits_[0] &= ~0x00004000u;
}
inline void RouteRequest::clear_eco_mode() {
  eco_mode_ = 3;
  clear_has_eco_mode();
}
inline com::telenav::proto::map::v4::EcoMode RouteRequest::eco_mode() const {
  return static_cast< com::telenav::proto::map::v4::EcoMode >(eco_mode_);
}
inline void RouteRequest::set_eco_mode(com::telenav::proto::map::v4::EcoMode value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::EcoMode_IsValid(value));
  set_has_eco_mode();
  eco_mode_ = value;
}

// repeated .com.telenav.proto.map.v4.Location waypoint = 23;
inline int RouteRequest::waypoint_size() const {
  return waypoint_.size();
}
inline void RouteRequest::clear_waypoint() {
  waypoint_.Clear();
}
inline const ::com::telenav::proto::map::v4::Location& RouteRequest::waypoint(int index) const {
  return waypoint_.Get(index);
}
inline ::com::telenav::proto::map::v4::Location* RouteRequest::mutable_waypoint(int index) {
  return waypoint_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::Location* RouteRequest::add_waypoint() {
  return waypoint_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Location >&
RouteRequest::waypoint() const {
  return waypoint_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Location >*
RouteRequest::mutable_waypoint() {
  return &waypoint_;
}

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

// RouteOption

// optional bool avoid_hov_lane = 1;
inline bool RouteOption::has_avoid_hov_lane() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void RouteOption::set_has_avoid_hov_lane() {
  _has_bits_[0] |= 0x00000001u;
}
inline void RouteOption::clear_has_avoid_hov_lane() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void RouteOption::clear_avoid_hov_lane() {
  avoid_hov_lane_ = false;
  clear_has_avoid_hov_lane();
}
inline bool RouteOption::avoid_hov_lane() const {
  return avoid_hov_lane_;
}
inline void RouteOption::set_avoid_hov_lane(bool value) {
  set_has_avoid_hov_lane();
  avoid_hov_lane_ = value;
}

// optional bool avoid_highway = 2;
inline bool RouteOption::has_avoid_highway() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void RouteOption::set_has_avoid_highway() {
  _has_bits_[0] |= 0x00000002u;
}
inline void RouteOption::clear_has_avoid_highway() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void RouteOption::clear_avoid_highway() {
  avoid_highway_ = false;
  clear_has_avoid_highway();
}
inline bool RouteOption::avoid_highway() const {
  return avoid_highway_;
}
inline void RouteOption::set_avoid_highway(bool value) {
  set_has_avoid_highway();
  avoid_highway_ = value;
}

// optional bool avoid_toll_road = 3;
inline bool RouteOption::has_avoid_toll_road() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void RouteOption::set_has_avoid_toll_road() {
  _has_bits_[0] |= 0x00000004u;
}
inline void RouteOption::clear_has_avoid_toll_road() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void RouteOption::clear_avoid_toll_road() {
  avoid_toll_road_ = false;
  clear_has_avoid_toll_road();
}
inline bool RouteOption::avoid_toll_road() const {
  return avoid_toll_road_;
}
inline void RouteOption::set_avoid_toll_road(bool value) {
  set_has_avoid_toll_road();
  avoid_toll_road_ = value;
}

// optional bool avoid_ferry = 4;
inline bool RouteOption::has_avoid_ferry() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void RouteOption::set_has_avoid_ferry() {
  _has_bits_[0] |= 0x00000008u;
}
inline void RouteOption::clear_has_avoid_ferry() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void RouteOption::clear_avoid_ferry() {
  avoid_ferry_ = false;
  clear_has_avoid_ferry();
}
inline bool RouteOption::avoid_ferry() const {
  return avoid_ferry_;
}
inline void RouteOption::set_avoid_ferry(bool value) {
  set_has_avoid_ferry();
  avoid_ferry_ = value;
}

// optional bool avoid_car_train = 5;
inline bool RouteOption::has_avoid_car_train() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void RouteOption::set_has_avoid_car_train() {
  _has_bits_[0] |= 0x00000010u;
}
inline void RouteOption::clear_has_avoid_car_train() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void RouteOption::clear_avoid_car_train() {
  avoid_car_train_ = false;
  clear_has_avoid_car_train();
}
inline bool RouteOption::avoid_car_train() const {
  return avoid_car_train_;
}
inline void RouteOption::set_avoid_car_train(bool value) {
  set_has_avoid_car_train();
  avoid_car_train_ = value;
}

// optional bool avoid_unpaved_road = 6;
inline bool RouteOption::has_avoid_unpaved_road() const {
  return (_has_bits_[0] & 0x00000020u) != 0;
}
inline void RouteOption::set_has_avoid_unpaved_road() {
  _has_bits_[0] |= 0x00000020u;
}
inline void RouteOption::clear_has_avoid_unpaved_road() {
  _has_bits_[0] &= ~0x00000020u;
}
inline void RouteOption::clear_avoid_unpaved_road() {
  avoid_unpaved_road_ = false;
  clear_has_avoid_unpaved_road();
}
inline bool RouteOption::avoid_unpaved_road() const {
  return avoid_unpaved_road_;
}
inline void RouteOption::set_avoid_unpaved_road(bool value) {
  set_has_avoid_unpaved_road();
  avoid_unpaved_road_ = value;
}

// optional bool avoid_tunnel = 7;
inline bool RouteOption::has_avoid_tunnel() const {
  return (_has_bits_[0] & 0x00000040u) != 0;
}
inline void RouteOption::set_has_avoid_tunnel() {
  _has_bits_[0] |= 0x00000040u;
}
inline void RouteOption::clear_has_avoid_tunnel() {
  _has_bits_[0] &= ~0x00000040u;
}
inline void RouteOption::clear_avoid_tunnel() {
  avoid_tunnel_ = false;
  clear_has_avoid_tunnel();
}
inline bool RouteOption::avoid_tunnel() const {
  return avoid_tunnel_;
}
inline void RouteOption::set_avoid_tunnel(bool value) {
  set_has_avoid_tunnel();
  avoid_tunnel_ = value;
}

// optional bool avoid_uturn = 8;
inline bool RouteOption::has_avoid_uturn() const {
  return (_has_bits_[0] & 0x00000080u) != 0;
}
inline void RouteOption::set_has_avoid_uturn() {
  _has_bits_[0] |= 0x00000080u;
}
inline void RouteOption::clear_has_avoid_uturn() {
  _has_bits_[0] &= ~0x00000080u;
}
inline void RouteOption::clear_avoid_uturn() {
  avoid_uturn_ = false;
  clear_has_avoid_uturn();
}
inline bool RouteOption::avoid_uturn() const {
  return avoid_uturn_;
}
inline void RouteOption::set_avoid_uturn(bool value) {
  set_has_avoid_uturn();
  avoid_uturn_ = value;
}

// optional bool avoid_traffic = 9;
inline bool RouteOption::has_avoid_traffic() const {
  return (_has_bits_[0] & 0x00000100u) != 0;
}
inline void RouteOption::set_has_avoid_traffic() {
  _has_bits_[0] |= 0x00000100u;
}
inline void RouteOption::clear_has_avoid_traffic() {
  _has_bits_[0] &= ~0x00000100u;
}
inline void RouteOption::clear_avoid_traffic() {
  avoid_traffic_ = false;
  clear_has_avoid_traffic();
}
inline bool RouteOption::avoid_traffic() const {
  return avoid_traffic_;
}
inline void RouteOption::set_avoid_traffic(bool value) {
  set_has_avoid_traffic();
  avoid_traffic_ = value;
}

// repeated string must_avoid_edge_id = 10;
inline int RouteOption::must_avoid_edge_id_size() const {
  return must_avoid_edge_id_.size();
}
inline void RouteOption::clear_must_avoid_edge_id() {
  must_avoid_edge_id_.Clear();
}
inline const ::std::string& RouteOption::must_avoid_edge_id(int index) const {
  return must_avoid_edge_id_.Get(index);
}
inline ::std::string* RouteOption::mutable_must_avoid_edge_id(int index) {
  return must_avoid_edge_id_.Mutable(index);
}
inline void RouteOption::set_must_avoid_edge_id(int index, const ::std::string& value) {
  must_avoid_edge_id_.Mutable(index)->assign(value);
}
inline void RouteOption::set_must_avoid_edge_id(int index, const char* value) {
  must_avoid_edge_id_.Mutable(index)->assign(value);
}
inline void RouteOption::set_must_avoid_edge_id(int index, const char* value, size_t size) {
  must_avoid_edge_id_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* RouteOption::add_must_avoid_edge_id() {
  return must_avoid_edge_id_.Add();
}
inline void RouteOption::add_must_avoid_edge_id(const ::std::string& value) {
  must_avoid_edge_id_.Add()->assign(value);
}
inline void RouteOption::add_must_avoid_edge_id(const char* value) {
  must_avoid_edge_id_.Add()->assign(value);
}
inline void RouteOption::add_must_avoid_edge_id(const char* value, size_t size) {
  must_avoid_edge_id_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
RouteOption::must_avoid_edge_id() const {
  return must_avoid_edge_id_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
RouteOption::mutable_must_avoid_edge_id() {
  return &must_avoid_edge_id_;
}

// repeated string try_avoid_edge_Id = 11;
inline int RouteOption::try_avoid_edge_id_size() const {
  return try_avoid_edge_id_.size();
}
inline void RouteOption::clear_try_avoid_edge_id() {
  try_avoid_edge_id_.Clear();
}
inline const ::std::string& RouteOption::try_avoid_edge_id(int index) const {
  return try_avoid_edge_id_.Get(index);
}
inline ::std::string* RouteOption::mutable_try_avoid_edge_id(int index) {
  return try_avoid_edge_id_.Mutable(index);
}
inline void RouteOption::set_try_avoid_edge_id(int index, const ::std::string& value) {
  try_avoid_edge_id_.Mutable(index)->assign(value);
}
inline void RouteOption::set_try_avoid_edge_id(int index, const char* value) {
  try_avoid_edge_id_.Mutable(index)->assign(value);
}
inline void RouteOption::set_try_avoid_edge_id(int index, const char* value, size_t size) {
  try_avoid_edge_id_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* RouteOption::add_try_avoid_edge_id() {
  return try_avoid_edge_id_.Add();
}
inline void RouteOption::add_try_avoid_edge_id(const ::std::string& value) {
  try_avoid_edge_id_.Add()->assign(value);
}
inline void RouteOption::add_try_avoid_edge_id(const char* value) {
  try_avoid_edge_id_.Add()->assign(value);
}
inline void RouteOption::add_try_avoid_edge_id(const char* value, size_t size) {
  try_avoid_edge_id_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
RouteOption::try_avoid_edge_id() const {
  return try_avoid_edge_id_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
RouteOption::mutable_try_avoid_edge_id() {
  return &try_avoid_edge_id_;
}

// repeated string preferred_edge_Id = 12;
inline int RouteOption::preferred_edge_id_size() const {
  return preferred_edge_id_.size();
}
inline void RouteOption::clear_preferred_edge_id() {
  preferred_edge_id_.Clear();
}
inline const ::std::string& RouteOption::preferred_edge_id(int index) const {
  return preferred_edge_id_.Get(index);
}
inline ::std::string* RouteOption::mutable_preferred_edge_id(int index) {
  return preferred_edge_id_.Mutable(index);
}
inline void RouteOption::set_preferred_edge_id(int index, const ::std::string& value) {
  preferred_edge_id_.Mutable(index)->assign(value);
}
inline void RouteOption::set_preferred_edge_id(int index, const char* value) {
  preferred_edge_id_.Mutable(index)->assign(value);
}
inline void RouteOption::set_preferred_edge_id(int index, const char* value, size_t size) {
  preferred_edge_id_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* RouteOption::add_preferred_edge_id() {
  return preferred_edge_id_.Add();
}
inline void RouteOption::add_preferred_edge_id(const ::std::string& value) {
  preferred_edge_id_.Add()->assign(value);
}
inline void RouteOption::add_preferred_edge_id(const char* value) {
  preferred_edge_id_.Add()->assign(value);
}
inline void RouteOption::add_preferred_edge_id(const char* value, size_t size) {
  preferred_edge_id_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
RouteOption::preferred_edge_id() const {
  return preferred_edge_id_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
RouteOption::mutable_preferred_edge_id() {
  return &preferred_edge_id_;
}

// repeated string avoid_traffic_id = 13;
inline int RouteOption::avoid_traffic_id_size() const {
  return avoid_traffic_id_.size();
}
inline void RouteOption::clear_avoid_traffic_id() {
  avoid_traffic_id_.Clear();
}
inline const ::std::string& RouteOption::avoid_traffic_id(int index) const {
  return avoid_traffic_id_.Get(index);
}
inline ::std::string* RouteOption::mutable_avoid_traffic_id(int index) {
  return avoid_traffic_id_.Mutable(index);
}
inline void RouteOption::set_avoid_traffic_id(int index, const ::std::string& value) {
  avoid_traffic_id_.Mutable(index)->assign(value);
}
inline void RouteOption::set_avoid_traffic_id(int index, const char* value) {
  avoid_traffic_id_.Mutable(index)->assign(value);
}
inline void RouteOption::set_avoid_traffic_id(int index, const char* value, size_t size) {
  avoid_traffic_id_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* RouteOption::add_avoid_traffic_id() {
  return avoid_traffic_id_.Add();
}
inline void RouteOption::add_avoid_traffic_id(const ::std::string& value) {
  avoid_traffic_id_.Add()->assign(value);
}
inline void RouteOption::add_avoid_traffic_id(const char* value) {
  avoid_traffic_id_.Add()->assign(value);
}
inline void RouteOption::add_avoid_traffic_id(const char* value, size_t size) {
  avoid_traffic_id_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
RouteOption::avoid_traffic_id() const {
  return avoid_traffic_id_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
RouteOption::mutable_avoid_traffic_id() {
  return &avoid_traffic_id_;
}

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

// Location

// optional .com.telenav.proto.LatLon lat_lon = 1;
inline bool Location::has_lat_lon() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void Location::set_has_lat_lon() {
  _has_bits_[0] |= 0x00000001u;
}
inline void Location::clear_has_lat_lon() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void Location::clear_lat_lon() {
  if (lat_lon_ != NULL) lat_lon_->::com::telenav::proto::LatLon::Clear();
  clear_has_lat_lon();
}
inline const ::com::telenav::proto::LatLon& Location::lat_lon() const {
  return lat_lon_ != NULL ? *lat_lon_ : *default_instance_->lat_lon_;
}
inline ::com::telenav::proto::LatLon* Location::mutable_lat_lon() {
  set_has_lat_lon();
  if (lat_lon_ == NULL) lat_lon_ = new ::com::telenav::proto::LatLon;
  return lat_lon_;
}
inline ::com::telenav::proto::LatLon* Location::release_lat_lon() {
  clear_has_lat_lon();
  ::com::telenav::proto::LatLon* temp = lat_lon_;
  lat_lon_ = NULL;
  return temp;
}

// optional .com.telenav.proto.Address address = 2;
inline bool Location::has_address() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void Location::set_has_address() {
  _has_bits_[0] |= 0x00000002u;
}
inline void Location::clear_has_address() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void Location::clear_address() {
  if (address_ != NULL) address_->::com::telenav::proto::Address::Clear();
  clear_has_address();
}
inline const ::com::telenav::proto::Address& Location::address() const {
  return address_ != NULL ? *address_ : *default_instance_->address_;
}
inline ::com::telenav::proto::Address* Location::mutable_address() {
  set_has_address();
  if (address_ == NULL) address_ = new ::com::telenav::proto::Address;
  return address_;
}
inline ::com::telenav::proto::Address* Location::release_address() {
  clear_has_address();
  ::com::telenav::proto::Address* temp = address_;
  address_ = NULL;
  return temp;
}

// repeated string edge_id = 3;
inline int Location::edge_id_size() const {
  return edge_id_.size();
}
inline void Location::clear_edge_id() {
  edge_id_.Clear();
}
inline const ::std::string& Location::edge_id(int index) const {
  return edge_id_.Get(index);
}
inline ::std::string* Location::mutable_edge_id(int index) {
  return edge_id_.Mutable(index);
}
inline void Location::set_edge_id(int index, const ::std::string& value) {
  edge_id_.Mutable(index)->assign(value);
}
inline void Location::set_edge_id(int index, const char* value) {
  edge_id_.Mutable(index)->assign(value);
}
inline void Location::set_edge_id(int index, const char* value, size_t size) {
  edge_id_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* Location::add_edge_id() {
  return edge_id_.Add();
}
inline void Location::add_edge_id(const ::std::string& value) {
  edge_id_.Add()->assign(value);
}
inline void Location::add_edge_id(const char* value) {
  edge_id_.Add()->assign(value);
}
inline void Location::add_edge_id(const char* value, size_t size) {
  edge_id_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
Location::edge_id() const {
  return edge_id_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
Location::mutable_edge_id() {
  return &edge_id_;
}

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

// OutputOption

// optional bool eta_only = 1 [default = false];
inline bool OutputOption::has_eta_only() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void OutputOption::set_has_eta_only() {
  _has_bits_[0] |= 0x00000001u;
}
inline void OutputOption::clear_has_eta_only() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void OutputOption::clear_eta_only() {
  eta_only_ = false;
  clear_has_eta_only();
}
inline bool OutputOption::eta_only() const {
  return eta_only_;
}
inline void OutputOption::set_eta_only(bool value) {
  set_has_eta_only();
  eta_only_ = value;
}

// optional bool edge_detail = 2 [default = false];
inline bool OutputOption::has_edge_detail() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void OutputOption::set_has_edge_detail() {
  _has_bits_[0] |= 0x00000002u;
}
inline void OutputOption::clear_has_edge_detail() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void OutputOption::clear_edge_detail() {
  edge_detail_ = false;
  clear_has_edge_detail();
}
inline bool OutputOption::edge_detail() const {
  return edge_detail_;
}
inline void OutputOption::set_edge_detail(bool value) {
  set_has_edge_detail();
  edge_detail_ = value;
}

// optional bool basic_route = 3 [default = false];
inline bool OutputOption::has_basic_route() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void OutputOption::set_has_basic_route() {
  _has_bits_[0] |= 0x00000004u;
}
inline void OutputOption::clear_has_basic_route() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void OutputOption::clear_basic_route() {
  basic_route_ = false;
  clear_has_basic_route();
}
inline bool OutputOption::basic_route() const {
  return basic_route_;
}
inline void OutputOption::set_basic_route(bool value) {
  set_has_basic_route();
  basic_route_ = value;
}

// optional bool traffic_id = 4 [default = true];
inline bool OutputOption::has_traffic_id() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void OutputOption::set_has_traffic_id() {
  _has_bits_[0] |= 0x00000008u;
}
inline void OutputOption::clear_has_traffic_id() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void OutputOption::clear_traffic_id() {
  traffic_id_ = true;
  clear_has_traffic_id();
}
inline bool OutputOption::traffic_id() const {
  return traffic_id_;
}
inline void OutputOption::set_traffic_id(bool value) {
  set_has_traffic_id();
  traffic_id_ = value;
}

// optional bool lane_info = 5 [default = true];
inline bool OutputOption::has_lane_info() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void OutputOption::set_has_lane_info() {
  _has_bits_[0] |= 0x00000010u;
}
inline void OutputOption::clear_has_lane_info() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void OutputOption::clear_lane_info() {
  lane_info_ = true;
  clear_has_lane_info();
}
inline bool OutputOption::lane_info() const {
  return lane_info_;
}
inline void OutputOption::set_lane_info(bool value) {
  set_has_lane_info();
  lane_info_ = value;
}

// optional bool speed_limit = 6 [default = true];
inline bool OutputOption::has_speed_limit() const {
  return (_has_bits_[0] & 0x00000020u) != 0;
}
inline void OutputOption::set_has_speed_limit() {
  _has_bits_[0] |= 0x00000020u;
}
inline void OutputOption::clear_has_speed_limit() {
  _has_bits_[0] &= ~0x00000020u;
}
inline void OutputOption::clear_speed_limit() {
  speed_limit_ = true;
  clear_has_speed_limit();
}
inline bool OutputOption::speed_limit() const {
  return speed_limit_;
}
inline void OutputOption::set_speed_limit(bool value) {
  set_has_speed_limit();
  speed_limit_ = value;
}

// optional bool overview = 9 [default = false];
inline bool OutputOption::has_overview() const {
  return (_has_bits_[0] & 0x00000040u) != 0;
}
inline void OutputOption::set_has_overview() {
  _has_bits_[0] |= 0x00000040u;
}
inline void OutputOption::clear_has_overview() {
  _has_bits_[0] &= ~0x00000040u;
}
inline void OutputOption::clear_overview() {
  overview_ = false;
  clear_has_overview();
}
inline bool OutputOption::overview() const {
  return overview_;
}
inline void OutputOption::set_overview(bool value) {
  set_has_overview();
  overview_ = value;
}

// optional bool route_info = 10 [default = true];
inline bool OutputOption::has_route_info() const {
  return (_has_bits_[0] & 0x00000080u) != 0;
}
inline void OutputOption::set_has_route_info() {
  _has_bits_[0] |= 0x00000080u;
}
inline void OutputOption::clear_has_route_info() {
  _has_bits_[0] &= ~0x00000080u;
}
inline void OutputOption::clear_route_info() {
  route_info_ = true;
  clear_has_route_info();
}
inline bool OutputOption::route_info() const {
  return route_info_;
}
inline void OutputOption::set_route_info(bool value) {
  set_has_route_info();
  route_info_ = value;
}

// optional int32 overview_decimated_level = 11;
inline bool OutputOption::has_overview_decimated_level() const {
  return (_has_bits_[0] & 0x00000100u) != 0;
}
inline void OutputOption::set_has_overview_decimated_level() {
  _has_bits_[0] |= 0x00000100u;
}
inline void OutputOption::clear_has_overview_decimated_level() {
  _has_bits_[0] &= ~0x00000100u;
}
inline void OutputOption::clear_overview_decimated_level() {
  overview_decimated_level_ = 0;
  clear_has_overview_decimated_level();
}
inline ::google::protobuf::int32 OutputOption::overview_decimated_level() const {
  return overview_decimated_level_;
}
inline void OutputOption::set_overview_decimated_level(::google::protobuf::int32 value) {
  set_has_overview_decimated_level();
  overview_decimated_level_ = value;
}

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

// GuidanceRequest

// repeated .com.telenav.proto.map.v4.BasicPath basic_path = 1;
inline int GuidanceRequest::basic_path_size() const {
  return basic_path_.size();
}
inline void GuidanceRequest::clear_basic_path() {
  basic_path_.Clear();
}
inline const ::com::telenav::proto::map::v4::BasicPath& GuidanceRequest::basic_path(int index) const {
  return basic_path_.Get(index);
}
inline ::com::telenav::proto::map::v4::BasicPath* GuidanceRequest::mutable_basic_path(int index) {
  return basic_path_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::BasicPath* GuidanceRequest::add_basic_path() {
  return basic_path_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::BasicPath >&
GuidanceRequest::basic_path() const {
  return basic_path_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::BasicPath >*
GuidanceRequest::mutable_basic_path() {
  return &basic_path_;
}

// optional int32 start_index = 2;
inline bool GuidanceRequest::has_start_index() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void GuidanceRequest::set_has_start_index() {
  _has_bits_[0] |= 0x00000002u;
}
inline void GuidanceRequest::clear_has_start_index() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void GuidanceRequest::clear_start_index() {
  start_index_ = 0;
  clear_has_start_index();
}
inline ::google::protobuf::int32 GuidanceRequest::start_index() const {
  return start_index_;
}
inline void GuidanceRequest::set_start_index(::google::protobuf::int32 value) {
  set_has_start_index();
  start_index_ = value;
}

// optional int32 end_index = 3;
inline bool GuidanceRequest::has_end_index() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void GuidanceRequest::set_has_end_index() {
  _has_bits_[0] |= 0x00000004u;
}
inline void GuidanceRequest::clear_has_end_index() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void GuidanceRequest::clear_end_index() {
  end_index_ = 0;
  clear_has_end_index();
}
inline ::google::protobuf::int32 GuidanceRequest::end_index() const {
  return end_index_;
}
inline void GuidanceRequest::set_end_index(::google::protobuf::int32 value) {
  set_has_end_index();
  end_index_ = value;
}

// optional int32 length_in_meter = 4;
inline bool GuidanceRequest::has_length_in_meter() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void GuidanceRequest::set_has_length_in_meter() {
  _has_bits_[0] |= 0x00000008u;
}
inline void GuidanceRequest::clear_has_length_in_meter() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void GuidanceRequest::clear_length_in_meter() {
  length_in_meter_ = 0;
  clear_has_length_in_meter();
}
inline ::google::protobuf::int32 GuidanceRequest::length_in_meter() const {
  return length_in_meter_;
}
inline void GuidanceRequest::set_length_in_meter(::google::protobuf::int32 value) {
  set_has_length_in_meter();
  length_in_meter_ = value;
}

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

// BasicRouteResponse

// optional .com.telenav.proto.ServiceStatus status = 1;
inline bool BasicRouteResponse::has_status() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void BasicRouteResponse::set_has_status() {
  _has_bits_[0] |= 0x00000001u;
}
inline void BasicRouteResponse::clear_has_status() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void BasicRouteResponse::clear_status() {
  if (status_ != NULL) status_->::com::telenav::proto::ServiceStatus::Clear();
  clear_has_status();
}
inline const ::com::telenav::proto::ServiceStatus& BasicRouteResponse::status() const {
  return status_ != NULL ? *status_ : *default_instance_->status_;
}
inline ::com::telenav::proto::ServiceStatus* BasicRouteResponse::mutable_status() {
  set_has_status();
  if (status_ == NULL) status_ = new ::com::telenav::proto::ServiceStatus;
  return status_;
}
inline ::com::telenav::proto::ServiceStatus* BasicRouteResponse::release_status() {
  clear_has_status();
  ::com::telenav::proto::ServiceStatus* temp = status_;
  status_ = NULL;
  return temp;
}

// optional string data_version = 3;
inline bool BasicRouteResponse::has_data_version() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void BasicRouteResponse::set_has_data_version() {
  _has_bits_[0] |= 0x00000002u;
}
inline void BasicRouteResponse::clear_has_data_version() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void BasicRouteResponse::clear_data_version() {
  if (data_version_ != &::google::protobuf::internal::kEmptyString) {
    data_version_->clear();
  }
  clear_has_data_version();
}
inline const ::std::string& BasicRouteResponse::data_version() const {
  return *data_version_;
}
inline void BasicRouteResponse::set_data_version(const ::std::string& value) {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  data_version_->assign(value);
}
inline void BasicRouteResponse::set_data_version(const char* value) {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  data_version_->assign(value);
}
inline void BasicRouteResponse::set_data_version(const char* value, size_t size) {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  data_version_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* BasicRouteResponse::mutable_data_version() {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  return data_version_;
}
inline ::std::string* BasicRouteResponse::release_data_version() {
  clear_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = data_version_;
    data_version_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// repeated .com.telenav.proto.map.v4.RouteInfo route_info = 4;
inline int BasicRouteResponse::route_info_size() const {
  return route_info_.size();
}
inline void BasicRouteResponse::clear_route_info() {
  route_info_.Clear();
}
inline const ::com::telenav::proto::map::v4::RouteInfo& BasicRouteResponse::route_info(int index) const {
  return route_info_.Get(index);
}
inline ::com::telenav::proto::map::v4::RouteInfo* BasicRouteResponse::mutable_route_info(int index) {
  return route_info_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::RouteInfo* BasicRouteResponse::add_route_info() {
  return route_info_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RouteInfo >&
BasicRouteResponse::route_info() const {
  return route_info_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RouteInfo >*
BasicRouteResponse::mutable_route_info() {
  return &route_info_;
}

// repeated .com.telenav.proto.map.v4.BasicRoute route = 5;
inline int BasicRouteResponse::route_size() const {
  return route_.size();
}
inline void BasicRouteResponse::clear_route() {
  route_.Clear();
}
inline const ::com::telenav::proto::map::v4::BasicRoute& BasicRouteResponse::route(int index) const {
  return route_.Get(index);
}
inline ::com::telenav::proto::map::v4::BasicRoute* BasicRouteResponse::mutable_route(int index) {
  return route_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::BasicRoute* BasicRouteResponse::add_route() {
  return route_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::BasicRoute >&
BasicRouteResponse::route() const {
  return route_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::BasicRoute >*
BasicRouteResponse::mutable_route() {
  return &route_;
}

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

// RouteResponse

// optional .com.telenav.proto.ServiceStatus status = 1;
inline bool RouteResponse::has_status() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void RouteResponse::set_has_status() {
  _has_bits_[0] |= 0x00000001u;
}
inline void RouteResponse::clear_has_status() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void RouteResponse::clear_status() {
  if (status_ != NULL) status_->::com::telenav::proto::ServiceStatus::Clear();
  clear_has_status();
}
inline const ::com::telenav::proto::ServiceStatus& RouteResponse::status() const {
  return status_ != NULL ? *status_ : *default_instance_->status_;
}
inline ::com::telenav::proto::ServiceStatus* RouteResponse::mutable_status() {
  set_has_status();
  if (status_ == NULL) status_ = new ::com::telenav::proto::ServiceStatus;
  return status_;
}
inline ::com::telenav::proto::ServiceStatus* RouteResponse::release_status() {
  clear_has_status();
  ::com::telenav::proto::ServiceStatus* temp = status_;
  status_ = NULL;
  return temp;
}

// optional string data_version = 3;
inline bool RouteResponse::has_data_version() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void RouteResponse::set_has_data_version() {
  _has_bits_[0] |= 0x00000002u;
}
inline void RouteResponse::clear_has_data_version() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void RouteResponse::clear_data_version() {
  if (data_version_ != &::google::protobuf::internal::kEmptyString) {
    data_version_->clear();
  }
  clear_has_data_version();
}
inline const ::std::string& RouteResponse::data_version() const {
  return *data_version_;
}
inline void RouteResponse::set_data_version(const ::std::string& value) {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  data_version_->assign(value);
}
inline void RouteResponse::set_data_version(const char* value) {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  data_version_->assign(value);
}
inline void RouteResponse::set_data_version(const char* value, size_t size) {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  data_version_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* RouteResponse::mutable_data_version() {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  return data_version_;
}
inline ::std::string* RouteResponse::release_data_version() {
  clear_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = data_version_;
    data_version_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// repeated .com.telenav.proto.map.v4.Route route = 4;
inline int RouteResponse::route_size() const {
  return route_.size();
}
inline void RouteResponse::clear_route() {
  route_.Clear();
}
inline const ::com::telenav::proto::map::v4::Route& RouteResponse::route(int index) const {
  return route_.Get(index);
}
inline ::com::telenav::proto::map::v4::Route* RouteResponse::mutable_route(int index) {
  return route_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::Route* RouteResponse::add_route() {
  return route_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Route >&
RouteResponse::route() const {
  return route_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Route >*
RouteResponse::mutable_route() {
  return &route_;
}

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

// FindMeRequest

// repeated .com.telenav.proto.map.v4.GpsFix gps_fix = 1;
inline int FindMeRequest::gps_fix_size() const {
  return gps_fix_.size();
}
inline void FindMeRequest::clear_gps_fix() {
  gps_fix_.Clear();
}
inline const ::com::telenav::proto::map::v4::GpsFix& FindMeRequest::gps_fix(int index) const {
  return gps_fix_.Get(index);
}
inline ::com::telenav::proto::map::v4::GpsFix* FindMeRequest::mutable_gps_fix(int index) {
  return gps_fix_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::GpsFix* FindMeRequest::add_gps_fix() {
  return gps_fix_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::GpsFix >&
FindMeRequest::gps_fix() const {
  return gps_fix_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::GpsFix >*
FindMeRequest::mutable_gps_fix() {
  return &gps_fix_;
}

// optional int32 latch_heading = 2 [default = -999];
inline bool FindMeRequest::has_latch_heading() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void FindMeRequest::set_has_latch_heading() {
  _has_bits_[0] |= 0x00000002u;
}
inline void FindMeRequest::clear_has_latch_heading() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void FindMeRequest::clear_latch_heading() {
  latch_heading_ = -999;
  clear_has_latch_heading();
}
inline ::google::protobuf::int32 FindMeRequest::latch_heading() const {
  return latch_heading_;
}
inline void FindMeRequest::set_latch_heading(::google::protobuf::int32 value) {
  set_has_latch_heading();
  latch_heading_ = value;
}

// optional .com.telenav.proto.Context context = 3;
inline bool FindMeRequest::has_context() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void FindMeRequest::set_has_context() {
  _has_bits_[0] |= 0x00000004u;
}
inline void FindMeRequest::clear_has_context() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void FindMeRequest::clear_context() {
  if (context_ != NULL) context_->::com::telenav::proto::Context::Clear();
  clear_has_context();
}
inline const ::com::telenav::proto::Context& FindMeRequest::context() const {
  return context_ != NULL ? *context_ : *default_instance_->context_;
}
inline ::com::telenav::proto::Context* FindMeRequest::mutable_context() {
  set_has_context();
  if (context_ == NULL) context_ = new ::com::telenav::proto::Context;
  return context_;
}
inline ::com::telenav::proto::Context* FindMeRequest::release_context() {
  clear_has_context();
  ::com::telenav::proto::Context* temp = context_;
  context_ = NULL;
  return temp;
}

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

// FindMeResponse

// optional .com.telenav.proto.ServiceStatus status = 1;
inline bool FindMeResponse::has_status() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void FindMeResponse::set_has_status() {
  _has_bits_[0] |= 0x00000001u;
}
inline void FindMeResponse::clear_has_status() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void FindMeResponse::clear_status() {
  if (status_ != NULL) status_->::com::telenav::proto::ServiceStatus::Clear();
  clear_has_status();
}
inline const ::com::telenav::proto::ServiceStatus& FindMeResponse::status() const {
  return status_ != NULL ? *status_ : *default_instance_->status_;
}
inline ::com::telenav::proto::ServiceStatus* FindMeResponse::mutable_status() {
  set_has_status();
  if (status_ == NULL) status_ = new ::com::telenav::proto::ServiceStatus;
  return status_;
}
inline ::com::telenav::proto::ServiceStatus* FindMeResponse::release_status() {
  clear_has_status();
  ::com::telenav::proto::ServiceStatus* temp = status_;
  status_ = NULL;
  return temp;
}

// optional string data_version = 3;
inline bool FindMeResponse::has_data_version() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void FindMeResponse::set_has_data_version() {
  _has_bits_[0] |= 0x00000002u;
}
inline void FindMeResponse::clear_has_data_version() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void FindMeResponse::clear_data_version() {
  if (data_version_ != &::google::protobuf::internal::kEmptyString) {
    data_version_->clear();
  }
  clear_has_data_version();
}
inline const ::std::string& FindMeResponse::data_version() const {
  return *data_version_;
}
inline void FindMeResponse::set_data_version(const ::std::string& value) {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  data_version_->assign(value);
}
inline void FindMeResponse::set_data_version(const char* value) {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  data_version_->assign(value);
}
inline void FindMeResponse::set_data_version(const char* value, size_t size) {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  data_version_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* FindMeResponse::mutable_data_version() {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  return data_version_;
}
inline ::std::string* FindMeResponse::release_data_version() {
  clear_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = data_version_;
    data_version_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// repeated .com.telenav.proto.map.v4.Candidate candidate = 4;
inline int FindMeResponse::candidate_size() const {
  return candidate_.size();
}
inline void FindMeResponse::clear_candidate() {
  candidate_.Clear();
}
inline const ::com::telenav::proto::map::v4::Candidate& FindMeResponse::candidate(int index) const {
  return candidate_.Get(index);
}
inline ::com::telenav::proto::map::v4::Candidate* FindMeResponse::mutable_candidate(int index) {
  return candidate_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::Candidate* FindMeResponse::add_candidate() {
  return candidate_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Candidate >&
FindMeResponse::candidate() const {
  return candidate_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Candidate >*
FindMeResponse::mutable_candidate() {
  return &candidate_;
}

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

// SystemInfoResponse

// optional .com.telenav.proto.ServiceStatus status = 1;
inline bool SystemInfoResponse::has_status() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void SystemInfoResponse::set_has_status() {
  _has_bits_[0] |= 0x00000001u;
}
inline void SystemInfoResponse::clear_has_status() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void SystemInfoResponse::clear_status() {
  if (status_ != NULL) status_->::com::telenav::proto::ServiceStatus::Clear();
  clear_has_status();
}
inline const ::com::telenav::proto::ServiceStatus& SystemInfoResponse::status() const {
  return status_ != NULL ? *status_ : *default_instance_->status_;
}
inline ::com::telenav::proto::ServiceStatus* SystemInfoResponse::mutable_status() {
  set_has_status();
  if (status_ == NULL) status_ = new ::com::telenav::proto::ServiceStatus;
  return status_;
}
inline ::com::telenav::proto::ServiceStatus* SystemInfoResponse::release_status() {
  clear_has_status();
  ::com::telenav::proto::ServiceStatus* temp = status_;
  status_ = NULL;
  return temp;
}

// optional string app_version = 2;
inline bool SystemInfoResponse::has_app_version() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void SystemInfoResponse::set_has_app_version() {
  _has_bits_[0] |= 0x00000002u;
}
inline void SystemInfoResponse::clear_has_app_version() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void SystemInfoResponse::clear_app_version() {
  if (app_version_ != &::google::protobuf::internal::kEmptyString) {
    app_version_->clear();
  }
  clear_has_app_version();
}
inline const ::std::string& SystemInfoResponse::app_version() const {
  return *app_version_;
}
inline void SystemInfoResponse::set_app_version(const ::std::string& value) {
  set_has_app_version();
  if (app_version_ == &::google::protobuf::internal::kEmptyString) {
    app_version_ = new ::std::string;
  }
  app_version_->assign(value);
}
inline void SystemInfoResponse::set_app_version(const char* value) {
  set_has_app_version();
  if (app_version_ == &::google::protobuf::internal::kEmptyString) {
    app_version_ = new ::std::string;
  }
  app_version_->assign(value);
}
inline void SystemInfoResponse::set_app_version(const char* value, size_t size) {
  set_has_app_version();
  if (app_version_ == &::google::protobuf::internal::kEmptyString) {
    app_version_ = new ::std::string;
  }
  app_version_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* SystemInfoResponse::mutable_app_version() {
  set_has_app_version();
  if (app_version_ == &::google::protobuf::internal::kEmptyString) {
    app_version_ = new ::std::string;
  }
  return app_version_;
}
inline ::std::string* SystemInfoResponse::release_app_version() {
  clear_has_app_version();
  if (app_version_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = app_version_;
    app_version_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional string data_version = 3;
inline bool SystemInfoResponse::has_data_version() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void SystemInfoResponse::set_has_data_version() {
  _has_bits_[0] |= 0x00000004u;
}
inline void SystemInfoResponse::clear_has_data_version() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void SystemInfoResponse::clear_data_version() {
  if (data_version_ != &::google::protobuf::internal::kEmptyString) {
    data_version_->clear();
  }
  clear_has_data_version();
}
inline const ::std::string& SystemInfoResponse::data_version() const {
  return *data_version_;
}
inline void SystemInfoResponse::set_data_version(const ::std::string& value) {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  data_version_->assign(value);
}
inline void SystemInfoResponse::set_data_version(const char* value) {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  data_version_->assign(value);
}
inline void SystemInfoResponse::set_data_version(const char* value, size_t size) {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  data_version_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* SystemInfoResponse::mutable_data_version() {
  set_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    data_version_ = new ::std::string;
  }
  return data_version_;
}
inline ::std::string* SystemInfoResponse::release_data_version() {
  clear_has_data_version();
  if (data_version_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = data_version_;
    data_version_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional int64 up_time = 4;
inline bool SystemInfoResponse::has_up_time() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void SystemInfoResponse::set_has_up_time() {
  _has_bits_[0] |= 0x00000008u;
}
inline void SystemInfoResponse::clear_has_up_time() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void SystemInfoResponse::clear_up_time() {
  up_time_ = GOOGLE_LONGLONG(0);
  clear_has_up_time();
}
inline ::google::protobuf::int64 SystemInfoResponse::up_time() const {
  return up_time_;
}
inline void SystemInfoResponse::set_up_time(::google::protobuf::int64 value) {
  set_has_up_time();
  up_time_ = value;
}

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

// GpsFix

// optional .com.telenav.proto.LatLon lat_lon = 1;
inline bool GpsFix::has_lat_lon() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void GpsFix::set_has_lat_lon() {
  _has_bits_[0] |= 0x00000001u;
}
inline void GpsFix::clear_has_lat_lon() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void GpsFix::clear_lat_lon() {
  if (lat_lon_ != NULL) lat_lon_->::com::telenav::proto::LatLon::Clear();
  clear_has_lat_lon();
}
inline const ::com::telenav::proto::LatLon& GpsFix::lat_lon() const {
  return lat_lon_ != NULL ? *lat_lon_ : *default_instance_->lat_lon_;
}
inline ::com::telenav::proto::LatLon* GpsFix::mutable_lat_lon() {
  set_has_lat_lon();
  if (lat_lon_ == NULL) lat_lon_ = new ::com::telenav::proto::LatLon;
  return lat_lon_;
}
inline ::com::telenav::proto::LatLon* GpsFix::release_lat_lon() {
  clear_has_lat_lon();
  ::com::telenav::proto::LatLon* temp = lat_lon_;
  lat_lon_ = NULL;
  return temp;
}

// optional double alt = 2;
inline bool GpsFix::has_alt() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void GpsFix::set_has_alt() {
  _has_bits_[0] |= 0x00000002u;
}
inline void GpsFix::clear_has_alt() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void GpsFix::clear_alt() {
  alt_ = 0;
  clear_has_alt();
}
inline double GpsFix::alt() const {
  return alt_;
}
inline void GpsFix::set_alt(double value) {
  set_has_alt();
  alt_ = value;
}

// optional int64 time_stamp = 3;
inline bool GpsFix::has_time_stamp() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void GpsFix::set_has_time_stamp() {
  _has_bits_[0] |= 0x00000004u;
}
inline void GpsFix::clear_has_time_stamp() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void GpsFix::clear_time_stamp() {
  time_stamp_ = GOOGLE_LONGLONG(0);
  clear_has_time_stamp();
}
inline ::google::protobuf::int64 GpsFix::time_stamp() const {
  return time_stamp_;
}
inline void GpsFix::set_time_stamp(::google::protobuf::int64 value) {
  set_has_time_stamp();
  time_stamp_ = value;
}

// optional int32 speed = 4;
inline bool GpsFix::has_speed() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void GpsFix::set_has_speed() {
  _has_bits_[0] |= 0x00000008u;
}
inline void GpsFix::clear_has_speed() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void GpsFix::clear_speed() {
  speed_ = 0;
  clear_has_speed();
}
inline ::google::protobuf::int32 GpsFix::speed() const {
  return speed_;
}
inline void GpsFix::set_speed(::google::protobuf::int32 value) {
  set_has_speed();
  speed_ = value;
}

// optional int32 heading = 5;
inline bool GpsFix::has_heading() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void GpsFix::set_has_heading() {
  _has_bits_[0] |= 0x00000010u;
}
inline void GpsFix::clear_has_heading() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void GpsFix::clear_heading() {
  heading_ = 0;
  clear_has_heading();
}
inline ::google::protobuf::int32 GpsFix::heading() const {
  return heading_;
}
inline void GpsFix::set_heading(::google::protobuf::int32 value) {
  set_has_heading();
  heading_ = value;
}

// optional int32 error = 6;
inline bool GpsFix::has_error() const {
  return (_has_bits_[0] & 0x00000020u) != 0;
}
inline void GpsFix::set_has_error() {
  _has_bits_[0] |= 0x00000020u;
}
inline void GpsFix::clear_has_error() {
  _has_bits_[0] &= ~0x00000020u;
}
inline void GpsFix::clear_error() {
  error_ = 0;
  clear_has_error();
}
inline ::google::protobuf::int32 GpsFix::error() const {
  return error_;
}
inline void GpsFix::set_error(::google::protobuf::int32 value) {
  set_has_error();
  error_ = value;
}

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

// Candidate

// optional .com.telenav.proto.LatLon lat_lon = 1;
inline bool Candidate::has_lat_lon() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void Candidate::set_has_lat_lon() {
  _has_bits_[0] |= 0x00000001u;
}
inline void Candidate::clear_has_lat_lon() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void Candidate::clear_lat_lon() {
  if (lat_lon_ != NULL) lat_lon_->::com::telenav::proto::LatLon::Clear();
  clear_has_lat_lon();
}
inline const ::com::telenav::proto::LatLon& Candidate::lat_lon() const {
  return lat_lon_ != NULL ? *lat_lon_ : *default_instance_->lat_lon_;
}
inline ::com::telenav::proto::LatLon* Candidate::mutable_lat_lon() {
  set_has_lat_lon();
  if (lat_lon_ == NULL) lat_lon_ = new ::com::telenav::proto::LatLon;
  return lat_lon_;
}
inline ::com::telenav::proto::LatLon* Candidate::release_lat_lon() {
  clear_has_lat_lon();
  ::com::telenav::proto::LatLon* temp = lat_lon_;
  lat_lon_ = NULL;
  return temp;
}

// optional .com.telenav.proto.Address address = 2;
inline bool Candidate::has_address() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void Candidate::set_has_address() {
  _has_bits_[0] |= 0x00000002u;
}
inline void Candidate::clear_has_address() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void Candidate::clear_address() {
  if (address_ != NULL) address_->::com::telenav::proto::Address::Clear();
  clear_has_address();
}
inline const ::com::telenav::proto::Address& Candidate::address() const {
  return address_ != NULL ? *address_ : *default_instance_->address_;
}
inline ::com::telenav::proto::Address* Candidate::mutable_address() {
  set_has_address();
  if (address_ == NULL) address_ = new ::com::telenav::proto::Address;
  return address_;
}
inline ::com::telenav::proto::Address* Candidate::release_address() {
  clear_has_address();
  ::com::telenav::proto::Address* temp = address_;
  address_ = NULL;
  return temp;
}

// optional int32 heading = 3;
inline bool Candidate::has_heading() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void Candidate::set_has_heading() {
  _has_bits_[0] |= 0x00000004u;
}
inline void Candidate::clear_has_heading() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void Candidate::clear_heading() {
  heading_ = 0;
  clear_has_heading();
}
inline ::google::protobuf::int32 Candidate::heading() const {
  return heading_;
}
inline void Candidate::set_heading(::google::protobuf::int32 value) {
  set_has_heading();
  heading_ = value;
}

// optional int32 speed_in_mps = 4;
inline bool Candidate::has_speed_in_mps() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void Candidate::set_has_speed_in_mps() {
  _has_bits_[0] |= 0x00000008u;
}
inline void Candidate::clear_has_speed_in_mps() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void Candidate::clear_speed_in_mps() {
  speed_in_mps_ = 0;
  clear_has_speed_in_mps();
}
inline ::google::protobuf::int32 Candidate::speed_in_mps() const {
  return speed_in_mps_;
}
inline void Candidate::set_speed_in_mps(::google::protobuf::int32 value) {
  set_has_speed_in_mps();
  speed_in_mps_ = value;
}

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

// BasicRoute

// repeated .com.telenav.proto.map.v4.BasicPath head_path = 2;
inline int BasicRoute::head_path_size() const {
  return head_path_.size();
}
inline void BasicRoute::clear_head_path() {
  head_path_.Clear();
}
inline const ::com::telenav::proto::map::v4::BasicPath& BasicRoute::head_path(int index) const {
  return head_path_.Get(index);
}
inline ::com::telenav::proto::map::v4::BasicPath* BasicRoute::mutable_head_path(int index) {
  return head_path_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::BasicPath* BasicRoute::add_head_path() {
  return head_path_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::BasicPath >&
BasicRoute::head_path() const {
  return head_path_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::BasicPath >*
BasicRoute::mutable_head_path() {
  return &head_path_;
}

// optional .com.telenav.proto.map.v4.BasicPath body_path = 3;
inline bool BasicRoute::has_body_path() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void BasicRoute::set_has_body_path() {
  _has_bits_[0] |= 0x00000002u;
}
inline void BasicRoute::clear_has_body_path() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void BasicRoute::clear_body_path() {
  if (body_path_ != NULL) body_path_->::com::telenav::proto::map::v4::BasicPath::Clear();
  clear_has_body_path();
}
inline const ::com::telenav::proto::map::v4::BasicPath& BasicRoute::body_path() const {
  return body_path_ != NULL ? *body_path_ : *default_instance_->body_path_;
}
inline ::com::telenav::proto::map::v4::BasicPath* BasicRoute::mutable_body_path() {
  set_has_body_path();
  if (body_path_ == NULL) body_path_ = new ::com::telenav::proto::map::v4::BasicPath;
  return body_path_;
}
inline ::com::telenav::proto::map::v4::BasicPath* BasicRoute::release_body_path() {
  clear_has_body_path();
  ::com::telenav::proto::map::v4::BasicPath* temp = body_path_;
  body_path_ = NULL;
  return temp;
}

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

// BasicPath

// repeated string edge_id = 2;
inline int BasicPath::edge_id_size() const {
  return edge_id_.size();
}
inline void BasicPath::clear_edge_id() {
  edge_id_.Clear();
}
inline const ::std::string& BasicPath::edge_id(int index) const {
  return edge_id_.Get(index);
}
inline ::std::string* BasicPath::mutable_edge_id(int index) {
  return edge_id_.Mutable(index);
}
inline void BasicPath::set_edge_id(int index, const ::std::string& value) {
  edge_id_.Mutable(index)->assign(value);
}
inline void BasicPath::set_edge_id(int index, const char* value) {
  edge_id_.Mutable(index)->assign(value);
}
inline void BasicPath::set_edge_id(int index, const char* value, size_t size) {
  edge_id_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* BasicPath::add_edge_id() {
  return edge_id_.Add();
}
inline void BasicPath::add_edge_id(const ::std::string& value) {
  edge_id_.Add()->assign(value);
}
inline void BasicPath::add_edge_id(const char* value) {
  edge_id_.Add()->assign(value);
}
inline void BasicPath::add_edge_id(const char* value, size_t size) {
  edge_id_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
BasicPath::edge_id() const {
  return edge_id_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
BasicPath::mutable_edge_id() {
  return &edge_id_;
}

// optional .com.telenav.proto.map.v4.Location start_point = 3;
inline bool BasicPath::has_start_point() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void BasicPath::set_has_start_point() {
  _has_bits_[0] |= 0x00000002u;
}
inline void BasicPath::clear_has_start_point() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void BasicPath::clear_start_point() {
  if (start_point_ != NULL) start_point_->::com::telenav::proto::map::v4::Location::Clear();
  clear_has_start_point();
}
inline const ::com::telenav::proto::map::v4::Location& BasicPath::start_point() const {
  return start_point_ != NULL ? *start_point_ : *default_instance_->start_point_;
}
inline ::com::telenav::proto::map::v4::Location* BasicPath::mutable_start_point() {
  set_has_start_point();
  if (start_point_ == NULL) start_point_ = new ::com::telenav::proto::map::v4::Location;
  return start_point_;
}
inline ::com::telenav::proto::map::v4::Location* BasicPath::release_start_point() {
  clear_has_start_point();
  ::com::telenav::proto::map::v4::Location* temp = start_point_;
  start_point_ = NULL;
  return temp;
}

// optional .com.telenav.proto.map.v4.EndPointStatus start_point_status = 4;
inline bool BasicPath::has_start_point_status() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void BasicPath::set_has_start_point_status() {
  _has_bits_[0] |= 0x00000004u;
}
inline void BasicPath::clear_has_start_point_status() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void BasicPath::clear_start_point_status() {
  if (start_point_status_ != NULL) start_point_status_->::com::telenav::proto::map::v4::EndPointStatus::Clear();
  clear_has_start_point_status();
}
inline const ::com::telenav::proto::map::v4::EndPointStatus& BasicPath::start_point_status() const {
  return start_point_status_ != NULL ? *start_point_status_ : *default_instance_->start_point_status_;
}
inline ::com::telenav::proto::map::v4::EndPointStatus* BasicPath::mutable_start_point_status() {
  set_has_start_point_status();
  if (start_point_status_ == NULL) start_point_status_ = new ::com::telenav::proto::map::v4::EndPointStatus;
  return start_point_status_;
}
inline ::com::telenav::proto::map::v4::EndPointStatus* BasicPath::release_start_point_status() {
  clear_has_start_point_status();
  ::com::telenav::proto::map::v4::EndPointStatus* temp = start_point_status_;
  start_point_status_ = NULL;
  return temp;
}

// optional .com.telenav.proto.map.v4.Location end_point = 5;
inline bool BasicPath::has_end_point() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void BasicPath::set_has_end_point() {
  _has_bits_[0] |= 0x00000008u;
}
inline void BasicPath::clear_has_end_point() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void BasicPath::clear_end_point() {
  if (end_point_ != NULL) end_point_->::com::telenav::proto::map::v4::Location::Clear();
  clear_has_end_point();
}
inline const ::com::telenav::proto::map::v4::Location& BasicPath::end_point() const {
  return end_point_ != NULL ? *end_point_ : *default_instance_->end_point_;
}
inline ::com::telenav::proto::map::v4::Location* BasicPath::mutable_end_point() {
  set_has_end_point();
  if (end_point_ == NULL) end_point_ = new ::com::telenav::proto::map::v4::Location;
  return end_point_;
}
inline ::com::telenav::proto::map::v4::Location* BasicPath::release_end_point() {
  clear_has_end_point();
  ::com::telenav::proto::map::v4::Location* temp = end_point_;
  end_point_ = NULL;
  return temp;
}

// optional .com.telenav.proto.map.v4.EndPointStatus end_point_status = 6;
inline bool BasicPath::has_end_point_status() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void BasicPath::set_has_end_point_status() {
  _has_bits_[0] |= 0x00000010u;
}
inline void BasicPath::clear_has_end_point_status() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void BasicPath::clear_end_point_status() {
  if (end_point_status_ != NULL) end_point_status_->::com::telenav::proto::map::v4::EndPointStatus::Clear();
  clear_has_end_point_status();
}
inline const ::com::telenav::proto::map::v4::EndPointStatus& BasicPath::end_point_status() const {
  return end_point_status_ != NULL ? *end_point_status_ : *default_instance_->end_point_status_;
}
inline ::com::telenav::proto::map::v4::EndPointStatus* BasicPath::mutable_end_point_status() {
  set_has_end_point_status();
  if (end_point_status_ == NULL) end_point_status_ = new ::com::telenav::proto::map::v4::EndPointStatus;
  return end_point_status_;
}
inline ::com::telenav::proto::map::v4::EndPointStatus* BasicPath::release_end_point_status() {
  clear_has_end_point_status();
  ::com::telenav::proto::map::v4::EndPointStatus* temp = end_point_status_;
  end_point_status_ = NULL;
  return temp;
}

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

// EndPointStatus

// optional string edge_clipped_points = 1;
inline bool EndPointStatus::has_edge_clipped_points() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void EndPointStatus::set_has_edge_clipped_points() {
  _has_bits_[0] |= 0x00000001u;
}
inline void EndPointStatus::clear_has_edge_clipped_points() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void EndPointStatus::clear_edge_clipped_points() {
  if (edge_clipped_points_ != &::google::protobuf::internal::kEmptyString) {
    edge_clipped_points_->clear();
  }
  clear_has_edge_clipped_points();
}
inline const ::std::string& EndPointStatus::edge_clipped_points() const {
  return *edge_clipped_points_;
}
inline void EndPointStatus::set_edge_clipped_points(const ::std::string& value) {
  set_has_edge_clipped_points();
  if (edge_clipped_points_ == &::google::protobuf::internal::kEmptyString) {
    edge_clipped_points_ = new ::std::string;
  }
  edge_clipped_points_->assign(value);
}
inline void EndPointStatus::set_edge_clipped_points(const char* value) {
  set_has_edge_clipped_points();
  if (edge_clipped_points_ == &::google::protobuf::internal::kEmptyString) {
    edge_clipped_points_ = new ::std::string;
  }
  edge_clipped_points_->assign(value);
}
inline void EndPointStatus::set_edge_clipped_points(const char* value, size_t size) {
  set_has_edge_clipped_points();
  if (edge_clipped_points_ == &::google::protobuf::internal::kEmptyString) {
    edge_clipped_points_ = new ::std::string;
  }
  edge_clipped_points_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* EndPointStatus::mutable_edge_clipped_points() {
  set_has_edge_clipped_points();
  if (edge_clipped_points_ == &::google::protobuf::internal::kEmptyString) {
    edge_clipped_points_ = new ::std::string;
  }
  return edge_clipped_points_;
}
inline ::std::string* EndPointStatus::release_edge_clipped_points() {
  clear_has_edge_clipped_points();
  if (edge_clipped_points_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = edge_clipped_points_;
    edge_clipped_points_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional .com.telenav.proto.map.v4.PointMatchResult point_match_result = 2;
inline bool EndPointStatus::has_point_match_result() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void EndPointStatus::set_has_point_match_result() {
  _has_bits_[0] |= 0x00000002u;
}
inline void EndPointStatus::clear_has_point_match_result() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void EndPointStatus::clear_point_match_result() {
  point_match_result_ = 0;
  clear_has_point_match_result();
}
inline com::telenav::proto::map::v4::PointMatchResult EndPointStatus::point_match_result() const {
  return static_cast< com::telenav::proto::map::v4::PointMatchResult >(point_match_result_);
}
inline void EndPointStatus::set_point_match_result(com::telenav::proto::map::v4::PointMatchResult value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::PointMatchResult_IsValid(value));
  set_has_point_match_result();
  point_match_result_ = value;
}

// optional .com.telenav.proto.map.v4.LocationMatchResult location_match_result = 3;
inline bool EndPointStatus::has_location_match_result() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void EndPointStatus::set_has_location_match_result() {
  _has_bits_[0] |= 0x00000004u;
}
inline void EndPointStatus::clear_has_location_match_result() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void EndPointStatus::clear_location_match_result() {
  location_match_result_ = 0;
  clear_has_location_match_result();
}
inline com::telenav::proto::map::v4::LocationMatchResult EndPointStatus::location_match_result() const {
  return static_cast< com::telenav::proto::map::v4::LocationMatchResult >(location_match_result_);
}
inline void EndPointStatus::set_location_match_result(com::telenav::proto::map::v4::LocationMatchResult value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::LocationMatchResult_IsValid(value));
  set_has_location_match_result();
  location_match_result_ = value;
}

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

// Route

// optional .com.telenav.proto.map.v4.RouteInfo route_info = 2;
inline bool Route::has_route_info() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void Route::set_has_route_info() {
  _has_bits_[0] |= 0x00000001u;
}
inline void Route::clear_has_route_info() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void Route::clear_route_info() {
  if (route_info_ != NULL) route_info_->::com::telenav::proto::map::v4::RouteInfo::Clear();
  clear_has_route_info();
}
inline const ::com::telenav::proto::map::v4::RouteInfo& Route::route_info() const {
  return route_info_ != NULL ? *route_info_ : *default_instance_->route_info_;
}
inline ::com::telenav::proto::map::v4::RouteInfo* Route::mutable_route_info() {
  set_has_route_info();
  if (route_info_ == NULL) route_info_ = new ::com::telenav::proto::map::v4::RouteInfo;
  return route_info_;
}
inline ::com::telenav::proto::map::v4::RouteInfo* Route::release_route_info() {
  clear_has_route_info();
  ::com::telenav::proto::map::v4::RouteInfo* temp = route_info_;
  route_info_ = NULL;
  return temp;
}

// repeated .com.telenav.proto.map.v4.Path path = 3;
inline int Route::path_size() const {
  return path_.size();
}
inline void Route::clear_path() {
  path_.Clear();
}
inline const ::com::telenav::proto::map::v4::Path& Route::path(int index) const {
  return path_.Get(index);
}
inline ::com::telenav::proto::map::v4::Path* Route::mutable_path(int index) {
  return path_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::Path* Route::add_path() {
  return path_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Path >&
Route::path() const {
  return path_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Path >*
Route::mutable_path() {
  return &path_;
}

// repeated .com.telenav.proto.map.v4.GuidanceSegment segment = 4;
inline int Route::segment_size() const {
  return segment_.size();
}
inline void Route::clear_segment() {
  segment_.Clear();
}
inline const ::com::telenav::proto::map::v4::GuidanceSegment& Route::segment(int index) const {
  return segment_.Get(index);
}
inline ::com::telenav::proto::map::v4::GuidanceSegment* Route::mutable_segment(int index) {
  return segment_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::GuidanceSegment* Route::add_segment() {
  return segment_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::GuidanceSegment >&
Route::segment() const {
  return segment_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::GuidanceSegment >*
Route::mutable_segment() {
  return &segment_;
}

// optional bool partial = 5 [default = false];
inline bool Route::has_partial() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void Route::set_has_partial() {
  _has_bits_[0] |= 0x00000008u;
}
inline void Route::clear_has_partial() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void Route::clear_partial() {
  partial_ = false;
  clear_has_partial();
}
inline bool Route::partial() const {
  return partial_;
}
inline void Route::set_partial(bool value) {
  set_has_partial();
  partial_ = value;
}

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

// RouteInfo

// optional string overview = 1;
inline bool RouteInfo::has_overview() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void RouteInfo::set_has_overview() {
  _has_bits_[0] |= 0x00000001u;
}
inline void RouteInfo::clear_has_overview() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void RouteInfo::clear_overview() {
  if (overview_ != &::google::protobuf::internal::kEmptyString) {
    overview_->clear();
  }
  clear_has_overview();
}
inline const ::std::string& RouteInfo::overview() const {
  return *overview_;
}
inline void RouteInfo::set_overview(const ::std::string& value) {
  set_has_overview();
  if (overview_ == &::google::protobuf::internal::kEmptyString) {
    overview_ = new ::std::string;
  }
  overview_->assign(value);
}
inline void RouteInfo::set_overview(const char* value) {
  set_has_overview();
  if (overview_ == &::google::protobuf::internal::kEmptyString) {
    overview_ = new ::std::string;
  }
  overview_->assign(value);
}
inline void RouteInfo::set_overview(const char* value, size_t size) {
  set_has_overview();
  if (overview_ == &::google::protobuf::internal::kEmptyString) {
    overview_ = new ::std::string;
  }
  overview_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* RouteInfo::mutable_overview() {
  set_has_overview();
  if (overview_ == &::google::protobuf::internal::kEmptyString) {
    overview_ = new ::std::string;
  }
  return overview_;
}
inline ::std::string* RouteInfo::release_overview() {
  clear_has_overview();
  if (overview_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = overview_;
    overview_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional string summary = 2;
inline bool RouteInfo::has_summary() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void RouteInfo::set_has_summary() {
  _has_bits_[0] |= 0x00000002u;
}
inline void RouteInfo::clear_has_summary() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void RouteInfo::clear_summary() {
  if (summary_ != &::google::protobuf::internal::kEmptyString) {
    summary_->clear();
  }
  clear_has_summary();
}
inline const ::std::string& RouteInfo::summary() const {
  return *summary_;
}
inline void RouteInfo::set_summary(const ::std::string& value) {
  set_has_summary();
  if (summary_ == &::google::protobuf::internal::kEmptyString) {
    summary_ = new ::std::string;
  }
  summary_->assign(value);
}
inline void RouteInfo::set_summary(const char* value) {
  set_has_summary();
  if (summary_ == &::google::protobuf::internal::kEmptyString) {
    summary_ = new ::std::string;
  }
  summary_->assign(value);
}
inline void RouteInfo::set_summary(const char* value, size_t size) {
  set_has_summary();
  if (summary_ == &::google::protobuf::internal::kEmptyString) {
    summary_ = new ::std::string;
  }
  summary_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* RouteInfo::mutable_summary() {
  set_has_summary();
  if (summary_ == &::google::protobuf::internal::kEmptyString) {
    summary_ = new ::std::string;
  }
  return summary_;
}
inline ::std::string* RouteInfo::release_summary() {
  clear_has_summary();
  if (summary_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = summary_;
    summary_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional int32 travel_time_in_second = 3;
inline bool RouteInfo::has_travel_time_in_second() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void RouteInfo::set_has_travel_time_in_second() {
  _has_bits_[0] |= 0x00000004u;
}
inline void RouteInfo::clear_has_travel_time_in_second() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void RouteInfo::clear_travel_time_in_second() {
  travel_time_in_second_ = 0;
  clear_has_travel_time_in_second();
}
inline ::google::protobuf::int32 RouteInfo::travel_time_in_second() const {
  return travel_time_in_second_;
}
inline void RouteInfo::set_travel_time_in_second(::google::protobuf::int32 value) {
  set_has_travel_time_in_second();
  travel_time_in_second_ = value;
}

// optional int32 travel_dist_in_meter = 4;
inline bool RouteInfo::has_travel_dist_in_meter() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void RouteInfo::set_has_travel_dist_in_meter() {
  _has_bits_[0] |= 0x00000008u;
}
inline void RouteInfo::clear_has_travel_dist_in_meter() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void RouteInfo::clear_travel_dist_in_meter() {
  travel_dist_in_meter_ = 0;
  clear_has_travel_dist_in_meter();
}
inline ::google::protobuf::int32 RouteInfo::travel_dist_in_meter() const {
  return travel_dist_in_meter_;
}
inline void RouteInfo::set_travel_dist_in_meter(::google::protobuf::int32 value) {
  set_has_travel_dist_in_meter();
  travel_dist_in_meter_ = value;
}

// optional int32 traffic_delay_in_second = 5;
inline bool RouteInfo::has_traffic_delay_in_second() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void RouteInfo::set_has_traffic_delay_in_second() {
  _has_bits_[0] |= 0x00000010u;
}
inline void RouteInfo::clear_has_traffic_delay_in_second() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void RouteInfo::clear_traffic_delay_in_second() {
  traffic_delay_in_second_ = 0;
  clear_has_traffic_delay_in_second();
}
inline ::google::protobuf::int32 RouteInfo::traffic_delay_in_second() const {
  return traffic_delay_in_second_;
}
inline void RouteInfo::set_traffic_delay_in_second(::google::protobuf::int32 value) {
  set_has_traffic_delay_in_second();
  traffic_delay_in_second_ = value;
}

// optional int32 time_zone_id = 7;
inline bool RouteInfo::has_time_zone_id() const {
  return (_has_bits_[0] & 0x00000020u) != 0;
}
inline void RouteInfo::set_has_time_zone_id() {
  _has_bits_[0] |= 0x00000020u;
}
inline void RouteInfo::clear_has_time_zone_id() {
  _has_bits_[0] &= ~0x00000020u;
}
inline void RouteInfo::clear_time_zone_id() {
  time_zone_id_ = 0;
  clear_has_time_zone_id();
}
inline ::google::protobuf::int32 RouteInfo::time_zone_id() const {
  return time_zone_id_;
}
inline void RouteInfo::set_time_zone_id(::google::protobuf::int32 value) {
  set_has_time_zone_id();
  time_zone_id_ = value;
}

// optional bool estimate_only = 8;
inline bool RouteInfo::has_estimate_only() const {
  return (_has_bits_[0] & 0x00000040u) != 0;
}
inline void RouteInfo::set_has_estimate_only() {
  _has_bits_[0] |= 0x00000040u;
}
inline void RouteInfo::clear_has_estimate_only() {
  _has_bits_[0] &= ~0x00000040u;
}
inline void RouteInfo::clear_estimate_only() {
  estimate_only_ = false;
  clear_has_estimate_only();
}
inline bool RouteInfo::estimate_only() const {
  return estimate_only_;
}
inline void RouteInfo::set_estimate_only(bool value) {
  set_has_estimate_only();
  estimate_only_ = value;
}

// repeated .com.telenav.proto.map.v4.Warning warning = 9;
inline int RouteInfo::warning_size() const {
  return warning_.size();
}
inline void RouteInfo::clear_warning() {
  warning_.Clear();
}
inline com::telenav::proto::map::v4::Warning RouteInfo::warning(int index) const {
  return static_cast< com::telenav::proto::map::v4::Warning >(warning_.Get(index));
}
inline void RouteInfo::set_warning(int index, com::telenav::proto::map::v4::Warning value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::Warning_IsValid(value));
  warning_.Set(index, value);
}
inline void RouteInfo::add_warning(com::telenav::proto::map::v4::Warning value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::Warning_IsValid(value));
  warning_.Add(value);
}
inline const ::google::protobuf::RepeatedField<int>&
RouteInfo::warning() const {
  return warning_;
}
inline ::google::protobuf::RepeatedField<int>*
RouteInfo::mutable_warning() {
  return &warning_;
}

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

// Path

// repeated int32 segment_index = 1;
inline int Path::segment_index_size() const {
  return segment_index_.size();
}
inline void Path::clear_segment_index() {
  segment_index_.Clear();
}
inline ::google::protobuf::int32 Path::segment_index(int index) const {
  return segment_index_.Get(index);
}
inline void Path::set_segment_index(int index, ::google::protobuf::int32 value) {
  segment_index_.Set(index, value);
}
inline void Path::add_segment_index(::google::protobuf::int32 value) {
  segment_index_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
Path::segment_index() const {
  return segment_index_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
Path::mutable_segment_index() {
  return &segment_index_;
}

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

// GuidanceSegment

// optional .com.telenav.proto.map.v4.TurnType turn_type = 1;
inline bool GuidanceSegment::has_turn_type() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void GuidanceSegment::set_has_turn_type() {
  _has_bits_[0] |= 0x00000001u;
}
inline void GuidanceSegment::clear_has_turn_type() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void GuidanceSegment::clear_turn_type() {
  turn_type_ = 0;
  clear_has_turn_type();
}
inline com::telenav::proto::map::v4::TurnType GuidanceSegment::turn_type() const {
  return static_cast< com::telenav::proto::map::v4::TurnType >(turn_type_);
}
inline void GuidanceSegment::set_turn_type(com::telenav::proto::map::v4::TurnType value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::TurnType_IsValid(value));
  set_has_turn_type();
  turn_type_ = value;
}

// optional .com.telenav.proto.map.v4.TurnInfo turn_info = 2;
inline bool GuidanceSegment::has_turn_info() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void GuidanceSegment::set_has_turn_info() {
  _has_bits_[0] |= 0x00000002u;
}
inline void GuidanceSegment::clear_has_turn_info() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void GuidanceSegment::clear_turn_info() {
  if (turn_info_ != NULL) turn_info_->::com::telenav::proto::map::v4::TurnInfo::Clear();
  clear_has_turn_info();
}
inline const ::com::telenav::proto::map::v4::TurnInfo& GuidanceSegment::turn_info() const {
  return turn_info_ != NULL ? *turn_info_ : *default_instance_->turn_info_;
}
inline ::com::telenav::proto::map::v4::TurnInfo* GuidanceSegment::mutable_turn_info() {
  set_has_turn_info();
  if (turn_info_ == NULL) turn_info_ = new ::com::telenav::proto::map::v4::TurnInfo;
  return turn_info_;
}
inline ::com::telenav::proto::map::v4::TurnInfo* GuidanceSegment::release_turn_info() {
  clear_has_turn_info();
  ::com::telenav::proto::map::v4::TurnInfo* temp = turn_info_;
  turn_info_ = NULL;
  return temp;
}

// repeated .com.telenav.proto.map.v4.Warning warning = 3;
inline int GuidanceSegment::warning_size() const {
  return warning_.size();
}
inline void GuidanceSegment::clear_warning() {
  warning_.Clear();
}
inline com::telenav::proto::map::v4::Warning GuidanceSegment::warning(int index) const {
  return static_cast< com::telenav::proto::map::v4::Warning >(warning_.Get(index));
}
inline void GuidanceSegment::set_warning(int index, com::telenav::proto::map::v4::Warning value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::Warning_IsValid(value));
  warning_.Set(index, value);
}
inline void GuidanceSegment::add_warning(com::telenav::proto::map::v4::Warning value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::Warning_IsValid(value));
  warning_.Add(value);
}
inline const ::google::protobuf::RepeatedField<int>&
GuidanceSegment::warning() const {
  return warning_;
}
inline ::google::protobuf::RepeatedField<int>*
GuidanceSegment::mutable_warning() {
  return &warning_;
}

// optional .com.telenav.proto.map.v4.SegmentRoadName road_name = 4;
inline bool GuidanceSegment::has_road_name() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void GuidanceSegment::set_has_road_name() {
  _has_bits_[0] |= 0x00000008u;
}
inline void GuidanceSegment::clear_has_road_name() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void GuidanceSegment::clear_road_name() {
  if (road_name_ != NULL) road_name_->::com::telenav::proto::map::v4::SegmentRoadName::Clear();
  clear_has_road_name();
}
inline const ::com::telenav::proto::map::v4::SegmentRoadName& GuidanceSegment::road_name() const {
  return road_name_ != NULL ? *road_name_ : *default_instance_->road_name_;
}
inline ::com::telenav::proto::map::v4::SegmentRoadName* GuidanceSegment::mutable_road_name() {
  set_has_road_name();
  if (road_name_ == NULL) road_name_ = new ::com::telenav::proto::map::v4::SegmentRoadName;
  return road_name_;
}
inline ::com::telenav::proto::map::v4::SegmentRoadName* GuidanceSegment::release_road_name() {
  clear_has_road_name();
  ::com::telenav::proto::map::v4::SegmentRoadName* temp = road_name_;
  road_name_ = NULL;
  return temp;
}

// optional .com.telenav.proto.map.v4.SignPost sign_post = 5;
inline bool GuidanceSegment::has_sign_post() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void GuidanceSegment::set_has_sign_post() {
  _has_bits_[0] |= 0x00000010u;
}
inline void GuidanceSegment::clear_has_sign_post() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void GuidanceSegment::clear_sign_post() {
  if (sign_post_ != NULL) sign_post_->::com::telenav::proto::map::v4::SignPost::Clear();
  clear_has_sign_post();
}
inline const ::com::telenav::proto::map::v4::SignPost& GuidanceSegment::sign_post() const {
  return sign_post_ != NULL ? *sign_post_ : *default_instance_->sign_post_;
}
inline ::com::telenav::proto::map::v4::SignPost* GuidanceSegment::mutable_sign_post() {
  set_has_sign_post();
  if (sign_post_ == NULL) sign_post_ = new ::com::telenav::proto::map::v4::SignPost;
  return sign_post_;
}
inline ::com::telenav::proto::map::v4::SignPost* GuidanceSegment::release_sign_post() {
  clear_has_sign_post();
  ::com::telenav::proto::map::v4::SignPost* temp = sign_post_;
  sign_post_ = NULL;
  return temp;
}

// repeated .com.telenav.proto.map.v4.SignBoard sign_board = 6;
inline int GuidanceSegment::sign_board_size() const {
  return sign_board_.size();
}
inline void GuidanceSegment::clear_sign_board() {
  sign_board_.Clear();
}
inline const ::com::telenav::proto::map::v4::SignBoard& GuidanceSegment::sign_board(int index) const {
  return sign_board_.Get(index);
}
inline ::com::telenav::proto::map::v4::SignBoard* GuidanceSegment::mutable_sign_board(int index) {
  return sign_board_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::SignBoard* GuidanceSegment::add_sign_board() {
  return sign_board_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::SignBoard >&
GuidanceSegment::sign_board() const {
  return sign_board_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::SignBoard >*
GuidanceSegment::mutable_sign_board() {
  return &sign_board_;
}

// repeated .com.telenav.proto.map.v4.RawSignpostRecord raw_signpost = 7;
inline int GuidanceSegment::raw_signpost_size() const {
  return raw_signpost_.size();
}
inline void GuidanceSegment::clear_raw_signpost() {
  raw_signpost_.Clear();
}
inline const ::com::telenav::proto::map::v4::RawSignpostRecord& GuidanceSegment::raw_signpost(int index) const {
  return raw_signpost_.Get(index);
}
inline ::com::telenav::proto::map::v4::RawSignpostRecord* GuidanceSegment::mutable_raw_signpost(int index) {
  return raw_signpost_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::RawSignpostRecord* GuidanceSegment::add_raw_signpost() {
  return raw_signpost_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RawSignpostRecord >&
GuidanceSegment::raw_signpost() const {
  return raw_signpost_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RawSignpostRecord >*
GuidanceSegment::mutable_raw_signpost() {
  return &raw_signpost_;
}

// optional uint32 segment_flags = 8;
inline bool GuidanceSegment::has_segment_flags() const {
  return (_has_bits_[0] & 0x00000080u) != 0;
}
inline void GuidanceSegment::set_has_segment_flags() {
  _has_bits_[0] |= 0x00000080u;
}
inline void GuidanceSegment::clear_has_segment_flags() {
  _has_bits_[0] &= ~0x00000080u;
}
inline void GuidanceSegment::clear_segment_flags() {
  segment_flags_ = 0u;
  clear_has_segment_flags();
}
inline ::google::protobuf::uint32 GuidanceSegment::segment_flags() const {
  return segment_flags_;
}
inline void GuidanceSegment::set_segment_flags(::google::protobuf::uint32 value) {
  set_has_segment_flags();
  segment_flags_ = value;
}

// optional .com.telenav.proto.Country country = 10;
inline bool GuidanceSegment::has_country() const {
  return (_has_bits_[0] & 0x00000100u) != 0;
}
inline void GuidanceSegment::set_has_country() {
  _has_bits_[0] |= 0x00000100u;
}
inline void GuidanceSegment::clear_has_country() {
  _has_bits_[0] &= ~0x00000100u;
}
inline void GuidanceSegment::clear_country() {
  country_ = 1;
  clear_has_country();
}
inline com::telenav::proto::Country GuidanceSegment::country() const {
  return static_cast< com::telenav::proto::Country >(country_);
}
inline void GuidanceSegment::set_country(com::telenav::proto::Country value) {
  GOOGLE_DCHECK(com::telenav::proto::Country_IsValid(value));
  set_has_country();
  country_ = value;
}

// optional string language = 11;
inline bool GuidanceSegment::has_language() const {
  return (_has_bits_[0] & 0x00000200u) != 0;
}
inline void GuidanceSegment::set_has_language() {
  _has_bits_[0] |= 0x00000200u;
}
inline void GuidanceSegment::clear_has_language() {
  _has_bits_[0] &= ~0x00000200u;
}
inline void GuidanceSegment::clear_language() {
  if (language_ != &::google::protobuf::internal::kEmptyString) {
    language_->clear();
  }
  clear_has_language();
}
inline const ::std::string& GuidanceSegment::language() const {
  return *language_;
}
inline void GuidanceSegment::set_language(const ::std::string& value) {
  set_has_language();
  if (language_ == &::google::protobuf::internal::kEmptyString) {
    language_ = new ::std::string;
  }
  language_->assign(value);
}
inline void GuidanceSegment::set_language(const char* value) {
  set_has_language();
  if (language_ == &::google::protobuf::internal::kEmptyString) {
    language_ = new ::std::string;
  }
  language_->assign(value);
}
inline void GuidanceSegment::set_language(const char* value, size_t size) {
  set_has_language();
  if (language_ == &::google::protobuf::internal::kEmptyString) {
    language_ = new ::std::string;
  }
  language_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* GuidanceSegment::mutable_language() {
  set_has_language();
  if (language_ == &::google::protobuf::internal::kEmptyString) {
    language_ = new ::std::string;
  }
  return language_;
}
inline ::std::string* GuidanceSegment::release_language() {
  clear_has_language();
  if (language_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = language_;
    language_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional bool is_left_side_drive = 12;
inline bool GuidanceSegment::has_is_left_side_drive() const {
  return (_has_bits_[0] & 0x00000400u) != 0;
}
inline void GuidanceSegment::set_has_is_left_side_drive() {
  _has_bits_[0] |= 0x00000400u;
}
inline void GuidanceSegment::clear_has_is_left_side_drive() {
  _has_bits_[0] &= ~0x00000400u;
}
inline void GuidanceSegment::clear_is_left_side_drive() {
  is_left_side_drive_ = false;
  clear_has_is_left_side_drive();
}
inline bool GuidanceSegment::is_left_side_drive() const {
  return is_left_side_drive_;
}
inline void GuidanceSegment::set_is_left_side_drive(bool value) {
  set_has_is_left_side_drive();
  is_left_side_drive_ = value;
}

// repeated .com.telenav.proto.map.v4.LaneInfo lane_info = 13;
inline int GuidanceSegment::lane_info_size() const {
  return lane_info_.size();
}
inline void GuidanceSegment::clear_lane_info() {
  lane_info_.Clear();
}
inline const ::com::telenav::proto::map::v4::LaneInfo& GuidanceSegment::lane_info(int index) const {
  return lane_info_.Get(index);
}
inline ::com::telenav::proto::map::v4::LaneInfo* GuidanceSegment::mutable_lane_info(int index) {
  return lane_info_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::LaneInfo* GuidanceSegment::add_lane_info() {
  return lane_info_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::LaneInfo >&
GuidanceSegment::lane_info() const {
  return lane_info_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::LaneInfo >*
GuidanceSegment::mutable_lane_info() {
  return &lane_info_;
}

// optional double length_in_meter = 14;
inline bool GuidanceSegment::has_length_in_meter() const {
  return (_has_bits_[0] & 0x00001000u) != 0;
}
inline void GuidanceSegment::set_has_length_in_meter() {
  _has_bits_[0] |= 0x00001000u;
}
inline void GuidanceSegment::clear_has_length_in_meter() {
  _has_bits_[0] &= ~0x00001000u;
}
inline void GuidanceSegment::clear_length_in_meter() {
  length_in_meter_ = 0;
  clear_has_length_in_meter();
}
inline double GuidanceSegment::length_in_meter() const {
  return length_in_meter_;
}
inline void GuidanceSegment::set_length_in_meter(double value) {
  set_has_length_in_meter();
  length_in_meter_ = value;
}

// repeated .com.telenav.proto.map.v4.JunctionView junction_view = 15;
inline int GuidanceSegment::junction_view_size() const {
  return junction_view_.size();
}
inline void GuidanceSegment::clear_junction_view() {
  junction_view_.Clear();
}
inline const ::com::telenav::proto::map::v4::JunctionView& GuidanceSegment::junction_view(int index) const {
  return junction_view_.Get(index);
}
inline ::com::telenav::proto::map::v4::JunctionView* GuidanceSegment::mutable_junction_view(int index) {
  return junction_view_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::JunctionView* GuidanceSegment::add_junction_view() {
  return junction_view_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::JunctionView >&
GuidanceSegment::junction_view() const {
  return junction_view_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::JunctionView >*
GuidanceSegment::mutable_junction_view() {
  return &junction_view_;
}

// repeated .com.telenav.proto.map.v4.Edge edge = 16;
inline int GuidanceSegment::edge_size() const {
  return edge_.size();
}
inline void GuidanceSegment::clear_edge() {
  edge_.Clear();
}
inline const ::com::telenav::proto::map::v4::Edge& GuidanceSegment::edge(int index) const {
  return edge_.Get(index);
}
inline ::com::telenav::proto::map::v4::Edge* GuidanceSegment::mutable_edge(int index) {
  return edge_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::Edge* GuidanceSegment::add_edge() {
  return edge_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Edge >&
GuidanceSegment::edge() const {
  return edge_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Edge >*
GuidanceSegment::mutable_edge() {
  return &edge_;
}

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

// Name

// optional string text = 1;
inline bool Name::has_text() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void Name::set_has_text() {
  _has_bits_[0] |= 0x00000001u;
}
inline void Name::clear_has_text() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void Name::clear_text() {
  if (text_ != &::google::protobuf::internal::kEmptyString) {
    text_->clear();
  }
  clear_has_text();
}
inline const ::std::string& Name::text() const {
  return *text_;
}
inline void Name::set_text(const ::std::string& value) {
  set_has_text();
  if (text_ == &::google::protobuf::internal::kEmptyString) {
    text_ = new ::std::string;
  }
  text_->assign(value);
}
inline void Name::set_text(const char* value) {
  set_has_text();
  if (text_ == &::google::protobuf::internal::kEmptyString) {
    text_ = new ::std::string;
  }
  text_->assign(value);
}
inline void Name::set_text(const char* value, size_t size) {
  set_has_text();
  if (text_ == &::google::protobuf::internal::kEmptyString) {
    text_ = new ::std::string;
  }
  text_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* Name::mutable_text() {
  set_has_text();
  if (text_ == &::google::protobuf::internal::kEmptyString) {
    text_ = new ::std::string;
  }
  return text_;
}
inline ::std::string* Name::release_text() {
  clear_has_text();
  if (text_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = text_;
    text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional string phoneme = 2;
inline bool Name::has_phoneme() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void Name::set_has_phoneme() {
  _has_bits_[0] |= 0x00000002u;
}
inline void Name::clear_has_phoneme() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void Name::clear_phoneme() {
  if (phoneme_ != &::google::protobuf::internal::kEmptyString) {
    phoneme_->clear();
  }
  clear_has_phoneme();
}
inline const ::std::string& Name::phoneme() const {
  return *phoneme_;
}
inline void Name::set_phoneme(const ::std::string& value) {
  set_has_phoneme();
  if (phoneme_ == &::google::protobuf::internal::kEmptyString) {
    phoneme_ = new ::std::string;
  }
  phoneme_->assign(value);
}
inline void Name::set_phoneme(const char* value) {
  set_has_phoneme();
  if (phoneme_ == &::google::protobuf::internal::kEmptyString) {
    phoneme_ = new ::std::string;
  }
  phoneme_->assign(value);
}
inline void Name::set_phoneme(const char* value, size_t size) {
  set_has_phoneme();
  if (phoneme_ == &::google::protobuf::internal::kEmptyString) {
    phoneme_ = new ::std::string;
  }
  phoneme_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* Name::mutable_phoneme() {
  set_has_phoneme();
  if (phoneme_ == &::google::protobuf::internal::kEmptyString) {
    phoneme_ = new ::std::string;
  }
  return phoneme_;
}
inline ::std::string* Name::release_phoneme() {
  clear_has_phoneme();
  if (phoneme_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = phoneme_;
    phoneme_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional string language_tag = 3;
inline bool Name::has_language_tag() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void Name::set_has_language_tag() {
  _has_bits_[0] |= 0x00000004u;
}
inline void Name::clear_has_language_tag() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void Name::clear_language_tag() {
  if (language_tag_ != &::google::protobuf::internal::kEmptyString) {
    language_tag_->clear();
  }
  clear_has_language_tag();
}
inline const ::std::string& Name::language_tag() const {
  return *language_tag_;
}
inline void Name::set_language_tag(const ::std::string& value) {
  set_has_language_tag();
  if (language_tag_ == &::google::protobuf::internal::kEmptyString) {
    language_tag_ = new ::std::string;
  }
  language_tag_->assign(value);
}
inline void Name::set_language_tag(const char* value) {
  set_has_language_tag();
  if (language_tag_ == &::google::protobuf::internal::kEmptyString) {
    language_tag_ = new ::std::string;
  }
  language_tag_->assign(value);
}
inline void Name::set_language_tag(const char* value, size_t size) {
  set_has_language_tag();
  if (language_tag_ == &::google::protobuf::internal::kEmptyString) {
    language_tag_ = new ::std::string;
  }
  language_tag_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* Name::mutable_language_tag() {
  set_has_language_tag();
  if (language_tag_ == &::google::protobuf::internal::kEmptyString) {
    language_tag_ = new ::std::string;
  }
  return language_tag_;
}
inline ::std::string* Name::release_language_tag() {
  clear_has_language_tag();
  if (language_tag_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = language_tag_;
    language_tag_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

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

// RoadName

// optional .com.telenav.proto.map.v4.Name name = 1;
inline bool RoadName::has_name() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void RoadName::set_has_name() {
  _has_bits_[0] |= 0x00000001u;
}
inline void RoadName::clear_has_name() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void RoadName::clear_name() {
  if (name_ != NULL) name_->::com::telenav::proto::map::v4::Name::Clear();
  clear_has_name();
}
inline const ::com::telenav::proto::map::v4::Name& RoadName::name() const {
  return name_ != NULL ? *name_ : *default_instance_->name_;
}
inline ::com::telenav::proto::map::v4::Name* RoadName::mutable_name() {
  set_has_name();
  if (name_ == NULL) name_ = new ::com::telenav::proto::map::v4::Name;
  return name_;
}
inline ::com::telenav::proto::map::v4::Name* RoadName::release_name() {
  clear_has_name();
  ::com::telenav::proto::map::v4::Name* temp = name_;
  name_ = NULL;
  return temp;
}

// optional .com.telenav.proto.map.v4.Name short_name = 2;
inline bool RoadName::has_short_name() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void RoadName::set_has_short_name() {
  _has_bits_[0] |= 0x00000002u;
}
inline void RoadName::clear_has_short_name() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void RoadName::clear_short_name() {
  if (short_name_ != NULL) short_name_->::com::telenav::proto::map::v4::Name::Clear();
  clear_has_short_name();
}
inline const ::com::telenav::proto::map::v4::Name& RoadName::short_name() const {
  return short_name_ != NULL ? *short_name_ : *default_instance_->short_name_;
}
inline ::com::telenav::proto::map::v4::Name* RoadName::mutable_short_name() {
  set_has_short_name();
  if (short_name_ == NULL) short_name_ = new ::com::telenav::proto::map::v4::Name;
  return short_name_;
}
inline ::com::telenav::proto::map::v4::Name* RoadName::release_short_name() {
  clear_has_short_name();
  ::com::telenav::proto::map::v4::Name* temp = short_name_;
  short_name_ = NULL;
  return temp;
}

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

// SegmentRoadName

// repeated .com.telenav.proto.map.v4.RoadName official_name = 1;
inline int SegmentRoadName::official_name_size() const {
  return official_name_.size();
}
inline void SegmentRoadName::clear_official_name() {
  official_name_.Clear();
}
inline const ::com::telenav::proto::map::v4::RoadName& SegmentRoadName::official_name(int index) const {
  return official_name_.Get(index);
}
inline ::com::telenav::proto::map::v4::RoadName* SegmentRoadName::mutable_official_name(int index) {
  return official_name_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::RoadName* SegmentRoadName::add_official_name() {
  return official_name_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
SegmentRoadName::official_name() const {
  return official_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
SegmentRoadName::mutable_official_name() {
  return &official_name_;
}

// repeated .com.telenav.proto.map.v4.RoadName route_number = 2;
inline int SegmentRoadName::route_number_size() const {
  return route_number_.size();
}
inline void SegmentRoadName::clear_route_number() {
  route_number_.Clear();
}
inline const ::com::telenav::proto::map::v4::RoadName& SegmentRoadName::route_number(int index) const {
  return route_number_.Get(index);
}
inline ::com::telenav::proto::map::v4::RoadName* SegmentRoadName::mutable_route_number(int index) {
  return route_number_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::RoadName* SegmentRoadName::add_route_number() {
  return route_number_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
SegmentRoadName::route_number() const {
  return route_number_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
SegmentRoadName::mutable_route_number() {
  return &route_number_;
}

// repeated .com.telenav.proto.map.v4.RoadName alternate_name = 3;
inline int SegmentRoadName::alternate_name_size() const {
  return alternate_name_.size();
}
inline void SegmentRoadName::clear_alternate_name() {
  alternate_name_.Clear();
}
inline const ::com::telenav::proto::map::v4::RoadName& SegmentRoadName::alternate_name(int index) const {
  return alternate_name_.Get(index);
}
inline ::com::telenav::proto::map::v4::RoadName* SegmentRoadName::mutable_alternate_name(int index) {
  return alternate_name_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::RoadName* SegmentRoadName::add_alternate_name() {
  return alternate_name_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
SegmentRoadName::alternate_name() const {
  return alternate_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
SegmentRoadName::mutable_alternate_name() {
  return &alternate_name_;
}

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

// SignPost

// repeated .com.telenav.proto.map.v4.RoadName official_name = 1;
inline int SignPost::official_name_size() const {
  return official_name_.size();
}
inline void SignPost::clear_official_name() {
  official_name_.Clear();
}
inline const ::com::telenav::proto::map::v4::RoadName& SignPost::official_name(int index) const {
  return official_name_.Get(index);
}
inline ::com::telenav::proto::map::v4::RoadName* SignPost::mutable_official_name(int index) {
  return official_name_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::RoadName* SignPost::add_official_name() {
  return official_name_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
SignPost::official_name() const {
  return official_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
SignPost::mutable_official_name() {
  return &official_name_;
}

// repeated .com.telenav.proto.map.v4.RoadName route_number = 2;
inline int SignPost::route_number_size() const {
  return route_number_.size();
}
inline void SignPost::clear_route_number() {
  route_number_.Clear();
}
inline const ::com::telenav::proto::map::v4::RoadName& SignPost::route_number(int index) const {
  return route_number_.Get(index);
}
inline ::com::telenav::proto::map::v4::RoadName* SignPost::mutable_route_number(int index) {
  return route_number_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::RoadName* SignPost::add_route_number() {
  return route_number_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
SignPost::route_number() const {
  return route_number_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
SignPost::mutable_route_number() {
  return &route_number_;
}

// repeated .com.telenav.proto.map.v4.RoadName alternate_name = 3;
inline int SignPost::alternate_name_size() const {
  return alternate_name_.size();
}
inline void SignPost::clear_alternate_name() {
  alternate_name_.Clear();
}
inline const ::com::telenav::proto::map::v4::RoadName& SignPost::alternate_name(int index) const {
  return alternate_name_.Get(index);
}
inline ::com::telenav::proto::map::v4::RoadName* SignPost::mutable_alternate_name(int index) {
  return alternate_name_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::RoadName* SignPost::add_alternate_name() {
  return alternate_name_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
SignPost::alternate_name() const {
  return alternate_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
SignPost::mutable_alternate_name() {
  return &alternate_name_;
}

// repeated .com.telenav.proto.map.v4.Name place_name = 4;
inline int SignPost::place_name_size() const {
  return place_name_.size();
}
inline void SignPost::clear_place_name() {
  place_name_.Clear();
}
inline const ::com::telenav::proto::map::v4::Name& SignPost::place_name(int index) const {
  return place_name_.Get(index);
}
inline ::com::telenav::proto::map::v4::Name* SignPost::mutable_place_name(int index) {
  return place_name_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::Name* SignPost::add_place_name() {
  return place_name_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Name >&
SignPost::place_name() const {
  return place_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::Name >*
SignPost::mutable_place_name() {
  return &place_name_;
}

// optional .com.telenav.proto.map.v4.Name exit_label = 5;
inline bool SignPost::has_exit_label() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void SignPost::set_has_exit_label() {
  _has_bits_[0] |= 0x00000010u;
}
inline void SignPost::clear_has_exit_label() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void SignPost::clear_exit_label() {
  if (exit_label_ != NULL) exit_label_->::com::telenav::proto::map::v4::Name::Clear();
  clear_has_exit_label();
}
inline const ::com::telenav::proto::map::v4::Name& SignPost::exit_label() const {
  return exit_label_ != NULL ? *exit_label_ : *default_instance_->exit_label_;
}
inline ::com::telenav::proto::map::v4::Name* SignPost::mutable_exit_label() {
  set_has_exit_label();
  if (exit_label_ == NULL) exit_label_ = new ::com::telenav::proto::map::v4::Name;
  return exit_label_;
}
inline ::com::telenav::proto::map::v4::Name* SignPost::release_exit_label() {
  clear_has_exit_label();
  ::com::telenav::proto::map::v4::Name* temp = exit_label_;
  exit_label_ = NULL;
  return temp;
}

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

// SignBoard

// optional .com.telenav.proto.map.v4.SignBoardType type = 1;
inline bool SignBoard::has_type() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void SignBoard::set_has_type() {
  _has_bits_[0] |= 0x00000001u;
}
inline void SignBoard::clear_has_type() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void SignBoard::clear_type() {
  type_ = 1;
  clear_has_type();
}
inline com::telenav::proto::map::v4::SignBoardType SignBoard::type() const {
  return static_cast< com::telenav::proto::map::v4::SignBoardType >(type_);
}
inline void SignBoard::set_type(com::telenav::proto::map::v4::SignBoardType value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::SignBoardType_IsValid(value));
  set_has_type();
  type_ = value;
}

// optional string pattern_id = 2;
inline bool SignBoard::has_pattern_id() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void SignBoard::set_has_pattern_id() {
  _has_bits_[0] |= 0x00000002u;
}
inline void SignBoard::clear_has_pattern_id() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void SignBoard::clear_pattern_id() {
  if (pattern_id_ != &::google::protobuf::internal::kEmptyString) {
    pattern_id_->clear();
  }
  clear_has_pattern_id();
}
inline const ::std::string& SignBoard::pattern_id() const {
  return *pattern_id_;
}
inline void SignBoard::set_pattern_id(const ::std::string& value) {
  set_has_pattern_id();
  if (pattern_id_ == &::google::protobuf::internal::kEmptyString) {
    pattern_id_ = new ::std::string;
  }
  pattern_id_->assign(value);
}
inline void SignBoard::set_pattern_id(const char* value) {
  set_has_pattern_id();
  if (pattern_id_ == &::google::protobuf::internal::kEmptyString) {
    pattern_id_ = new ::std::string;
  }
  pattern_id_->assign(value);
}
inline void SignBoard::set_pattern_id(const char* value, size_t size) {
  set_has_pattern_id();
  if (pattern_id_ == &::google::protobuf::internal::kEmptyString) {
    pattern_id_ = new ::std::string;
  }
  pattern_id_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* SignBoard::mutable_pattern_id() {
  set_has_pattern_id();
  if (pattern_id_ == &::google::protobuf::internal::kEmptyString) {
    pattern_id_ = new ::std::string;
  }
  return pattern_id_;
}
inline ::std::string* SignBoard::release_pattern_id() {
  clear_has_pattern_id();
  if (pattern_id_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = pattern_id_;
    pattern_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional string arrow_id = 3;
inline bool SignBoard::has_arrow_id() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void SignBoard::set_has_arrow_id() {
  _has_bits_[0] |= 0x00000004u;
}
inline void SignBoard::clear_has_arrow_id() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void SignBoard::clear_arrow_id() {
  if (arrow_id_ != &::google::protobuf::internal::kEmptyString) {
    arrow_id_->clear();
  }
  clear_has_arrow_id();
}
inline const ::std::string& SignBoard::arrow_id() const {
  return *arrow_id_;
}
inline void SignBoard::set_arrow_id(const ::std::string& value) {
  set_has_arrow_id();
  if (arrow_id_ == &::google::protobuf::internal::kEmptyString) {
    arrow_id_ = new ::std::string;
  }
  arrow_id_->assign(value);
}
inline void SignBoard::set_arrow_id(const char* value) {
  set_has_arrow_id();
  if (arrow_id_ == &::google::protobuf::internal::kEmptyString) {
    arrow_id_ = new ::std::string;
  }
  arrow_id_->assign(value);
}
inline void SignBoard::set_arrow_id(const char* value, size_t size) {
  set_has_arrow_id();
  if (arrow_id_ == &::google::protobuf::internal::kEmptyString) {
    arrow_id_ = new ::std::string;
  }
  arrow_id_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* SignBoard::mutable_arrow_id() {
  set_has_arrow_id();
  if (arrow_id_ == &::google::protobuf::internal::kEmptyString) {
    arrow_id_ = new ::std::string;
  }
  return arrow_id_;
}
inline ::std::string* SignBoard::release_arrow_id() {
  clear_has_arrow_id();
  if (arrow_id_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = arrow_id_;
    arrow_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional string image_id = 4;
inline bool SignBoard::has_image_id() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void SignBoard::set_has_image_id() {
  _has_bits_[0] |= 0x00000008u;
}
inline void SignBoard::clear_has_image_id() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void SignBoard::clear_image_id() {
  if (image_id_ != &::google::protobuf::internal::kEmptyString) {
    image_id_->clear();
  }
  clear_has_image_id();
}
inline const ::std::string& SignBoard::image_id() const {
  return *image_id_;
}
inline void SignBoard::set_image_id(const ::std::string& value) {
  set_has_image_id();
  if (image_id_ == &::google::protobuf::internal::kEmptyString) {
    image_id_ = new ::std::string;
  }
  image_id_->assign(value);
}
inline void SignBoard::set_image_id(const char* value) {
  set_has_image_id();
  if (image_id_ == &::google::protobuf::internal::kEmptyString) {
    image_id_ = new ::std::string;
  }
  image_id_->assign(value);
}
inline void SignBoard::set_image_id(const char* value, size_t size) {
  set_has_image_id();
  if (image_id_ == &::google::protobuf::internal::kEmptyString) {
    image_id_ = new ::std::string;
  }
  image_id_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* SignBoard::mutable_image_id() {
  set_has_image_id();
  if (image_id_ == &::google::protobuf::internal::kEmptyString) {
    image_id_ = new ::std::string;
  }
  return image_id_;
}
inline ::std::string* SignBoard::release_image_id() {
  clear_has_image_id();
  if (image_id_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = image_id_;
    image_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

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

// AdminNameInfo

// optional .com.telenav.proto.map.v4.AdminNameInfo.AdminSide admin_side = 1;
inline bool AdminNameInfo::has_admin_side() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void AdminNameInfo::set_has_admin_side() {
  _has_bits_[0] |= 0x00000001u;
}
inline void AdminNameInfo::clear_has_admin_side() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void AdminNameInfo::clear_admin_side() {
  admin_side_ = 0;
  clear_has_admin_side();
}
inline ::com::telenav::proto::map::v4::AdminNameInfo_AdminSide AdminNameInfo::admin_side() const {
  return static_cast< ::com::telenav::proto::map::v4::AdminNameInfo_AdminSide >(admin_side_);
}
inline void AdminNameInfo::set_admin_side(::com::telenav::proto::map::v4::AdminNameInfo_AdminSide value) {
  GOOGLE_DCHECK(::com::telenav::proto::map::v4::AdminNameInfo_AdminSide_IsValid(value));
  set_has_admin_side();
  admin_side_ = value;
}

// optional string country = 2;
inline bool AdminNameInfo::has_country() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void AdminNameInfo::set_has_country() {
  _has_bits_[0] |= 0x00000002u;
}
inline void AdminNameInfo::clear_has_country() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void AdminNameInfo::clear_country() {
  if (country_ != &::google::protobuf::internal::kEmptyString) {
    country_->clear();
  }
  clear_has_country();
}
inline const ::std::string& AdminNameInfo::country() const {
  return *country_;
}
inline void AdminNameInfo::set_country(const ::std::string& value) {
  set_has_country();
  if (country_ == &::google::protobuf::internal::kEmptyString) {
    country_ = new ::std::string;
  }
  country_->assign(value);
}
inline void AdminNameInfo::set_country(const char* value) {
  set_has_country();
  if (country_ == &::google::protobuf::internal::kEmptyString) {
    country_ = new ::std::string;
  }
  country_->assign(value);
}
inline void AdminNameInfo::set_country(const char* value, size_t size) {
  set_has_country();
  if (country_ == &::google::protobuf::internal::kEmptyString) {
    country_ = new ::std::string;
  }
  country_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* AdminNameInfo::mutable_country() {
  set_has_country();
  if (country_ == &::google::protobuf::internal::kEmptyString) {
    country_ = new ::std::string;
  }
  return country_;
}
inline ::std::string* AdminNameInfo::release_country() {
  clear_has_country();
  if (country_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = country_;
    country_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional string zip_code = 3;
inline bool AdminNameInfo::has_zip_code() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void AdminNameInfo::set_has_zip_code() {
  _has_bits_[0] |= 0x00000004u;
}
inline void AdminNameInfo::clear_has_zip_code() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void AdminNameInfo::clear_zip_code() {
  if (zip_code_ != &::google::protobuf::internal::kEmptyString) {
    zip_code_->clear();
  }
  clear_has_zip_code();
}
inline const ::std::string& AdminNameInfo::zip_code() const {
  return *zip_code_;
}
inline void AdminNameInfo::set_zip_code(const ::std::string& value) {
  set_has_zip_code();
  if (zip_code_ == &::google::protobuf::internal::kEmptyString) {
    zip_code_ = new ::std::string;
  }
  zip_code_->assign(value);
}
inline void AdminNameInfo::set_zip_code(const char* value) {
  set_has_zip_code();
  if (zip_code_ == &::google::protobuf::internal::kEmptyString) {
    zip_code_ = new ::std::string;
  }
  zip_code_->assign(value);
}
inline void AdminNameInfo::set_zip_code(const char* value, size_t size) {
  set_has_zip_code();
  if (zip_code_ == &::google::protobuf::internal::kEmptyString) {
    zip_code_ = new ::std::string;
  }
  zip_code_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* AdminNameInfo::mutable_zip_code() {
  set_has_zip_code();
  if (zip_code_ == &::google::protobuf::internal::kEmptyString) {
    zip_code_ = new ::std::string;
  }
  return zip_code_;
}
inline ::std::string* AdminNameInfo::release_zip_code() {
  clear_has_zip_code();
  if (zip_code_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = zip_code_;
    zip_code_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// repeated string state_name = 6;
inline int AdminNameInfo::state_name_size() const {
  return state_name_.size();
}
inline void AdminNameInfo::clear_state_name() {
  state_name_.Clear();
}
inline const ::std::string& AdminNameInfo::state_name(int index) const {
  return state_name_.Get(index);
}
inline ::std::string* AdminNameInfo::mutable_state_name(int index) {
  return state_name_.Mutable(index);
}
inline void AdminNameInfo::set_state_name(int index, const ::std::string& value) {
  state_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_state_name(int index, const char* value) {
  state_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_state_name(int index, const char* value, size_t size) {
  state_name_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* AdminNameInfo::add_state_name() {
  return state_name_.Add();
}
inline void AdminNameInfo::add_state_name(const ::std::string& value) {
  state_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_state_name(const char* value) {
  state_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_state_name(const char* value, size_t size) {
  state_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
AdminNameInfo::state_name() const {
  return state_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
AdminNameInfo::mutable_state_name() {
  return &state_name_;
}

// repeated string city_name = 7;
inline int AdminNameInfo::city_name_size() const {
  return city_name_.size();
}
inline void AdminNameInfo::clear_city_name() {
  city_name_.Clear();
}
inline const ::std::string& AdminNameInfo::city_name(int index) const {
  return city_name_.Get(index);
}
inline ::std::string* AdminNameInfo::mutable_city_name(int index) {
  return city_name_.Mutable(index);
}
inline void AdminNameInfo::set_city_name(int index, const ::std::string& value) {
  city_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_city_name(int index, const char* value) {
  city_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_city_name(int index, const char* value, size_t size) {
  city_name_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* AdminNameInfo::add_city_name() {
  return city_name_.Add();
}
inline void AdminNameInfo::add_city_name(const ::std::string& value) {
  city_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_city_name(const char* value) {
  city_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_city_name(const char* value, size_t size) {
  city_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
AdminNameInfo::city_name() const {
  return city_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
AdminNameInfo::mutable_city_name() {
  return &city_name_;
}

// repeated string city_alias_name = 8;
inline int AdminNameInfo::city_alias_name_size() const {
  return city_alias_name_.size();
}
inline void AdminNameInfo::clear_city_alias_name() {
  city_alias_name_.Clear();
}
inline const ::std::string& AdminNameInfo::city_alias_name(int index) const {
  return city_alias_name_.Get(index);
}
inline ::std::string* AdminNameInfo::mutable_city_alias_name(int index) {
  return city_alias_name_.Mutable(index);
}
inline void AdminNameInfo::set_city_alias_name(int index, const ::std::string& value) {
  city_alias_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_city_alias_name(int index, const char* value) {
  city_alias_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_city_alias_name(int index, const char* value, size_t size) {
  city_alias_name_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* AdminNameInfo::add_city_alias_name() {
  return city_alias_name_.Add();
}
inline void AdminNameInfo::add_city_alias_name(const ::std::string& value) {
  city_alias_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_city_alias_name(const char* value) {
  city_alias_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_city_alias_name(const char* value, size_t size) {
  city_alias_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
AdminNameInfo::city_alias_name() const {
  return city_alias_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
AdminNameInfo::mutable_city_alias_name() {
  return &city_alias_name_;
}

// repeated string sub_city_name = 9;
inline int AdminNameInfo::sub_city_name_size() const {
  return sub_city_name_.size();
}
inline void AdminNameInfo::clear_sub_city_name() {
  sub_city_name_.Clear();
}
inline const ::std::string& AdminNameInfo::sub_city_name(int index) const {
  return sub_city_name_.Get(index);
}
inline ::std::string* AdminNameInfo::mutable_sub_city_name(int index) {
  return sub_city_name_.Mutable(index);
}
inline void AdminNameInfo::set_sub_city_name(int index, const ::std::string& value) {
  sub_city_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_sub_city_name(int index, const char* value) {
  sub_city_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_sub_city_name(int index, const char* value, size_t size) {
  sub_city_name_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* AdminNameInfo::add_sub_city_name() {
  return sub_city_name_.Add();
}
inline void AdminNameInfo::add_sub_city_name(const ::std::string& value) {
  sub_city_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_sub_city_name(const char* value) {
  sub_city_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_sub_city_name(const char* value, size_t size) {
  sub_city_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
AdminNameInfo::sub_city_name() const {
  return sub_city_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
AdminNameInfo::mutable_sub_city_name() {
  return &sub_city_name_;
}

// repeated string county_name = 10;
inline int AdminNameInfo::county_name_size() const {
  return county_name_.size();
}
inline void AdminNameInfo::clear_county_name() {
  county_name_.Clear();
}
inline const ::std::string& AdminNameInfo::county_name(int index) const {
  return county_name_.Get(index);
}
inline ::std::string* AdminNameInfo::mutable_county_name(int index) {
  return county_name_.Mutable(index);
}
inline void AdminNameInfo::set_county_name(int index, const ::std::string& value) {
  county_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_county_name(int index, const char* value) {
  county_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_county_name(int index, const char* value, size_t size) {
  county_name_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* AdminNameInfo::add_county_name() {
  return county_name_.Add();
}
inline void AdminNameInfo::add_county_name(const ::std::string& value) {
  county_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_county_name(const char* value) {
  county_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_county_name(const char* value, size_t size) {
  county_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
AdminNameInfo::county_name() const {
  return county_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
AdminNameInfo::mutable_county_name() {
  return &county_name_;
}

// repeated string sub_county_name = 11;
inline int AdminNameInfo::sub_county_name_size() const {
  return sub_county_name_.size();
}
inline void AdminNameInfo::clear_sub_county_name() {
  sub_county_name_.Clear();
}
inline const ::std::string& AdminNameInfo::sub_county_name(int index) const {
  return sub_county_name_.Get(index);
}
inline ::std::string* AdminNameInfo::mutable_sub_county_name(int index) {
  return sub_county_name_.Mutable(index);
}
inline void AdminNameInfo::set_sub_county_name(int index, const ::std::string& value) {
  sub_county_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_sub_county_name(int index, const char* value) {
  sub_county_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_sub_county_name(int index, const char* value, size_t size) {
  sub_county_name_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* AdminNameInfo::add_sub_county_name() {
  return sub_county_name_.Add();
}
inline void AdminNameInfo::add_sub_county_name(const ::std::string& value) {
  sub_county_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_sub_county_name(const char* value) {
  sub_county_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_sub_county_name(const char* value, size_t size) {
  sub_county_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
AdminNameInfo::sub_county_name() const {
  return sub_county_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
AdminNameInfo::mutable_sub_county_name() {
  return &sub_county_name_;
}

// repeated string road_sign = 15;
inline int AdminNameInfo::road_sign_size() const {
  return road_sign_.size();
}
inline void AdminNameInfo::clear_road_sign() {
  road_sign_.Clear();
}
inline const ::std::string& AdminNameInfo::road_sign(int index) const {
  return road_sign_.Get(index);
}
inline ::std::string* AdminNameInfo::mutable_road_sign(int index) {
  return road_sign_.Mutable(index);
}
inline void AdminNameInfo::set_road_sign(int index, const ::std::string& value) {
  road_sign_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_road_sign(int index, const char* value) {
  road_sign_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_road_sign(int index, const char* value, size_t size) {
  road_sign_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* AdminNameInfo::add_road_sign() {
  return road_sign_.Add();
}
inline void AdminNameInfo::add_road_sign(const ::std::string& value) {
  road_sign_.Add()->assign(value);
}
inline void AdminNameInfo::add_road_sign(const char* value) {
  road_sign_.Add()->assign(value);
}
inline void AdminNameInfo::add_road_sign(const char* value, size_t size) {
  road_sign_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
AdminNameInfo::road_sign() const {
  return road_sign_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
AdminNameInfo::mutable_road_sign() {
  return &road_sign_;
}

// repeated string area_name = 16;
inline int AdminNameInfo::area_name_size() const {
  return area_name_.size();
}
inline void AdminNameInfo::clear_area_name() {
  area_name_.Clear();
}
inline const ::std::string& AdminNameInfo::area_name(int index) const {
  return area_name_.Get(index);
}
inline ::std::string* AdminNameInfo::mutable_area_name(int index) {
  return area_name_.Mutable(index);
}
inline void AdminNameInfo::set_area_name(int index, const ::std::string& value) {
  area_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_area_name(int index, const char* value) {
  area_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_area_name(int index, const char* value, size_t size) {
  area_name_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* AdminNameInfo::add_area_name() {
  return area_name_.Add();
}
inline void AdminNameInfo::add_area_name(const ::std::string& value) {
  area_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_area_name(const char* value) {
  area_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_area_name(const char* value, size_t size) {
  area_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
AdminNameInfo::area_name() const {
  return area_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
AdminNameInfo::mutable_area_name() {
  return &area_name_;
}

// repeated string street_name = 17;
inline int AdminNameInfo::street_name_size() const {
  return street_name_.size();
}
inline void AdminNameInfo::clear_street_name() {
  street_name_.Clear();
}
inline const ::std::string& AdminNameInfo::street_name(int index) const {
  return street_name_.Get(index);
}
inline ::std::string* AdminNameInfo::mutable_street_name(int index) {
  return street_name_.Mutable(index);
}
inline void AdminNameInfo::set_street_name(int index, const ::std::string& value) {
  street_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_street_name(int index, const char* value) {
  street_name_.Mutable(index)->assign(value);
}
inline void AdminNameInfo::set_street_name(int index, const char* value, size_t size) {
  street_name_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* AdminNameInfo::add_street_name() {
  return street_name_.Add();
}
inline void AdminNameInfo::add_street_name(const ::std::string& value) {
  street_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_street_name(const char* value) {
  street_name_.Add()->assign(value);
}
inline void AdminNameInfo::add_street_name(const char* value, size_t size) {
  street_name_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
AdminNameInfo::street_name() const {
  return street_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
AdminNameInfo::mutable_street_name() {
  return &street_name_;
}

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

// RawSignpostRecord

// optional .com.telenav.proto.map.v4.RawSignpostCategory signpost_category = 1;
inline bool RawSignpostRecord::has_signpost_category() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void RawSignpostRecord::set_has_signpost_category() {
  _has_bits_[0] |= 0x00000001u;
}
inline void RawSignpostRecord::clear_has_signpost_category() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void RawSignpostRecord::clear_signpost_category() {
  signpost_category_ = 0;
  clear_has_signpost_category();
}
inline com::telenav::proto::map::v4::RawSignpostCategory RawSignpostRecord::signpost_category() const {
  return static_cast< com::telenav::proto::map::v4::RawSignpostCategory >(signpost_category_);
}
inline void RawSignpostRecord::set_signpost_category(com::telenav::proto::map::v4::RawSignpostCategory value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::RawSignpostCategory_IsValid(value));
  set_has_signpost_category();
  signpost_category_ = value;
}

// optional .com.telenav.proto.map.v4.RawNameCategory name_category = 2;
inline bool RawSignpostRecord::has_name_category() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void RawSignpostRecord::set_has_name_category() {
  _has_bits_[0] |= 0x00000002u;
}
inline void RawSignpostRecord::clear_has_name_category() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void RawSignpostRecord::clear_name_category() {
  name_category_ = 0;
  clear_has_name_category();
}
inline com::telenav::proto::map::v4::RawNameCategory RawSignpostRecord::name_category() const {
  return static_cast< com::telenav::proto::map::v4::RawNameCategory >(name_category_);
}
inline void RawSignpostRecord::set_name_category(com::telenav::proto::map::v4::RawNameCategory value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::RawNameCategory_IsValid(value));
  set_has_name_category();
  name_category_ = value;
}

// optional uint32 name_sub_category = 3;
inline bool RawSignpostRecord::has_name_sub_category() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void RawSignpostRecord::set_has_name_sub_category() {
  _has_bits_[0] |= 0x00000004u;
}
inline void RawSignpostRecord::clear_has_name_sub_category() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void RawSignpostRecord::clear_name_sub_category() {
  name_sub_category_ = 0u;
  clear_has_name_sub_category();
}
inline ::google::protobuf::uint32 RawSignpostRecord::name_sub_category() const {
  return name_sub_category_;
}
inline void RawSignpostRecord::set_name_sub_category(::google::protobuf::uint32 value) {
  set_has_name_sub_category();
  name_sub_category_ = value;
}

// optional string content = 4;
inline bool RawSignpostRecord::has_content() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void RawSignpostRecord::set_has_content() {
  _has_bits_[0] |= 0x00000008u;
}
inline void RawSignpostRecord::clear_has_content() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void RawSignpostRecord::clear_content() {
  if (content_ != &::google::protobuf::internal::kEmptyString) {
    content_->clear();
  }
  clear_has_content();
}
inline const ::std::string& RawSignpostRecord::content() const {
  return *content_;
}
inline void RawSignpostRecord::set_content(const ::std::string& value) {
  set_has_content();
  if (content_ == &::google::protobuf::internal::kEmptyString) {
    content_ = new ::std::string;
  }
  content_->assign(value);
}
inline void RawSignpostRecord::set_content(const char* value) {
  set_has_content();
  if (content_ == &::google::protobuf::internal::kEmptyString) {
    content_ = new ::std::string;
  }
  content_->assign(value);
}
inline void RawSignpostRecord::set_content(const char* value, size_t size) {
  set_has_content();
  if (content_ == &::google::protobuf::internal::kEmptyString) {
    content_ = new ::std::string;
  }
  content_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* RawSignpostRecord::mutable_content() {
  set_has_content();
  if (content_ == &::google::protobuf::internal::kEmptyString) {
    content_ = new ::std::string;
  }
  return content_;
}
inline ::std::string* RawSignpostRecord::release_content() {
  clear_has_content();
  if (content_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = content_;
    content_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional string language_tag = 5;
inline bool RawSignpostRecord::has_language_tag() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void RawSignpostRecord::set_has_language_tag() {
  _has_bits_[0] |= 0x00000010u;
}
inline void RawSignpostRecord::clear_has_language_tag() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void RawSignpostRecord::clear_language_tag() {
  if (language_tag_ != &::google::protobuf::internal::kEmptyString) {
    language_tag_->clear();
  }
  clear_has_language_tag();
}
inline const ::std::string& RawSignpostRecord::language_tag() const {
  return *language_tag_;
}
inline void RawSignpostRecord::set_language_tag(const ::std::string& value) {
  set_has_language_tag();
  if (language_tag_ == &::google::protobuf::internal::kEmptyString) {
    language_tag_ = new ::std::string;
  }
  language_tag_->assign(value);
}
inline void RawSignpostRecord::set_language_tag(const char* value) {
  set_has_language_tag();
  if (language_tag_ == &::google::protobuf::internal::kEmptyString) {
    language_tag_ = new ::std::string;
  }
  language_tag_->assign(value);
}
inline void RawSignpostRecord::set_language_tag(const char* value, size_t size) {
  set_has_language_tag();
  if (language_tag_ == &::google::protobuf::internal::kEmptyString) {
    language_tag_ = new ::std::string;
  }
  language_tag_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* RawSignpostRecord::mutable_language_tag() {
  set_has_language_tag();
  if (language_tag_ == &::google::protobuf::internal::kEmptyString) {
    language_tag_ = new ::std::string;
  }
  return language_tag_;
}
inline ::std::string* RawSignpostRecord::release_language_tag() {
  clear_has_language_tag();
  if (language_tag_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = language_tag_;
    language_tag_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional string translated = 6;
inline bool RawSignpostRecord::has_translated() const {
  return (_has_bits_[0] & 0x00000020u) != 0;
}
inline void RawSignpostRecord::set_has_translated() {
  _has_bits_[0] |= 0x00000020u;
}
inline void RawSignpostRecord::clear_has_translated() {
  _has_bits_[0] &= ~0x00000020u;
}
inline void RawSignpostRecord::clear_translated() {
  if (translated_ != &::google::protobuf::internal::kEmptyString) {
    translated_->clear();
  }
  clear_has_translated();
}
inline const ::std::string& RawSignpostRecord::translated() const {
  return *translated_;
}
inline void RawSignpostRecord::set_translated(const ::std::string& value) {
  set_has_translated();
  if (translated_ == &::google::protobuf::internal::kEmptyString) {
    translated_ = new ::std::string;
  }
  translated_->assign(value);
}
inline void RawSignpostRecord::set_translated(const char* value) {
  set_has_translated();
  if (translated_ == &::google::protobuf::internal::kEmptyString) {
    translated_ = new ::std::string;
  }
  translated_->assign(value);
}
inline void RawSignpostRecord::set_translated(const char* value, size_t size) {
  set_has_translated();
  if (translated_ == &::google::protobuf::internal::kEmptyString) {
    translated_ = new ::std::string;
  }
  translated_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* RawSignpostRecord::mutable_translated() {
  set_has_translated();
  if (translated_ == &::google::protobuf::internal::kEmptyString) {
    translated_ = new ::std::string;
  }
  return translated_;
}
inline ::std::string* RawSignpostRecord::release_translated() {
  clear_has_translated();
  if (translated_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = translated_;
    translated_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional string translated_language_tag = 7;
inline bool RawSignpostRecord::has_translated_language_tag() const {
  return (_has_bits_[0] & 0x00000040u) != 0;
}
inline void RawSignpostRecord::set_has_translated_language_tag() {
  _has_bits_[0] |= 0x00000040u;
}
inline void RawSignpostRecord::clear_has_translated_language_tag() {
  _has_bits_[0] &= ~0x00000040u;
}
inline void RawSignpostRecord::clear_translated_language_tag() {
  if (translated_language_tag_ != &::google::protobuf::internal::kEmptyString) {
    translated_language_tag_->clear();
  }
  clear_has_translated_language_tag();
}
inline const ::std::string& RawSignpostRecord::translated_language_tag() const {
  return *translated_language_tag_;
}
inline void RawSignpostRecord::set_translated_language_tag(const ::std::string& value) {
  set_has_translated_language_tag();
  if (translated_language_tag_ == &::google::protobuf::internal::kEmptyString) {
    translated_language_tag_ = new ::std::string;
  }
  translated_language_tag_->assign(value);
}
inline void RawSignpostRecord::set_translated_language_tag(const char* value) {
  set_has_translated_language_tag();
  if (translated_language_tag_ == &::google::protobuf::internal::kEmptyString) {
    translated_language_tag_ = new ::std::string;
  }
  translated_language_tag_->assign(value);
}
inline void RawSignpostRecord::set_translated_language_tag(const char* value, size_t size) {
  set_has_translated_language_tag();
  if (translated_language_tag_ == &::google::protobuf::internal::kEmptyString) {
    translated_language_tag_ = new ::std::string;
  }
  translated_language_tag_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* RawSignpostRecord::mutable_translated_language_tag() {
  set_has_translated_language_tag();
  if (translated_language_tag_ == &::google::protobuf::internal::kEmptyString) {
    translated_language_tag_ = new ::std::string;
  }
  return translated_language_tag_;
}
inline ::std::string* RawSignpostRecord::release_translated_language_tag() {
  clear_has_translated_language_tag();
  if (translated_language_tag_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = translated_language_tag_;
    translated_language_tag_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// repeated string phoneme = 8;
inline int RawSignpostRecord::phoneme_size() const {
  return phoneme_.size();
}
inline void RawSignpostRecord::clear_phoneme() {
  phoneme_.Clear();
}
inline const ::std::string& RawSignpostRecord::phoneme(int index) const {
  return phoneme_.Get(index);
}
inline ::std::string* RawSignpostRecord::mutable_phoneme(int index) {
  return phoneme_.Mutable(index);
}
inline void RawSignpostRecord::set_phoneme(int index, const ::std::string& value) {
  phoneme_.Mutable(index)->assign(value);
}
inline void RawSignpostRecord::set_phoneme(int index, const char* value) {
  phoneme_.Mutable(index)->assign(value);
}
inline void RawSignpostRecord::set_phoneme(int index, const char* value, size_t size) {
  phoneme_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* RawSignpostRecord::add_phoneme() {
  return phoneme_.Add();
}
inline void RawSignpostRecord::add_phoneme(const ::std::string& value) {
  phoneme_.Add()->assign(value);
}
inline void RawSignpostRecord::add_phoneme(const char* value) {
  phoneme_.Add()->assign(value);
}
inline void RawSignpostRecord::add_phoneme(const char* value, size_t size) {
  phoneme_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
RawSignpostRecord::phoneme() const {
  return phoneme_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
RawSignpostRecord::mutable_phoneme() {
  return &phoneme_;
}

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

// EdgeExtraInfo

// optional .com.telenav.proto.map.v4.RawRoadType raw_road_type = 1;
inline bool EdgeExtraInfo::has_raw_road_type() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void EdgeExtraInfo::set_has_raw_road_type() {
  _has_bits_[0] |= 0x00000001u;
}
inline void EdgeExtraInfo::clear_has_raw_road_type() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void EdgeExtraInfo::clear_raw_road_type() {
  raw_road_type_ = 0;
  clear_has_raw_road_type();
}
inline com::telenav::proto::map::v4::RawRoadType EdgeExtraInfo::raw_road_type() const {
  return static_cast< com::telenav::proto::map::v4::RawRoadType >(raw_road_type_);
}
inline void EdgeExtraInfo::set_raw_road_type(com::telenav::proto::map::v4::RawRoadType value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::RawRoadType_IsValid(value));
  set_has_raw_road_type();
  raw_road_type_ = value;
}

// optional .com.telenav.proto.map.v4.RawRoadSubType raw_road_sub_type = 2;
inline bool EdgeExtraInfo::has_raw_road_sub_type() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void EdgeExtraInfo::set_has_raw_road_sub_type() {
  _has_bits_[0] |= 0x00000002u;
}
inline void EdgeExtraInfo::clear_has_raw_road_sub_type() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void EdgeExtraInfo::clear_raw_road_sub_type() {
  raw_road_sub_type_ = 0;
  clear_has_raw_road_sub_type();
}
inline com::telenav::proto::map::v4::RawRoadSubType EdgeExtraInfo::raw_road_sub_type() const {
  return static_cast< com::telenav::proto::map::v4::RawRoadSubType >(raw_road_sub_type_);
}
inline void EdgeExtraInfo::set_raw_road_sub_type(com::telenav::proto::map::v4::RawRoadSubType value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::RawRoadSubType_IsValid(value));
  set_has_raw_road_sub_type();
  raw_road_sub_type_ = value;
}

// optional int32 road_priority = 3;
inline bool EdgeExtraInfo::has_road_priority() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void EdgeExtraInfo::set_has_road_priority() {
  _has_bits_[0] |= 0x00000004u;
}
inline void EdgeExtraInfo::clear_has_road_priority() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void EdgeExtraInfo::clear_road_priority() {
  road_priority_ = 0;
  clear_has_road_priority();
}
inline ::google::protobuf::int32 EdgeExtraInfo::road_priority() const {
  return road_priority_;
}
inline void EdgeExtraInfo::set_road_priority(::google::protobuf::int32 value) {
  set_has_road_priority();
  road_priority_ = value;
}

// optional double average_speed = 4;
inline bool EdgeExtraInfo::has_average_speed() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void EdgeExtraInfo::set_has_average_speed() {
  _has_bits_[0] |= 0x00000008u;
}
inline void EdgeExtraInfo::clear_has_average_speed() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void EdgeExtraInfo::clear_average_speed() {
  average_speed_ = 0;
  clear_has_average_speed();
}
inline double EdgeExtraInfo::average_speed() const {
  return average_speed_;
}
inline void EdgeExtraInfo::set_average_speed(double value) {
  set_has_average_speed();
  average_speed_ = value;
}

// optional double historical_speed = 5;
inline bool EdgeExtraInfo::has_historical_speed() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void EdgeExtraInfo::set_has_historical_speed() {
  _has_bits_[0] |= 0x00000010u;
}
inline void EdgeExtraInfo::clear_has_historical_speed() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void EdgeExtraInfo::clear_historical_speed() {
  historical_speed_ = 0;
  clear_has_historical_speed();
}
inline double EdgeExtraInfo::historical_speed() const {
  return historical_speed_;
}
inline void EdgeExtraInfo::set_historical_speed(double value) {
  set_has_historical_speed();
  historical_speed_ = value;
}

// optional .com.telenav.proto.map.v4.EdgeRestrictedConnectionType edge_restricted_connection_type = 7;
inline bool EdgeExtraInfo::has_edge_restricted_connection_type() const {
  return (_has_bits_[0] & 0x00000020u) != 0;
}
inline void EdgeExtraInfo::set_has_edge_restricted_connection_type() {
  _has_bits_[0] |= 0x00000020u;
}
inline void EdgeExtraInfo::clear_has_edge_restricted_connection_type() {
  _has_bits_[0] &= ~0x00000020u;
}
inline void EdgeExtraInfo::clear_edge_restricted_connection_type() {
  edge_restricted_connection_type_ = 0;
  clear_has_edge_restricted_connection_type();
}
inline com::telenav::proto::map::v4::EdgeRestrictedConnectionType EdgeExtraInfo::edge_restricted_connection_type() const {
  return static_cast< com::telenav::proto::map::v4::EdgeRestrictedConnectionType >(edge_restricted_connection_type_);
}
inline void EdgeExtraInfo::set_edge_restricted_connection_type(com::telenav::proto::map::v4::EdgeRestrictedConnectionType value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::EdgeRestrictedConnectionType_IsValid(value));
  set_has_edge_restricted_connection_type();
  edge_restricted_connection_type_ = value;
}

// optional int32 time_restrict_id = 8;
inline bool EdgeExtraInfo::has_time_restrict_id() const {
  return (_has_bits_[0] & 0x00000040u) != 0;
}
inline void EdgeExtraInfo::set_has_time_restrict_id() {
  _has_bits_[0] |= 0x00000040u;
}
inline void EdgeExtraInfo::clear_has_time_restrict_id() {
  _has_bits_[0] &= ~0x00000040u;
}
inline void EdgeExtraInfo::clear_time_restrict_id() {
  time_restrict_id_ = 0;
  clear_has_time_restrict_id();
}
inline ::google::protobuf::int32 EdgeExtraInfo::time_restrict_id() const {
  return time_restrict_id_;
}
inline void EdgeExtraInfo::set_time_restrict_id(::google::protobuf::int32 value) {
  set_has_time_restrict_id();
  time_restrict_id_ = value;
}

// optional int32 time_zone_index = 9;
inline bool EdgeExtraInfo::has_time_zone_index() const {
  return (_has_bits_[0] & 0x00000080u) != 0;
}
inline void EdgeExtraInfo::set_has_time_zone_index() {
  _has_bits_[0] |= 0x00000080u;
}
inline void EdgeExtraInfo::clear_has_time_zone_index() {
  _has_bits_[0] &= ~0x00000080u;
}
inline void EdgeExtraInfo::clear_time_zone_index() {
  time_zone_index_ = 0;
  clear_has_time_zone_index();
}
inline ::google::protobuf::int32 EdgeExtraInfo::time_zone_index() const {
  return time_zone_index_;
}
inline void EdgeExtraInfo::set_time_zone_index(::google::protobuf::int32 value) {
  set_has_time_zone_index();
  time_zone_index_ = value;
}

// optional int32 fans_count = 10;
inline bool EdgeExtraInfo::has_fans_count() const {
  return (_has_bits_[0] & 0x00000100u) != 0;
}
inline void EdgeExtraInfo::set_has_fans_count() {
  _has_bits_[0] |= 0x00000100u;
}
inline void EdgeExtraInfo::clear_has_fans_count() {
  _has_bits_[0] &= ~0x00000100u;
}
inline void EdgeExtraInfo::clear_fans_count() {
  fans_count_ = 0;
  clear_has_fans_count();
}
inline ::google::protobuf::int32 EdgeExtraInfo::fans_count() const {
  return fans_count_;
}
inline void EdgeExtraInfo::set_fans_count(::google::protobuf::int32 value) {
  set_has_fans_count();
  fans_count_ = value;
}

// optional uint32 edge_flags = 11;
inline bool EdgeExtraInfo::has_edge_flags() const {
  return (_has_bits_[0] & 0x00000200u) != 0;
}
inline void EdgeExtraInfo::set_has_edge_flags() {
  _has_bits_[0] |= 0x00000200u;
}
inline void EdgeExtraInfo::clear_has_edge_flags() {
  _has_bits_[0] &= ~0x00000200u;
}
inline void EdgeExtraInfo::clear_edge_flags() {
  edge_flags_ = 0u;
  clear_has_edge_flags();
}
inline ::google::protobuf::uint32 EdgeExtraInfo::edge_flags() const {
  return edge_flags_;
}
inline void EdgeExtraInfo::set_edge_flags(::google::protobuf::uint32 value) {
  set_has_edge_flags();
  edge_flags_ = value;
}

// repeated .com.telenav.proto.map.v4.RoadName official_name = 12;
inline int EdgeExtraInfo::official_name_size() const {
  return official_name_.size();
}
inline void EdgeExtraInfo::clear_official_name() {
  official_name_.Clear();
}
inline const ::com::telenav::proto::map::v4::RoadName& EdgeExtraInfo::official_name(int index) const {
  return official_name_.Get(index);
}
inline ::com::telenav::proto::map::v4::RoadName* EdgeExtraInfo::mutable_official_name(int index) {
  return official_name_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::RoadName* EdgeExtraInfo::add_official_name() {
  return official_name_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
EdgeExtraInfo::official_name() const {
  return official_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
EdgeExtraInfo::mutable_official_name() {
  return &official_name_;
}

// repeated .com.telenav.proto.map.v4.RoadName route_number = 13;
inline int EdgeExtraInfo::route_number_size() const {
  return route_number_.size();
}
inline void EdgeExtraInfo::clear_route_number() {
  route_number_.Clear();
}
inline const ::com::telenav::proto::map::v4::RoadName& EdgeExtraInfo::route_number(int index) const {
  return route_number_.Get(index);
}
inline ::com::telenav::proto::map::v4::RoadName* EdgeExtraInfo::mutable_route_number(int index) {
  return route_number_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::RoadName* EdgeExtraInfo::add_route_number() {
  return route_number_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
EdgeExtraInfo::route_number() const {
  return route_number_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
EdgeExtraInfo::mutable_route_number() {
  return &route_number_;
}

// repeated .com.telenav.proto.map.v4.RoadName alternate_name = 14;
inline int EdgeExtraInfo::alternate_name_size() const {
  return alternate_name_.size();
}
inline void EdgeExtraInfo::clear_alternate_name() {
  alternate_name_.Clear();
}
inline const ::com::telenav::proto::map::v4::RoadName& EdgeExtraInfo::alternate_name(int index) const {
  return alternate_name_.Get(index);
}
inline ::com::telenav::proto::map::v4::RoadName* EdgeExtraInfo::mutable_alternate_name(int index) {
  return alternate_name_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::RoadName* EdgeExtraInfo::add_alternate_name() {
  return alternate_name_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >&
EdgeExtraInfo::alternate_name() const {
  return alternate_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RoadName >*
EdgeExtraInfo::mutable_alternate_name() {
  return &alternate_name_;
}

// repeated .com.telenav.proto.map.v4.AdminNameInfo admin_name = 15;
inline int EdgeExtraInfo::admin_name_size() const {
  return admin_name_.size();
}
inline void EdgeExtraInfo::clear_admin_name() {
  admin_name_.Clear();
}
inline const ::com::telenav::proto::map::v4::AdminNameInfo& EdgeExtraInfo::admin_name(int index) const {
  return admin_name_.Get(index);
}
inline ::com::telenav::proto::map::v4::AdminNameInfo* EdgeExtraInfo::mutable_admin_name(int index) {
  return admin_name_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::AdminNameInfo* EdgeExtraInfo::add_admin_name() {
  return admin_name_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::AdminNameInfo >&
EdgeExtraInfo::admin_name() const {
  return admin_name_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::AdminNameInfo >*
EdgeExtraInfo::mutable_admin_name() {
  return &admin_name_;
}

// repeated .com.telenav.proto.map.v4.LaneInfo lane_info = 16;
inline int EdgeExtraInfo::lane_info_size() const {
  return lane_info_.size();
}
inline void EdgeExtraInfo::clear_lane_info() {
  lane_info_.Clear();
}
inline const ::com::telenav::proto::map::v4::LaneInfo& EdgeExtraInfo::lane_info(int index) const {
  return lane_info_.Get(index);
}
inline ::com::telenav::proto::map::v4::LaneInfo* EdgeExtraInfo::mutable_lane_info(int index) {
  return lane_info_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::LaneInfo* EdgeExtraInfo::add_lane_info() {
  return lane_info_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::LaneInfo >&
EdgeExtraInfo::lane_info() const {
  return lane_info_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::LaneInfo >*
EdgeExtraInfo::mutable_lane_info() {
  return &lane_info_;
}

// repeated .com.telenav.proto.map.v4.RawSignpostRecord edge_signpost = 17;
inline int EdgeExtraInfo::edge_signpost_size() const {
  return edge_signpost_.size();
}
inline void EdgeExtraInfo::clear_edge_signpost() {
  edge_signpost_.Clear();
}
inline const ::com::telenav::proto::map::v4::RawSignpostRecord& EdgeExtraInfo::edge_signpost(int index) const {
  return edge_signpost_.Get(index);
}
inline ::com::telenav::proto::map::v4::RawSignpostRecord* EdgeExtraInfo::mutable_edge_signpost(int index) {
  return edge_signpost_.Mutable(index);
}
inline ::com::telenav::proto::map::v4::RawSignpostRecord* EdgeExtraInfo::add_edge_signpost() {
  return edge_signpost_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RawSignpostRecord >&
EdgeExtraInfo::edge_signpost() const {
  return edge_signpost_;
}
inline ::google::protobuf::RepeatedPtrField< ::com::telenav::proto::map::v4::RawSignpostRecord >*
EdgeExtraInfo::mutable_edge_signpost() {
  return &edge_signpost_;
}

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

// Edge

// optional .com.telenav.proto.map.RoadType road_type = 1;
inline bool Edge::has_road_type() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void Edge::set_has_road_type() {
  _has_bits_[0] |= 0x00000001u;
}
inline void Edge::clear_has_road_type() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void Edge::clear_road_type() {
  road_type_ = 0;
  clear_has_road_type();
}
inline com::telenav::proto::map::RoadType Edge::road_type() const {
  return static_cast< com::telenav::proto::map::RoadType >(road_type_);
}
inline void Edge::set_road_type(com::telenav::proto::map::RoadType value) {
  GOOGLE_DCHECK(com::telenav::proto::map::RoadType_IsValid(value));
  set_has_road_type();
  road_type_ = value;
}

// optional double speed_limit_in_kph = 3 [default = -1];
inline bool Edge::has_speed_limit_in_kph() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void Edge::set_has_speed_limit_in_kph() {
  _has_bits_[0] |= 0x00000002u;
}
inline void Edge::clear_has_speed_limit_in_kph() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void Edge::clear_speed_limit_in_kph() {
  speed_limit_in_kph_ = -1;
  clear_has_speed_limit_in_kph();
}
inline double Edge::speed_limit_in_kph() const {
  return speed_limit_in_kph_;
}
inline void Edge::set_speed_limit_in_kph(double value) {
  set_has_speed_limit_in_kph();
  speed_limit_in_kph_ = value;
}

// optional double travel_speed_in_mps = 4 [default = -1];
inline bool Edge::has_travel_speed_in_mps() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void Edge::set_has_travel_speed_in_mps() {
  _has_bits_[0] |= 0x00000004u;
}
inline void Edge::clear_has_travel_speed_in_mps() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void Edge::clear_travel_speed_in_mps() {
  travel_speed_in_mps_ = -1;
  clear_has_travel_speed_in_mps();
}
inline double Edge::travel_speed_in_mps() const {
  return travel_speed_in_mps_;
}
inline void Edge::set_travel_speed_in_mps(double value) {
  set_has_travel_speed_in_mps();
  travel_speed_in_mps_ = value;
}

// repeated string map_edge_id = 5;
inline int Edge::map_edge_id_size() const {
  return map_edge_id_.size();
}
inline void Edge::clear_map_edge_id() {
  map_edge_id_.Clear();
}
inline const ::std::string& Edge::map_edge_id(int index) const {
  return map_edge_id_.Get(index);
}
inline ::std::string* Edge::mutable_map_edge_id(int index) {
  return map_edge_id_.Mutable(index);
}
inline void Edge::set_map_edge_id(int index, const ::std::string& value) {
  map_edge_id_.Mutable(index)->assign(value);
}
inline void Edge::set_map_edge_id(int index, const char* value) {
  map_edge_id_.Mutable(index)->assign(value);
}
inline void Edge::set_map_edge_id(int index, const char* value, size_t size) {
  map_edge_id_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* Edge::add_map_edge_id() {
  return map_edge_id_.Add();
}
inline void Edge::add_map_edge_id(const ::std::string& value) {
  map_edge_id_.Add()->assign(value);
}
inline void Edge::add_map_edge_id(const char* value) {
  map_edge_id_.Add()->assign(value);
}
inline void Edge::add_map_edge_id(const char* value, size_t size) {
  map_edge_id_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
Edge::map_edge_id() const {
  return map_edge_id_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
Edge::mutable_map_edge_id() {
  return &map_edge_id_;
}

// optional double length_in_meter = 6;
inline bool Edge::has_length_in_meter() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void Edge::set_has_length_in_meter() {
  _has_bits_[0] |= 0x00000010u;
}
inline void Edge::clear_has_length_in_meter() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void Edge::clear_length_in_meter() {
  length_in_meter_ = 0;
  clear_has_length_in_meter();
}
inline double Edge::length_in_meter() const {
  return length_in_meter_;
}
inline void Edge::set_length_in_meter(double value) {
  set_has_length_in_meter();
  length_in_meter_ = value;
}

// optional string encoded_polyline = 7;
inline bool Edge::has_encoded_polyline() const {
  return (_has_bits_[0] & 0x00000020u) != 0;
}
inline void Edge::set_has_encoded_polyline() {
  _has_bits_[0] |= 0x00000020u;
}
inline void Edge::clear_has_encoded_polyline() {
  _has_bits_[0] &= ~0x00000020u;
}
inline void Edge::clear_encoded_polyline() {
  if (encoded_polyline_ != &::google::protobuf::internal::kEmptyString) {
    encoded_polyline_->clear();
  }
  clear_has_encoded_polyline();
}
inline const ::std::string& Edge::encoded_polyline() const {
  return *encoded_polyline_;
}
inline void Edge::set_encoded_polyline(const ::std::string& value) {
  set_has_encoded_polyline();
  if (encoded_polyline_ == &::google::protobuf::internal::kEmptyString) {
    encoded_polyline_ = new ::std::string;
  }
  encoded_polyline_->assign(value);
}
inline void Edge::set_encoded_polyline(const char* value) {
  set_has_encoded_polyline();
  if (encoded_polyline_ == &::google::protobuf::internal::kEmptyString) {
    encoded_polyline_ = new ::std::string;
  }
  encoded_polyline_->assign(value);
}
inline void Edge::set_encoded_polyline(const char* value, size_t size) {
  set_has_encoded_polyline();
  if (encoded_polyline_ == &::google::protobuf::internal::kEmptyString) {
    encoded_polyline_ = new ::std::string;
  }
  encoded_polyline_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* Edge::mutable_encoded_polyline() {
  set_has_encoded_polyline();
  if (encoded_polyline_ == &::google::protobuf::internal::kEmptyString) {
    encoded_polyline_ = new ::std::string;
  }
  return encoded_polyline_;
}
inline ::std::string* Edge::release_encoded_polyline() {
  clear_has_encoded_polyline();
  if (encoded_polyline_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = encoded_polyline_;
    encoded_polyline_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional string traffic_id = 8;
inline bool Edge::has_traffic_id() const {
  return (_has_bits_[0] & 0x00000040u) != 0;
}
inline void Edge::set_has_traffic_id() {
  _has_bits_[0] |= 0x00000040u;
}
inline void Edge::clear_has_traffic_id() {
  _has_bits_[0] &= ~0x00000040u;
}
inline void Edge::clear_traffic_id() {
  if (traffic_id_ != &::google::protobuf::internal::kEmptyString) {
    traffic_id_->clear();
  }
  clear_has_traffic_id();
}
inline const ::std::string& Edge::traffic_id() const {
  return *traffic_id_;
}
inline void Edge::set_traffic_id(const ::std::string& value) {
  set_has_traffic_id();
  if (traffic_id_ == &::google::protobuf::internal::kEmptyString) {
    traffic_id_ = new ::std::string;
  }
  traffic_id_->assign(value);
}
inline void Edge::set_traffic_id(const char* value) {
  set_has_traffic_id();
  if (traffic_id_ == &::google::protobuf::internal::kEmptyString) {
    traffic_id_ = new ::std::string;
  }
  traffic_id_->assign(value);
}
inline void Edge::set_traffic_id(const char* value, size_t size) {
  set_has_traffic_id();
  if (traffic_id_ == &::google::protobuf::internal::kEmptyString) {
    traffic_id_ = new ::std::string;
  }
  traffic_id_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* Edge::mutable_traffic_id() {
  set_has_traffic_id();
  if (traffic_id_ == &::google::protobuf::internal::kEmptyString) {
    traffic_id_ = new ::std::string;
  }
  return traffic_id_;
}
inline ::std::string* Edge::release_traffic_id() {
  clear_has_traffic_id();
  if (traffic_id_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = traffic_id_;
    traffic_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional int32 turn_cost_in_second = 10;
inline bool Edge::has_turn_cost_in_second() const {
  return (_has_bits_[0] & 0x00000080u) != 0;
}
inline void Edge::set_has_turn_cost_in_second() {
  _has_bits_[0] |= 0x00000080u;
}
inline void Edge::clear_has_turn_cost_in_second() {
  _has_bits_[0] &= ~0x00000080u;
}
inline void Edge::clear_turn_cost_in_second() {
  turn_cost_in_second_ = 0;
  clear_has_turn_cost_in_second();
}
inline ::google::protobuf::int32 Edge::turn_cost_in_second() const {
  return turn_cost_in_second_;
}
inline void Edge::set_turn_cost_in_second(::google::protobuf::int32 value) {
  set_has_turn_cost_in_second();
  turn_cost_in_second_ = value;
}

// optional .com.telenav.proto.map.v4.EdgeExtraInfo edge_extra_info = 11;
inline bool Edge::has_edge_extra_info() const {
  return (_has_bits_[0] & 0x00000100u) != 0;
}
inline void Edge::set_has_edge_extra_info() {
  _has_bits_[0] |= 0x00000100u;
}
inline void Edge::clear_has_edge_extra_info() {
  _has_bits_[0] &= ~0x00000100u;
}
inline void Edge::clear_edge_extra_info() {
  if (edge_extra_info_ != NULL) edge_extra_info_->::com::telenav::proto::map::v4::EdgeExtraInfo::Clear();
  clear_has_edge_extra_info();
}
inline const ::com::telenav::proto::map::v4::EdgeExtraInfo& Edge::edge_extra_info() const {
  return edge_extra_info_ != NULL ? *edge_extra_info_ : *default_instance_->edge_extra_info_;
}
inline ::com::telenav::proto::map::v4::EdgeExtraInfo* Edge::mutable_edge_extra_info() {
  set_has_edge_extra_info();
  if (edge_extra_info_ == NULL) edge_extra_info_ = new ::com::telenav::proto::map::v4::EdgeExtraInfo;
  return edge_extra_info_;
}
inline ::com::telenav::proto::map::v4::EdgeExtraInfo* Edge::release_edge_extra_info() {
  clear_has_edge_extra_info();
  ::com::telenav::proto::map::v4::EdgeExtraInfo* temp = edge_extra_info_;
  edge_extra_info_ = NULL;
  return temp;
}

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

// LaneInfo

// optional .com.telenav.proto.map.v4.LanePattern pattern = 1;
inline bool LaneInfo::has_pattern() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void LaneInfo::set_has_pattern() {
  _has_bits_[0] |= 0x00000001u;
}
inline void LaneInfo::clear_has_pattern() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void LaneInfo::clear_pattern() {
  pattern_ = 1;
  clear_has_pattern();
}
inline com::telenav::proto::map::v4::LanePattern LaneInfo::pattern() const {
  return static_cast< com::telenav::proto::map::v4::LanePattern >(pattern_);
}
inline void LaneInfo::set_pattern(com::telenav::proto::map::v4::LanePattern value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::LanePattern_IsValid(value));
  set_has_pattern();
  pattern_ = value;
}

// optional .com.telenav.proto.map.v4.HighlightedLane highlight = 2;
inline bool LaneInfo::has_highlight() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void LaneInfo::set_has_highlight() {
  _has_bits_[0] |= 0x00000002u;
}
inline void LaneInfo::clear_has_highlight() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void LaneInfo::clear_highlight() {
  highlight_ = 1;
  clear_has_highlight();
}
inline com::telenav::proto::map::v4::HighlightedLane LaneInfo::highlight() const {
  return static_cast< com::telenav::proto::map::v4::HighlightedLane >(highlight_);
}
inline void LaneInfo::set_highlight(com::telenav::proto::map::v4::HighlightedLane value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::HighlightedLane_IsValid(value));
  set_has_highlight();
  highlight_ = value;
}

// optional bool preferred = 3 [default = false];
inline bool LaneInfo::has_preferred() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void LaneInfo::set_has_preferred() {
  _has_bits_[0] |= 0x00000004u;
}
inline void LaneInfo::clear_has_preferred() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void LaneInfo::clear_preferred() {
  preferred_ = false;
  clear_has_preferred();
}
inline bool LaneInfo::preferred() const {
  return preferred_;
}
inline void LaneInfo::set_preferred(bool value) {
  set_has_preferred();
  preferred_ = value;
}

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

// JunctionView

// optional .com.telenav.proto.map.v4.JunctionViewType type = 1;
inline bool JunctionView::has_type() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void JunctionView::set_has_type() {
  _has_bits_[0] |= 0x00000001u;
}
inline void JunctionView::clear_has_type() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void JunctionView::clear_type() {
  type_ = 1;
  clear_has_type();
}
inline com::telenav::proto::map::v4::JunctionViewType JunctionView::type() const {
  return static_cast< com::telenav::proto::map::v4::JunctionViewType >(type_);
}
inline void JunctionView::set_type(com::telenav::proto::map::v4::JunctionViewType value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::JunctionViewType_IsValid(value));
  set_has_type();
  type_ = value;
}

// optional string pattern_id = 2;
inline bool JunctionView::has_pattern_id() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void JunctionView::set_has_pattern_id() {
  _has_bits_[0] |= 0x00000002u;
}
inline void JunctionView::clear_has_pattern_id() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void JunctionView::clear_pattern_id() {
  if (pattern_id_ != &::google::protobuf::internal::kEmptyString) {
    pattern_id_->clear();
  }
  clear_has_pattern_id();
}
inline const ::std::string& JunctionView::pattern_id() const {
  return *pattern_id_;
}
inline void JunctionView::set_pattern_id(const ::std::string& value) {
  set_has_pattern_id();
  if (pattern_id_ == &::google::protobuf::internal::kEmptyString) {
    pattern_id_ = new ::std::string;
  }
  pattern_id_->assign(value);
}
inline void JunctionView::set_pattern_id(const char* value) {
  set_has_pattern_id();
  if (pattern_id_ == &::google::protobuf::internal::kEmptyString) {
    pattern_id_ = new ::std::string;
  }
  pattern_id_->assign(value);
}
inline void JunctionView::set_pattern_id(const char* value, size_t size) {
  set_has_pattern_id();
  if (pattern_id_ == &::google::protobuf::internal::kEmptyString) {
    pattern_id_ = new ::std::string;
  }
  pattern_id_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* JunctionView::mutable_pattern_id() {
  set_has_pattern_id();
  if (pattern_id_ == &::google::protobuf::internal::kEmptyString) {
    pattern_id_ = new ::std::string;
  }
  return pattern_id_;
}
inline ::std::string* JunctionView::release_pattern_id() {
  clear_has_pattern_id();
  if (pattern_id_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = pattern_id_;
    pattern_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

// optional string arrow_id = 3;
inline bool JunctionView::has_arrow_id() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void JunctionView::set_has_arrow_id() {
  _has_bits_[0] |= 0x00000004u;
}
inline void JunctionView::clear_has_arrow_id() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void JunctionView::clear_arrow_id() {
  if (arrow_id_ != &::google::protobuf::internal::kEmptyString) {
    arrow_id_->clear();
  }
  clear_has_arrow_id();
}
inline const ::std::string& JunctionView::arrow_id() const {
  return *arrow_id_;
}
inline void JunctionView::set_arrow_id(const ::std::string& value) {
  set_has_arrow_id();
  if (arrow_id_ == &::google::protobuf::internal::kEmptyString) {
    arrow_id_ = new ::std::string;
  }
  arrow_id_->assign(value);
}
inline void JunctionView::set_arrow_id(const char* value) {
  set_has_arrow_id();
  if (arrow_id_ == &::google::protobuf::internal::kEmptyString) {
    arrow_id_ = new ::std::string;
  }
  arrow_id_->assign(value);
}
inline void JunctionView::set_arrow_id(const char* value, size_t size) {
  set_has_arrow_id();
  if (arrow_id_ == &::google::protobuf::internal::kEmptyString) {
    arrow_id_ = new ::std::string;
  }
  arrow_id_->assign(reinterpret_cast<const char*>(value), size);
}
inline ::std::string* JunctionView::mutable_arrow_id() {
  set_has_arrow_id();
  if (arrow_id_ == &::google::protobuf::internal::kEmptyString) {
    arrow_id_ = new ::std::string;
  }
  return arrow_id_;
}
inline ::std::string* JunctionView::release_arrow_id() {
  clear_has_arrow_id();
  if (arrow_id_ == &::google::protobuf::internal::kEmptyString) {
    return NULL;
  } else {
    ::std::string* temp = arrow_id_;
    arrow_id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
    return temp;
  }
}

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

// TurnInfo

// optional .com.telenav.proto.map.v4.GuidanceRoadType from_roadtype = 1;
inline bool TurnInfo::has_from_roadtype() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void TurnInfo::set_has_from_roadtype() {
  _has_bits_[0] |= 0x00000001u;
}
inline void TurnInfo::clear_has_from_roadtype() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void TurnInfo::clear_from_roadtype() {
  from_roadtype_ = 0;
  clear_has_from_roadtype();
}
inline com::telenav::proto::map::v4::GuidanceRoadType TurnInfo::from_roadtype() const {
  return static_cast< com::telenav::proto::map::v4::GuidanceRoadType >(from_roadtype_);
}
inline void TurnInfo::set_from_roadtype(com::telenav::proto::map::v4::GuidanceRoadType value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::GuidanceRoadType_IsValid(value));
  set_has_from_roadtype();
  from_roadtype_ = value;
}

// optional .com.telenav.proto.map.v4.GuidanceRoadType to_roadtype = 2;
inline bool TurnInfo::has_to_roadtype() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void TurnInfo::set_has_to_roadtype() {
  _has_bits_[0] |= 0x00000002u;
}
inline void TurnInfo::clear_has_to_roadtype() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void TurnInfo::clear_to_roadtype() {
  to_roadtype_ = 0;
  clear_has_to_roadtype();
}
inline com::telenav::proto::map::v4::GuidanceRoadType TurnInfo::to_roadtype() const {
  return static_cast< com::telenav::proto::map::v4::GuidanceRoadType >(to_roadtype_);
}
inline void TurnInfo::set_to_roadtype(com::telenav::proto::map::v4::GuidanceRoadType value) {
  GOOGLE_DCHECK(com::telenav::proto::map::v4::GuidanceRoadType_IsValid(value));
  set_has_to_roadtype();
  to_roadtype_ = value;
}

// optional int32 radius_in_meter = 3;
inline bool TurnInfo::has_radius_in_meter() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void TurnInfo::set_has_radius_in_meter() {
  _has_bits_[0] |= 0x00000004u;
}
inline void TurnInfo::clear_has_radius_in_meter() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void TurnInfo::clear_radius_in_meter() {
  radius_in_meter_ = 0;
  clear_has_radius_in_meter();
}
inline ::google::protobuf::int32 TurnInfo::radius_in_meter() const {
  return radius_in_meter_;
}
inline void TurnInfo::set_radius_in_meter(::google::protobuf::int32 value) {
  set_has_radius_in_meter();
  radius_in_meter_ = value;
}

// optional int32 target_number = 4;
inline bool TurnInfo::has_target_number() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void TurnInfo::set_has_target_number() {
  _has_bits_[0] |= 0x00000008u;
}
inline void TurnInfo::clear_has_target_number() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void TurnInfo::clear_target_number() {
  target_number_ = 0;
  clear_has_target_number();
}
inline ::google::protobuf::int32 TurnInfo::target_number() const {
  return target_number_;
}
inline void TurnInfo::set_target_number(::google::protobuf::int32 value) {
  set_has_target_number();
  target_number_ = value;
}

// optional int32 nth_turn = 5;
inline bool TurnInfo::has_nth_turn() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void TurnInfo::set_has_nth_turn() {
  _has_bits_[0] |= 0x00000010u;
}
inline void TurnInfo::clear_has_nth_turn() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void TurnInfo::clear_nth_turn() {
  nth_turn_ = 0;
  clear_has_nth_turn();
}
inline ::google::protobuf::int32 TurnInfo::nth_turn() const {
  return nth_turn_;
}
inline void TurnInfo::set_nth_turn(::google::protobuf::int32 value) {
  set_has_nth_turn();
  nth_turn_ = value;
}

// repeated double nth_turn_distances = 6;
inline int TurnInfo::nth_turn_distances_size() const {
  return nth_turn_distances_.size();
}
inline void TurnInfo::clear_nth_turn_distances() {
  nth_turn_distances_.Clear();
}
inline double TurnInfo::nth_turn_distances(int index) const {
  return nth_turn_distances_.Get(index);
}
inline void TurnInfo::set_nth_turn_distances(int index, double value) {
  nth_turn_distances_.Set(index, value);
}
inline void TurnInfo::add_nth_turn_distances(double value) {
  nth_turn_distances_.Add(value);
}
inline const ::google::protobuf::RepeatedField< double >&
TurnInfo::nth_turn_distances() const {
  return nth_turn_distances_;
}
inline ::google::protobuf::RepeatedField< double >*
TurnInfo::mutable_nth_turn_distances() {
  return &nth_turn_distances_;
}


// @@protoc_insertion_point(namespace_scope)

}  // namespace v4
}  // namespace map
}  // namespace proto
}  // namespace telenav
}  // namespace com

// @@protoc_insertion_point(global_scope)

#endif  // PROTOBUF_map_2edirections_2eproto__INCLUDED
