#pragma once #include "std/shared_ptr.hpp" #include "std/unordered_map.hpp" #include "vehicle_model.hpp" namespace routing { class PedestrianModel : public VehicleModel { public: PedestrianModel(); PedestrianModel(VehicleModel::InitListT const & speedLimits); /// VehicleModel overrides: bool IsOneWay(FeatureType const &) const override { return false; } static PedestrianModel const & AllLimitsInstance(); protected: RoadAvailability GetRoadAvailability(feature::TypesHolder const & types) const override; private: void Init(); uint32_t m_noFootType = 0; uint32_t m_yesFootType = 0; }; class PedestrianModelFactory : public IVehicleModelFactory { public: PedestrianModelFactory(); /// @name Overrides from IVehicleModelFactory. //@{ shared_ptr GetVehicleModel() const override; shared_ptr GetVehicleModelForCountry(string const & country) const override; //@} private: unordered_map> m_models; }; } // namespace routing