9#include <cartotype_feature_info.h>
10#include "CartoTypeResult.h"
18 return (
char(A -
'a' + 1) << 10) | (char(B -
'a' + 1) << 5) | (
char(C -
'a' + 1));
383 KRouteAccessShift = 26,
384 KRouteAccessMask = int(63U << KRouteAccessShift),
385 KRouteAccessWrongWayFlag = 1 << 26,
386 KRouteAccessPedestrianFlag = 1 << 27,
387 KRouteAccessCycleFlag = 1 << 28,
388 KRouteAccessMotorVehicleFlag = 1 << 29,
389 KRouteAccessEmergencyVehicleFlag = 1 << 30,
390 KRouteAccessOtherFlag = int(1U << 31),
391 KRouteAccessVehicle = KRouteAccessCycleFlag | KRouteAccessMotorVehicleFlag | KRouteAccessEmergencyVehicleFlag,
392 KRouteAccessNormal = KRouteAccessCycleFlag | KRouteAccessMotorVehicleFlag | KRouteAccessPedestrianFlag
429 property bool Route {
bool get(); };
431 property bool Tunnel {
bool get();
void set(
bool); };
433 property bool Bridge {
bool get();
void set(
bool); };
435 property int Level {
int get();
void set(
int aLevel); };
439 property bool OneWay {
bool get();
void set(
bool aValue); };
445 property bool DriveOnLeft {
bool get();
void set(
bool aValue); };
447 property bool DriveOnRight {
bool get();
void set(
bool aValue); };
451 property bool Roundabout {
bool get();
void set(
bool aValue); };
453 property bool Toll {
bool get();
void set(
bool aValue); };
455 property bool WrongWay {
bool get();
void set(
bool aValue); };
457 property int SpeedLimit {
int get();
void set(
int aValue); };
459 property int Gradient {
int get();
void set(
int aValue); };
465 property bool CycleAccess {
bool get();
void set(
bool aValue); };
475 property int SubType {
int get();
void set(
int aValue); }
478 operator CartoTypeCore::FeatureInfo();
479 CartoTypeCore::FeatureInfo F() {
return CartoTypeCore::FeatureInfo::FromRawValue(m_value); }
481 template<
typename T>
Result SetValue(
bool aMustBeRoute,uint32_t aMask,uint32_t aShift,T aValue)
483 if (
Route == aMustBeRoute)
486 m_value |= ((uint32_t(aValue) << aShift) & aMask);
491 Result SetRouteFlag(uint32_t aFlag,
bool aValue)
504 static const uint32_t KRouteTypeCount = 32;
505 static const uint32_t KGradientCount = 8;
506 static const uint32_t KMaxSubType = 2047;
507 static const uint32_t KRouteAccessShift = 26;
508 static const uint32_t KRouteAccessMask = 63U << KRouteAccessShift;
509 static const uint32_t KRouteAccessWrongWayFlag = 1 << 26;
510 static const uint32_t KRouteAccessPedestrianFlag = 1 << 27;
511 static const uint32_t KRouteAccessCycleFlag = 1 << 28;
512 static const uint32_t KRouteAccessMotorVehicleFlag = 1 << 29;
513 static const uint32_t KRouteAccessEmergencyVehicleFlag = 1 << 30;
514 static const uint32_t KRouteAccessOtherFlag = 1U << 31;
515 static const uint32_t KRouteAccessVehicle = KRouteAccessCycleFlag | KRouteAccessMotorVehicleFlag | KRouteAccessEmergencyVehicleFlag;
516 static const uint32_t KRouteAccessNormal = KRouteAccessCycleFlag | KRouteAccessMotorVehicleFlag | KRouteAccessPedestrianFlag;
517 static const uint32_t KDiscriminatorMask = 3;
518 static const uint32_t KDiscriminatorNonRoute = 0;
519 static const uint32_t KDiscriminatorBridge = 1;
520 static const uint32_t KDiscriminatorTunnel = 2;
521 static const uint32_t KDiscriminatorRoute = 3;
522 static const uint32_t KLevelShift = 2;
523 static const uint32_t KLevelMask = 15 << KLevelShift;
524 static const uint32_t KTypeShift = 6;
525 static const uint32_t KRouteTypeMask = 31 << KTypeShift;
526 static const uint32_t KRouteOneWayFlag = 1 << 11;
527 static const uint32_t KRouteDriveOnLeftFlag = 1 << 12;
528 static const uint32_t KRouteRoundaboutFlag = 1 << 13;
529 static const uint32_t KRouteTollFlag = 1 << 14;
530 static const uint32_t KRouteSpeedLimitShift = 15;
531 static const uint32_t KRouteSpeedLimitMask = 255 << KRouteSpeedLimitShift;
532 static const uint32_t KRouteGradientShift = 23;
533 static const uint32_t KRouteGradientMask = 7 << KRouteGradientShift;
534 static const uint32_t KRouteGradientDirectionFlag = 4 << KRouteGradientShift;
535 static const uint32_t KNonRouteTypeMask = 32767 << KTypeShift;
536 static const uint32_t KNonRouteSubTypeShift = 21;
537 static const uint32_t KNonRouteSubTypeMask = 2047U << KNonRouteSubTypeShift;
A structured address. Any field may be empty or null, but at least one field should be non-empty for ...
Definition CartoTypeWrapper.h:855
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:443
int SubType
The sub-type. Always 0 if this is a route. This property cannot be set for route objects.
Definition CartoTypeFeatureInfo.h:475
bool Toll
True if this is a toll route. This property cannot be set for non-route objects.
Definition CartoTypeFeatureInfo.h:453
FeatureDiscriminator Discriminator
Returns the feature discriminator.
Definition CartoTypeFeatureInfo.h:427
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:447
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:463
int SpeedLimit
The speed limit in kph. A value of zero indicates that no speed limit is known. This property cannot ...
Definition CartoTypeFeatureInfo.h:457
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:465
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:455
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:445
bool Route
True if this is a route.
Definition CartoTypeFeatureInfo.h:429
void SetVehicleAccess(bool aValue)
Sets or clears the vehicle access flags. Throws an exception if this is not a route.
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:437
bool Tunnel
True if this is a route that is a tunnel. Non-route objects cannot be made into tunnels.
Definition CartoTypeFeatureInfo.h:431
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:451
bool Bridge
True if this is a route that is a bridge. Non-route objects cannot be made into bridges.
Definition CartoTypeFeatureInfo.h:433
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:439
FeatureInfo(FeatureType aType)
Creates a feature info object from a feature type.
bool IsPrivate
Returns true if this is a route and no normal access is allowed.
Definition CartoTypeFeatureInfo.h:473
bool OtherAccessRestricted
True if this is a route and there are access restrictions other than those specified by the standard ...
Definition CartoTypeFeatureInfo.h:471
bool EmergencyVehicleAccess
True if this is a route and emergency vehicle access is allowed. This property cannot be set for non-...
Definition CartoTypeFeatureInfo.h:469
int Level
The level, which is in the range -8 ... 7.
Definition CartoTypeFeatureInfo.h:435
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:467
bool OneWayForward
True if this is a one-way route in the direction in which the route is stored.
Definition CartoTypeFeatureInfo.h:441
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:459
Information about an entire route.
Definition CartoTypeWrapper.h:797
A path defining a set of open and closed curves.
Definition CartoTypeGeometry.h:124
Definition CartoTypeWrapper.h:68
Result
Result codes returned by CartoType API functions.
Definition CartoTypeResult.h:15
@ Success
No error; a successful result.
Definition CartoTypeResult.h:17
@ ErrorInvalidArgument
This error is returned when an invalid argument has been given to a function.
Definition CartoTypeResult.h:123
FeatureConstants
Constants referring to the FeatureType and FeatureInfo classes.
Definition CartoTypeFeatureInfo.h:375
@ KMaxSubType
The maximum value for the sub-type of a non-route object.
Definition CartoTypeFeatureInfo.h:381
@ KRouteTypeCount
The number of feature types that are used for routes. These values are also indexes into the speed an...
Definition CartoTypeFeatureInfo.h:377
@ KGradientCount
The number of gradients.
Definition CartoTypeFeatureInfo.h:379
uint32_t constexpr FeatureTypeCode(int A, int B, int C)
Definition CartoTypeFeatureInfo.h:16
@ Position
A flag used in Framework.Navigate to indicate that the position is valid.
Definition CartoTypeWrapper.h:337
FeatureType
Every map object has a feature type.
Definition CartoTypeFeatureInfo.h:30
FeatureDiscriminator
The feature discriminator stored in a FeatureInfo object.
Definition CartoTypeFeatureInfo.h:362
@ TunnelRoute
A route that is a tunnel.
Definition CartoTypeFeatureInfo.h:368
@ NonRoute
Not a route.
Definition CartoTypeFeatureInfo.h:364
@ BridgeRoute
A route that is a bridge.
Definition CartoTypeFeatureInfo.h:366