TrafficRulesFactory.cpp
Go to the documentation of this file.
2 
3 namespace lanelet {
4 
5 #if __cplusplus < 201703L
6 constexpr char Locations::Germany[];
7 #endif
8 
9 namespace traffic_rules {
10 TrafficRulesUPtr TrafficRulesFactory::create(const std::string& location, const std::string& participant,
11  TrafficRules::Configuration configuration) {
12  auto& registry = instance().registry_;
13  auto elem = registry.find(std::make_pair(location, participant));
14  const std::string vehicle = Participants::Vehicle;
15  if (elem == registry.end() && participant.compare(0, vehicle.size(), vehicle) == 0) {
16  // second try for vehicle types
17  elem = registry.find(std::make_pair(location, std::string(Participants::Vehicle)));
18  }
19  if (elem != registry.end()) {
20  configuration["location"] = location;
21  configuration["participant"] = participant;
22  return elem->second(configuration);
23  }
24  throw InvalidInputError("No matching traffic rules found for location " + location + ", participant " + participant);
25 }
26 
27 std::vector<std::pair<std::string, std::string>> TrafficRulesFactory::availableTrafficRules() {
28  std::vector<std::string> rules;
29  auto& registry = TrafficRulesFactory::instance().registry_;
30  return utils::transform(registry, [](const auto& elem) { return elem.first; });
31 }
32 
34  static TrafficRulesFactory factory;
35  return factory;
36 }
37 } // namespace traffic_rules
38 } // namespace lanelet
lanelet::traffic_rules::TrafficRulesUPtr
std::unique_ptr< TrafficRules > TrafficRulesUPtr
Definition: GenericTrafficRules.h:23
lanelet
lanelet::traffic_rules::TrafficRulesFactory::registry_
std::map< std::pair< std::string, std::string >, FactoryFcn > registry_
Definition: TrafficRulesFactory.h:38
TrafficRulesFactory.h
lanelet::traffic_rules::TrafficRulesFactory
Definition: TrafficRulesFactory.h:13
lanelet::traffic_rules::TrafficRulesFactory::instance
static TrafficRulesFactory & instance()
Definition: TrafficRulesFactory.cpp:33
lanelet::utils::transform
auto transform(Container &&c, Func f)
lanelet::Locations::Germany
static constexpr char Germany[]
Definition: TrafficRulesFactory.h:6
lanelet::Participants::Vehicle
static constexpr const char Vehicle[]
lanelet::traffic_rules::TrafficRulesFactory::create
static TrafficRulesUPtr create(const std::string &location, const std::string &participant, TrafficRules::Configuration configuration=TrafficRules::Configuration())
Definition: TrafficRulesFactory.cpp:10
lanelet::traffic_rules::TrafficRulesFactory::availableTrafficRules
static std::vector< std::pair< std::string, std::string > > availableTrafficRules()
returns registered traffic rules by location and participant
Definition: TrafficRulesFactory.cpp:27
lanelet::traffic_rules::TrafficRules::Configuration
std::map< std::string, Attribute > Configuration
Definition: TrafficRules.h:20
lanelet::InvalidInputError


lanelet2_traffic_rules
Author(s): Fabian Poggenhans
autogenerated on Thu Mar 6 2025 03:26:07