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));
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); };
420 property bool OneWay {
bool get();
void set(
bool aValue); };
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); };
446 property bool CycleAccess {
bool get();
void set(
bool aValue); };
456 property int SubType {
int get();
void set(
int aValue); }
486 operator CartoTypeCore::FeatureInfo();
487 CartoTypeCore::FeatureInfo F() {
return CartoTypeCore::FeatureInfo::FromRawValue(m_value); }
489 template<
typename T>
void SetValue(
bool aMustBeRoute,uint32_t aMask,uint32_t aShift,T aValue)
491 if (
Route == aMustBeRoute)
494 m_value |= ((uint32_t(aValue) << aShift) & aMask);
497 ThrowError(aMustBeRoute ? CartoTypeCore::KErrorFeatureInfoIsNotRoute : CartoTypeCore::KErrorFeatureInfoIsRoute);
499 void SetRouteFlag(uint32_t aFlag,
bool aValue)
509 ThrowError(CartoTypeCore::KErrorFeatureInfoIsNotRoute);
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;
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.