CartoType .NET API 8.8-7-gb35e4dc71
for development in C#, Visual Basic and other .NET languages
CartoTypeFeatureInfo.h
1/*
2CartoTypeFeatureInfo.h
3Copyright (C) CartoType Ltd 2022.
4See www.cartotype.com for more information.
5*/
6
7#pragma once
8
9#include <cartotype_feature_info.h>
10#include "CartoTypeResult.h"
11
12namespace CartoType
13{
14
16inline uint32_t constexpr FeatureTypeCode(int A,int B,int C)
17 {
18 return (char(A - 'a' + 1) << 10) | (char(B - 'a' + 1) << 5) | (char(C - 'a' + 1));
19 }
20
29public enum class FeatureType
30 {
31 Motorway = 0,
32 MotorwayLink = 1,
33 TrunkRoad = 2,
34 TrunkLink = 3,
35 PrimaryRoad = 4,
36 PrimaryLink = 5,
37 SecondaryRoad = 6,
38 SecondaryLink = 7,
39 TertiaryRoad = 8,
40 UnclassifiedRoad = 9,
41 ResidentialRoad = 10,
42 Track = 11,
43 ServiceRoad = 12,
44 PedestrianRoad = 13,
45 VehicularFerry = 14,
46 PassengerFerry = 15,
47 LivingStreet = 16,
48 Cycleway = 17,
49 Path = 18,
50 Footway = 19,
51 Bridleway = 20,
52 Steps = 21,
53 OtherRoad = 22,
54 UnpavedRoad = 23,
55 Railway = 24,
56 LightRail = 25,
57 Subway = 26,
58 AerialWay = 27,
59 SkiDownhill = 28,
60 SkiNordic = 29,
61 Waterway = 30,
62 UnknownRoute = 31,
63
64 UnknownNonRoute = 32,
65
66 AdminArea1 = FeatureTypeCode('a','a','a'),
67 AdminArea2 = FeatureTypeCode('a','a','b'),
68 AdminArea3 = FeatureTypeCode('a','a','c'),
69 AdminArea4 = FeatureTypeCode('a','a','d'),
70 AdminArea5 = FeatureTypeCode('a','a','e'),
71 AdminArea6 = FeatureTypeCode('a','a','f'),
72 AdminArea7 = FeatureTypeCode('a','a','g'),
73 AdminArea8 = FeatureTypeCode('a','a','h'),
74 AdminArea9 = FeatureTypeCode('a','a','i'),
75 AdminArea10 = FeatureTypeCode('a','a','j'),
76 Address = FeatureTypeCode('a','d','d'),
77 Aerodrome = FeatureTypeCode('a','e','r'),
78 Airport = FeatureTypeCode('a','i','r'),
79 AirportGate = FeatureTypeCode('a','g','t'),
80 AirportHoldingPosition = FeatureTypeCode('a','h','p'),
81 Allotments = FeatureTypeCode('a','l','l'),
82 AlpineHut = FeatureTypeCode('a','l','p'),
83 AmbulanceStation = FeatureTypeCode('a','m','b'),
84 Apron = FeatureTypeCode('a','p','r'),
85 AerialWayPylon = FeatureTypeCode('a','p','y'),
86 Artwork = FeatureTypeCode('a','r','t'),
87 AerialWayStation = FeatureTypeCode('a','s','t'),
88 AirTerminal = FeatureTypeCode('a','t','e'),
89 Atm = FeatureTypeCode('a','t','m'),
90 Attraction = FeatureTypeCode('a','t','t'),
91 Bar = FeatureTypeCode('b','a','r'),
92 Basin = FeatureTypeCode('b','a','s'),
93 Bay = FeatureTypeCode('b','a','y'),
94 Beach = FeatureTypeCode('b','e','a'),
95 Beacon = FeatureTypeCode('b','e','c'),
96 BedAndBreakfast = FeatureTypeCode('b','e','d'),
97 Bench = FeatureTypeCode('b','e','n'),
98 Bank = FeatureTypeCode('b','n','k'),
99 Boatyard = FeatureTypeCode('b','o','a'),
100 Borough = FeatureTypeCode('b','o','r'),
101 Boundary = FeatureTypeCode('b','o','u'),
102 BicycleParking = FeatureTypeCode('b','p','k'),
103 BicycleRental = FeatureTypeCode('b','r','e'),
104 BareRock = FeatureTypeCode('b','r','c'),
105 Barracks = FeatureTypeCode('b','r','k'),
106 BrownField = FeatureTypeCode('b','r','o'),
107 BusStop = FeatureTypeCode('b','s','p'),
108 BusStation = FeatureTypeCode('b','s','t'),
109 BufferStop = FeatureTypeCode('b','u','f'),
110 Building = FeatureTypeCode('b','u','i'),
111 Bunker = FeatureTypeCode('b','u','n'),
112 Cabin = FeatureTypeCode('c','a','b'),
113 Cafe = FeatureTypeCode('c','a','f'),
114 CampSite = FeatureTypeCode('c','a','m'),
115 Canal = FeatureTypeCode('c','a','n'),
116 CaveEntrance = FeatureTypeCode('c','a','v'),
117 CableCar = FeatureTypeCode('c','c','r'),
118 CableDistributionCabinet = FeatureTypeCode('c','d','c'),
119 Cemetery = FeatureTypeCode('c','e','m'),
120 ChairLift = FeatureTypeCode('c','h','a'),
121 CheckPoint = FeatureTypeCode('c','h','e'),
122 Chalet = FeatureTypeCode('c','h','l'),
123 CivilBoundary = FeatureTypeCode('c','i','b'),
124 Cinema = FeatureTypeCode('c','i','n'),
125 City = FeatureTypeCode('c','i','t'),
126 Cliff = FeatureTypeCode('c','l','f'),
127 Clinic = FeatureTypeCode('c','l','i'),
128 Commercial = FeatureTypeCode('c','m','r'),
129 Coastline = FeatureTypeCode('c','o','a'),
130 College = FeatureTypeCode('c','o','l'),
131 Common = FeatureTypeCode('c','o','m'),
132 Construction = FeatureTypeCode('c','n','s'),
133 Conservation = FeatureTypeCode('c','n','v'),
134 Continent = FeatureTypeCode('c','o','n'),
135 County = FeatureTypeCode('c','o','u'),
136 CarPark = FeatureTypeCode('c','p','k'),
137 CarRental = FeatureTypeCode('c','r','e'),
138 Crossing = FeatureTypeCode('c','r','o'),
139 Country = FeatureTypeCode('c','r','y'),
140 CarSharing = FeatureTypeCode('c','s','h'),
141 CutLine = FeatureTypeCode('c','u','t'),
142 CarWash = FeatureTypeCode('c','w','a'),
143 CaravanSite = FeatureTypeCode('c','v','n'),
144 CyclingRoute = FeatureTypeCode('c','y','r'),
145 Dam = FeatureTypeCode('d','a','m'),
146 DangerArea = FeatureTypeCode('d','a','n'),
147 Dentist = FeatureTypeCode('d','e','n'),
148 Disused = FeatureTypeCode('d','i','s'),
149 Ditch = FeatureTypeCode('d','i','t'),
150 Dock = FeatureTypeCode('d','o','c'),
151 DogPark = FeatureTypeCode('d','o','g'),
152 Drain = FeatureTypeCode('d','r','a'),
153 DragLift = FeatureTypeCode('d','r','g'),
154 Doctors = FeatureTypeCode('d','r','s'),
155 District = FeatureTypeCode('d','s','t'),
156 ElectricVehicleCharging = FeatureTypeCode('e','v','c'),
157 Farm = FeatureTypeCode('f','a','r'),
158 FarmYard = FeatureTypeCode('f','a','y'),
159 Fell = FeatureTypeCode('f','e','l'),
160 FerryTerminal = FeatureTypeCode('f','e','t'),
161 FastFood = FeatureTypeCode('f','f','d'),
162 FireExtinguisher = FeatureTypeCode('f','i','e'),
163 FireFlapper = FeatureTypeCode('f','i','f'),
164 FireHose = FeatureTypeCode('f','i','h'),
165 FireStation = FeatureTypeCode('f','i','s'),
166 FitnessStation = FeatureTypeCode('f','i','t'),
167 FireHydrant = FeatureTypeCode('f','i','y'),
168 Forestry = FeatureTypeCode('f','o','r'),
169 Fishing = FeatureTypeCode('f','s','h'),
170 Fuel = FeatureTypeCode('f','u','e'),
171 Funicular = FeatureTypeCode('f','u','n'),
172 Garages = FeatureTypeCode('g','a','r'),
173 Gate = FeatureTypeCode('g','a','t'),
174 Garden = FeatureTypeCode('g','d','n'),
175 Generator = FeatureTypeCode('g','e','n'),
176 GreenHouse = FeatureTypeCode('g','h','o'),
177 Glacier = FeatureTypeCode('g','l','a'),
178 GolfCourse = FeatureTypeCode('g','o','l'),
179 Gondola = FeatureTypeCode('g','o','n'),
180 GoodsAerialWay = FeatureTypeCode('g','o','o'),
181 Grass = FeatureTypeCode('g','r','a'),
182 GreenField = FeatureTypeCode('g','r','e'),
183 GritBin = FeatureTypeCode('g','r','b'),
184 GraveYard = FeatureTypeCode('g','r','y'),
185 GuestHouse = FeatureTypeCode('g','u','e'),
186 Halt = FeatureTypeCode('h','a','l'),
187 Hamlet = FeatureTypeCode('h','a','m'),
188 Hangar = FeatureTypeCode('h','a','n'),
189 Heath = FeatureTypeCode('h','e','a'),
190 Helipad = FeatureTypeCode('h','e','l'),
191 RailwayHalt = FeatureTypeCode('h','l','t'),
192 HikingRoute = FeatureTypeCode('h','i','k'),
193 HorseRiding = FeatureTypeCode('h','o','r'),
194 Hospital = FeatureTypeCode('h','o','s'),
195 Hotel = FeatureTypeCode('h','o','t'),
196 HorseRidingRoute = FeatureTypeCode('h','r','r'),
197 Hostel = FeatureTypeCode('h','s','t'),
198 IceRink = FeatureTypeCode('i','c','e'),
199 Industrial = FeatureTypeCode('i','n','d'),
200 Information = FeatureTypeCode('i','n','f'),
201 Island = FeatureTypeCode('i','s','l'),
202 IsolatedDwelling = FeatureTypeCode('i','s','o'),
203 Junction = FeatureTypeCode('j','c','t'),
204 Kindergarten = FeatureTypeCode('k','i','n'),
205 LandFill = FeatureTypeCode('l','a','n'),
206 Land = FeatureTypeCode('l','n','d'),
207 LevelCrossing = FeatureTypeCode('l','e','v'),
208 Library = FeatureTypeCode('l','i','b'),
209 Locality = FeatureTypeCode('l','o','c'),
210 LockGate = FeatureTypeCode('l','o','k'),
211 MaritimeBoundary = FeatureTypeCode('m','a','b'),
212 Mall = FeatureTypeCode('m','a','l'),
213 Marsh = FeatureTypeCode('m','a','r'),
214 Meadow = FeatureTypeCode('m','e','a'),
215 Military = FeatureTypeCode('m','i','l'),
216 Marina = FeatureTypeCode('m','n','a'),
217 Motel = FeatureTypeCode('m','o','t'),
218 MinorPowerLine = FeatureTypeCode('m','p','l'),
219 MiniatureGolf = FeatureTypeCode('m','r','g'),
220 MiniatureRailway = FeatureTypeCode('m','r','y'),
221 Mud = FeatureTypeCode('m','u','d'),
222 Municipality = FeatureTypeCode('m','u','n'),
223 Museum = FeatureTypeCode('m','u','s'),
224 NatureReserve = FeatureTypeCode('n','a','t'),
225 NationalPark = FeatureTypeCode('n','a','p'),
226 NavalBase = FeatureTypeCode('n','a','v'),
227 Neighborhood = FeatureTypeCode('n','e','i'),
228 NursingHome = FeatureTypeCode('n','u','r'),
229 Orchard = FeatureTypeCode('o','r','c'),
230 PrecisionApproachPathIndicator = FeatureTypeCode('p','a','p'),
231 Park = FeatureTypeCode('p','a','r'),
232 PublicBuilding = FeatureTypeCode('p','b','u'),
233 PostBox = FeatureTypeCode('p','b','x'),
234 PostCode = FeatureTypeCode('p','c','o'),
235 PicnicTable = FeatureTypeCode('p','c','t'),
236 Peak = FeatureTypeCode('p','e','a'),
237 Pharmacy = FeatureTypeCode('p','h','a'),
238 Phone = FeatureTypeCode('p','h','o'),
239 PicnicSite = FeatureTypeCode('p','i','c'),
240 Pier = FeatureTypeCode('p','i','e'),
241 Pipeline = FeatureTypeCode('p','i','p'),
242 ParkingEntrance = FeatureTypeCode('p','k','e'),
243 Parking = FeatureTypeCode('p','k','g'),
244 ParkingSpace = FeatureTypeCode('p','k','s'),
245 PlantNursery = FeatureTypeCode('p','l','a'),
246 Platform = FeatureTypeCode('p','l','f'),
247 PlaceOfWorship = FeatureTypeCode('p','l','w'),
248 Playground = FeatureTypeCode('p','l','y'),
249 PostOffice = FeatureTypeCode('p','o','f'),
250 Police = FeatureTypeCode('p','o','l'),
251 Position = FeatureTypeCode('p','o','s'),
252 ProtectedArea = FeatureTypeCode('p','r','a'),
253 PowerSubStation = FeatureTypeCode('p','s','s'),
254 Pub = FeatureTypeCode('p','u','b'),
255 PowerLine = FeatureTypeCode('p','w','l'),
256 PowerStation = FeatureTypeCode('p','w','s'),
257 Quarry = FeatureTypeCode('q','a','r'),
258 Quarter = FeatureTypeCode('q','r','t'),
259 Range = FeatureTypeCode('r','a','n'),
260 Rapids = FeatureTypeCode('r','a','p'),
261 Recycling = FeatureTypeCode('r','c','y'),
262 RecreationGround = FeatureTypeCode('r','e','c'),
263 Reef = FeatureTypeCode('r','e','e'),
264 Region = FeatureTypeCode('r','e','g'),
265 Retail = FeatureTypeCode('r','e','t'),
266 Ridge = FeatureTypeCode('r','i','j'),
267 River = FeatureTypeCode('r','i','v'),
268 Rock = FeatureTypeCode('r','o','c'),
269 RoundHouse = FeatureTypeCode('r','o','u'),
270 ResidentialArea = FeatureTypeCode('r','s','d'),
271 Restaurant = FeatureTypeCode('r','s','t'),
272 Reservoir = FeatureTypeCode('r','s','v'),
273 Runway = FeatureTypeCode('r','u','n'),
274 Route = FeatureTypeCode('r','u','t'),
275 RiverBank = FeatureTypeCode('r','v','b'),
276 SaltPond = FeatureTypeCode('s','a','l'),
277 Sand = FeatureTypeCode('s','a','n'),
278 Sauna = FeatureTypeCode('s','a','u'),
279 School = FeatureTypeCode('s','c','h'),
280 Scree = FeatureTypeCode('s','c','r'),
281 Scrub = FeatureTypeCode('s','c','b'),
282 Sea = FeatureTypeCode('s','e','a'),
283 StateEmergencyServiceStation = FeatureTypeCode('s','e','s'),
284 Shop = FeatureTypeCode('s','h','o'),
285 SkiRoute = FeatureTypeCode('s','k','r'),
286 Slipway = FeatureTypeCode('s','l','i'),
287 SportsCenter = FeatureTypeCode('s','p','o'),
288 SportsPitch = FeatureTypeCode('s','p','p'),
289 Spring = FeatureTypeCode('s','p','r'),
290 SportsTrack = FeatureTypeCode('s','p','t'),
291 State = FeatureTypeCode('s','t','a'),
292 Stadium = FeatureTypeCode('s','t','m'),
293 RailwayStation = FeatureTypeCode('s','t','n'),
294 Station = FeatureTypeCode('s','t','n'), // deliberate duplicate
295 Stone = FeatureTypeCode('s','t','o'),
296 StopPosition = FeatureTypeCode('s','t','p'),
297 Stream = FeatureTypeCode('s','t','r'),
298 Strait = FeatureTypeCode('s','t','t'),
299 Suburb = FeatureTypeCode('s','u','b'),
300 Supermarket = FeatureTypeCode('s','u','p'),
301 SurveyPoint = FeatureTypeCode('s','u','r'),
302 SubwayEntrance = FeatureTypeCode('s','w','e'),
303 SwimmingPool = FeatureTypeCode('s','w','i'),
304 Tank = FeatureTypeCode('t','a','n'),
305 Taxi = FeatureTypeCode('t','a','x'),
306 Theatre = FeatureTypeCode('t','h','e'),
307 ThemePark = FeatureTypeCode('t','h','p'),
308 Toilet = FeatureTypeCode('t','o','i'),
309 Town = FeatureTypeCode('t','o','w'),
310 TurningCircle = FeatureTypeCode('t','c','i'),
311 TurningPoint = FeatureTypeCode('t','p','t'),
312 Tram = FeatureTypeCode('t','r','a'),
313 Tree = FeatureTypeCode('t','r','e'),
314 TrafficSignals = FeatureTypeCode('t','r','f'),
315 TrackPoint = FeatureTypeCode('t','r','p'),
316 TreeRow = FeatureTypeCode('t','r','r'),
317 TramStop = FeatureTypeCode('t','r','s'),
318 TurnTable = FeatureTypeCode('t','u','r'),
319 Tower = FeatureTypeCode('t','w','r'),
320 Taxiway = FeatureTypeCode('t','w','y'),
321 University = FeatureTypeCode('u','n','i'),
322 VisualApproachSlopeIndicator = FeatureTypeCode('v','a','s'),
323 VillageGreen = FeatureTypeCode('v','i','g'),
324 Village = FeatureTypeCode('v','i','l'),
325 Vineyard = FeatureTypeCode('v','i','n'),
326 ViewPoint = FeatureTypeCode('v','i','w'),
327 Volcano = FeatureTypeCode('v','o','l'),
328 Waterfall = FeatureTypeCode('w','a','f'),
329 WaterPark = FeatureTypeCode('w','a','p'),
330 Water = FeatureTypeCode('w','a','t'),
331 Weir = FeatureTypeCode('w','e','r'),
332 Wetland = FeatureTypeCode('w','e','t'),
333 Windsock = FeatureTypeCode('w','i','s'),
334 WalkingRoute = FeatureTypeCode('w','l','k'),
335 Wood = FeatureTypeCode('w','o','o'),
336 Works = FeatureTypeCode('w','o','r'),
337 Waypoint = FeatureTypeCode('w','p','t'),
338 WaterTower = FeatureTypeCode('w','t','t'),
339 WaterWell = FeatureTypeCode('w','t','w'),
340 Zoo = FeatureTypeCode('z','o','o'),
341
342 // legacy types for backward compatibility
343 LegacyBridleway = FeatureTypeCode('b','r','i'),
344 LegacyCycleway = FeatureTypeCode('c','y','c'),
345 LegacyFootway = FeatureTypeCode('f','o','o'),
346 LegacyLightRail = FeatureTypeCode('l','i','r'),
347 LegacyMonorail = FeatureTypeCode('m','o','n'),
348 LegacyNarrowGauge = FeatureTypeCode('n','a','r'),
349 LegacyPreservedRailway = FeatureTypeCode('p','r','y'),
350 LegacyRailway = FeatureTypeCode('r','l','y'),
351 LegacySteps = FeatureTypeCode('s','t','e'),
352 LegacySubway = FeatureTypeCode('s','w','y'),
353 LegacyTram = FeatureTypeCode('t','r','a'),
354
355 Invalid = 32767
356 };
357
359public enum class FeatureDiscriminator
360 {
362 NonRoute = 0,
364 BridgeRoute = 1,
366 TunnelRoute = 2,
368 Route = 3
369 };
370
389public ref class FeatureInfo
390 {
391 public:
401 FeatureInfo(FeatureType aType,int aSubType);
406 FeatureInfo(int aSubType);
410 property bool Route { bool get(); };
412 property bool Tunnel { bool get(); void set(bool); };
414 property bool Bridge { bool get(); void set(bool); };
416 property int Level { int get(); void set(int aLevel); };
418 property FeatureType Type { FeatureType get(); void set(FeatureType aType); };
420 property bool OneWay { bool get(); void set(bool aValue); };
422 property bool OneWayForward { bool get(); };
424 property bool OneWayBackward { bool get(); };
426 property bool DriveOnLeft { bool get(); void set(bool aValue); };
428 property bool DriveOnRight { bool get(); void set(bool aValue); };
432 property bool Roundabout { bool get(); void set(bool aValue); };
434 property bool Toll { bool get(); void set(bool aValue); };
436 property bool WrongWay { bool get(); void set(bool aValue); };
438 property int SpeedLimit { int get(); void set(int aValue); };
440 property int Gradient { int get(); void set(int aValue); };
442 void SetVehicleAccess(bool aValue);
444 property bool PedestrianAccess { bool get(); void set(bool aValue); };
446 property bool CycleAccess { bool get(); void set(bool aValue); };
448 property bool MotorVehicleAccess { bool get(); void set(bool aValue); };
450 property bool EmergencyVehicleAccess { bool get(); void set(bool aValue); };
452 property bool OtherAccessRestricted { bool get(); void set(bool aValue); };
454 property bool IsPrivate { bool get(); };
456 property int SubType { int get(); void set(int aValue); }
458 literal int KRouteTypeCount = 32;
460 literal int KGradientCount = 8;
462 literal int KMaxSubType = 2047;
463
465 literal int KRouteAccessShift = 26;
469 literal int KRouteAccessWrongWayFlag = 1 << 26;
471 literal int KRouteAccessPedestrianFlag = 1 << 27;
473 literal int KRouteAccessCycleFlag = 1 << 28;
475 literal int KRouteAccessMotorVehicleFlag = 1 << 29;
477 literal int KRouteAccessEmergencyVehicleFlag = 1 << 30;
479 literal int KRouteAccessOtherFlag = 1U << 31;
484
485 internal:
486 operator CartoTypeCore::FeatureInfo();
487 CartoTypeCore::FeatureInfo F() { return CartoTypeCore::FeatureInfo::FromRawValue(m_value); }
488 FeatureInfo(CartoTypeCore::FeatureInfo aInfo);
489 template<typename T> void SetValue(bool aMustBeRoute,uint32_t aMask,uint32_t aShift,T aValue)
490 {
491 if (Route == aMustBeRoute)
492 {
493 m_value &= ~aMask;
494 m_value |= ((uint32_t(aValue) << aShift) & aMask);
495 return;
496 }
497 ThrowError(aMustBeRoute ? CartoTypeCore::KErrorFeatureInfoIsNotRoute : CartoTypeCore::KErrorFeatureInfoIsRoute);
498 }
499 void SetRouteFlag(uint32_t aFlag,bool aValue)
500 {
501 if (Route)
502 {
503 if (aValue)
504 m_value |= aFlag;
505 else
506 m_value &= ~aFlag;
507 return;
508 }
509 ThrowError(CartoTypeCore::KErrorFeatureInfoIsNotRoute);
510 }
511
512 static const uint32_t KDiscriminatorMask = 3;
513 static const uint32_t KDiscriminatorNonRoute = 0;
514 static const uint32_t KDiscriminatorBridge = 1;
515 static const uint32_t KDiscriminatorTunnel = 2;
516 static const uint32_t KDiscriminatorRoute = 3;
517 static const uint32_t KLevelShift = 2;
518 static const uint32_t KLevelMask = 15 << KLevelShift;
519 static const uint32_t KTypeShift = 6;
520 static const uint32_t KRouteTypeMask = 31 << KTypeShift;
521 static const uint32_t KRouteOneWayFlag = 1 << 11;
522 static const uint32_t KRouteDriveOnLeftFlag = 1 << 12;
523 static const uint32_t KRouteRoundaboutFlag = 1 << 13;
524 static const uint32_t KRouteTollFlag = 1 << 14;
525 static const uint32_t KRouteSpeedLimitShift = 15;
526 static const uint32_t KRouteSpeedLimitMask = 255 << KRouteSpeedLimitShift;
527 static const uint32_t KRouteGradientShift = 23;
528 static const uint32_t KRouteGradientMask = 7 << KRouteGradientShift;
529 static const uint32_t KRouteGradientDirectionFlag = 4 << KRouteGradientShift;
530 static const uint32_t KNonRouteTypeMask = 32767 << KTypeShift;
531 static const uint32_t KNonRouteSubTypeShift = 21;
532 static const uint32_t KNonRouteSubTypeMask = 2047U << KNonRouteSubTypeShift;
533
534 uint32_t m_value;
535 };
536
537}
A structured address. Any field may be empty or null, but at least one field should be non-empty for ...
Definition: CartoTypeWrapper.h:873
Feature information for a map object, represented internally as a 32-bit value.
Definition: CartoTypeFeatureInfo.h:390
bool OneWayBackward
True if this is a one-way route in the direction opposite to the one in which the route is stored.
Definition: CartoTypeFeatureInfo.h:424
int SubType
The sub-type. Always 0 if this is a route. This property cannot be set for route objects.
Definition: CartoTypeFeatureInfo.h:456
bool Toll
True if this is a toll route. This property cannot be set for non-route objects.
Definition: CartoTypeFeatureInfo.h:434
literal int KRouteAccessMask
A mask to select the route access flags.
Definition: CartoTypeFeatureInfo.h:467
FeatureDiscriminator Discriminator
Returns the feature discriminator.
Definition: CartoTypeFeatureInfo.h:408
bool DriveOnRight
Returns true if this is a two-way route and the rule of the road is to drive on the right....
Definition: CartoTypeFeatureInfo.h:428
literal int KRouteAccessWrongWayFlag
A flag indicating that this route is one-way but is stored in the opposite direction to the allowed d...
Definition: CartoTypeFeatureInfo.h:469
literal int KGradientCount
The number of gradients.
Definition: CartoTypeFeatureInfo.h:460
bool PedestrianAccess
True if this is a route and pedestrian access is allowed. This property cannot be set for non-route o...
Definition: CartoTypeFeatureInfo.h:444
int SpeedLimit
The speed limit in kph. A value of zero indicates that no speed limit is known. This property cannot ...
Definition: CartoTypeFeatureInfo.h:438
bool CycleAccess
True if this is a route and cycle access is allowed. This property cannot be set for non-route object...
Definition: CartoTypeFeatureInfo.h:446
void ReverseOneWayDirection()
Reverses the one-way direction if this is a one-way route.
bool WrongWay
True if this is a route with a one-way direction opposite to the order of its points....
Definition: CartoTypeFeatureInfo.h:436
literal int KMaxSubType
The maximum value for the sub-type of a non-route object.
Definition: CartoTypeFeatureInfo.h:462
bool DriveOnLeft
True if this is a two-way route and the rule of the road is to drive on the left. The rule of the roa...
Definition: CartoTypeFeatureInfo.h:426
FeatureInfo(FeatureType aType, int aSubType)
Creates a feature info object with a given sub-type. The sub-type is clamped to the range 0....
literal int KRouteAccessMotorVehicleFlag
A flag to forbid motor vehicle access in a feature info object, or, in a vehicle type,...
Definition: CartoTypeFeatureInfo.h:475
bool Route
True if this is a route.
Definition: CartoTypeFeatureInfo.h:410
void SetVehicleAccess(bool aValue)
Sets or clears the vehicle access flags. Throws an exception if this is not a route.
literal int KRouteAccessVehicle
A set of flags covering all vehicles.
Definition: CartoTypeFeatureInfo.h:481
FeatureType Type
The feature type. Route objects can only be set to route types, and non-route objects to non-route ty...
Definition: CartoTypeFeatureInfo.h:418
bool Tunnel
True if this is a route that is a tunnel. Non-route objects cannot be made into tunnels.
Definition: CartoTypeFeatureInfo.h:412
literal int KRouteAccessCycleFlag
A flag to forbid cycle access in a feature info object, or, in a vehicle type, to indicate a cyclist.
Definition: CartoTypeFeatureInfo.h:473
bool Roundabout
True if this is a route that is part of a roundabout. This property cannot be set for non-route objec...
Definition: CartoTypeFeatureInfo.h:432
bool Bridge
True if this is a route that is a bridge. Non-route objects cannot be made into bridges.
Definition: CartoTypeFeatureInfo.h:414
FeatureInfo()
Creates a feature info object of type UnknownNonRoute.
bool OneWay
True if this is a one-way route. Non-route objects cannot be set as one-way.
Definition: CartoTypeFeatureInfo.h:420
FeatureInfo(FeatureType aType)
Creates a feature info object from a feature type.
literal int KRouteTypeCount
The number of feature types that are used for routes. These values are also indexes into the speed an...
Definition: CartoTypeFeatureInfo.h:458
literal int KRouteAccessShift
The amount by which the route access flags are shifted.
Definition: CartoTypeFeatureInfo.h:465
bool IsPrivate
Returns true if this is a route and no normal access is allowed.
Definition: CartoTypeFeatureInfo.h:454
bool OtherAccessRestricted
True if this is a route and there are access restrictions other than those specified by the standard ...
Definition: CartoTypeFeatureInfo.h:452
bool EmergencyVehicleAccess
True if this is a route and emergency vehicle access is allowed. This property cannot be set for non-...
Definition: CartoTypeFeatureInfo.h:450
int Level
The level, which is in the range -8 ... 7.
Definition: CartoTypeFeatureInfo.h:416
literal int KRouteAccessPedestrianFlag
A flag to forbid pedestrian access in a feature info object, or, in a vehicle type,...
Definition: CartoTypeFeatureInfo.h:471
bool MotorVehicleAccess
True if this is a route and motor vehicle access is allowed. This property cannot be set for non-rout...
Definition: CartoTypeFeatureInfo.h:448
literal int KRouteAccessNormal
A set of flags indicating normal access: that is, access for pedestrians, cyclists and motor vehicles...
Definition: CartoTypeFeatureInfo.h:483
literal int KRouteAccessEmergencyVehicleFlag
A flag to forbid emergency vehicle access in a feature info object, or, in a vehicle type,...
Definition: CartoTypeFeatureInfo.h:477
bool OneWayForward
True if this is a one-way route in the direction in which the route is stored.
Definition: CartoTypeFeatureInfo.h:422
int Gradient
The gradient as a number in the range 0...7. Values 0...3 are uphill and 4...7 are downhill....
Definition: CartoTypeFeatureInfo.h:440
literal int KRouteAccessOtherFlag
A flag to indicate the presence of other access restrictions in a feature info object,...
Definition: CartoTypeFeatureInfo.h:479
Information about an entire route.
Definition: CartoTypeWrapper.h:811
A path defining a set of open and closed curves.
Definition: CartoTypeGeometry.h:116
Definition: CartoTypeWrapper.h:41
@ Position
A flag used in Framework.Navigate to indicate that the position is valid.
uint32_t constexpr FeatureTypeCode(int A, int B, int C)
Definition: CartoTypeFeatureInfo.h:16
void ThrowError(unsigned int aError)
FeatureType
Every map object has a feature type.
Definition: CartoTypeFeatureInfo.h:30
FeatureDiscriminator
The feature discriminator stored in a FeatureInfo object.
Definition: CartoTypeFeatureInfo.h:360
@ TunnelRoute
A route that is a tunnel.
@ BridgeRoute
A route that is a bridge.