10 using namespace std::string_literals;
13 namespace traffic_rules {
16 RegisterTrafficRules<GermanVehicle> gvRules(Locations::Germany, Participants::Vehicle);
17 RegisterTrafficRules<GermanPedestrian> gpRules(Locations::Germany, Participants::Pedestrian);
18 RegisterTrafficRules<GermanBicycle> gbRules(Locations::Germany, Participants::Bicycle);
20 Velocity trafficSignToVelocity(
const std::string& typeString) {
22 const static std::map<std::string, Velocity> StrToVelocity{
23 {
"de274", 30_kmh}, {
"de274-5", 5_kmh}, {
"de274-10", 10_kmh}, {
"de274-15", 15_kmh},
24 {
"de274-20", 20_kmh}, {
"de274-30", 30_kmh}, {
"de274-40", 40_kmh}, {
"de274-50", 50_kmh},
25 {
"de274-60", 60_kmh}, {
"de274-70", 70_kmh}, {
"de274-80", 80_kmh}, {
"de274-90", 90_kmh},
26 {
"de274-100", 100_kmh}, {
"de274-110", 110_kmh}, {
"de274-120", 120_kmh}, {
"de274-130", 130_kmh},
27 {
"de274_1", 30_kmh}, {
"de274_1-20", 20_kmh}, {
"de310", 50_kmh}};
29 return StrToVelocity.at(typeString);
30 }
catch (std::out_of_range&) {
32 Attribute asAttribute(typeString);
33 auto velocity = asAttribute.asVelocity();
43 for (
const auto& regelem : regelems) {
44 auto speedLimit = std::dynamic_pointer_cast<const SpeedLimit>(regelem);
53 using namespace units::literals;
54 return {{50_kmh}, {100_kmh}, {130_kmh,
false}, {130_kmh,
false}, {7_kmh}, {5_kmh}, {20_kmh}};