1 #ifndef SCRIPTING_ENVIRONMENT_HPP 2 #define SCRIPTING_ENVIRONMENT_HPP 3 4 #include "extractor/internal_extractor_edge.hpp" 5 #include "extractor/maneuver_override.hpp" 6 #include "extractor/profile_properties.hpp" 7 #include "extractor/restriction.hpp" 8 9 #include <osmium/memory/buffer.hpp> 10 11 #include <boost/optional/optional.hpp> 12 13 #include <string> 14 #include <vector> 15 16 namespace osmium 17 { 18 class Node; 19 class Way; 20 class Relation; 21 } // namespace osmium 22 23 namespace osrm 24 { 25 26 namespace util 27 { 28 struct Coordinate; 29 } 30 31 namespace extractor 32 { 33 34 class RestrictionParser; 35 class ManeuverOverrideRelationParser; 36 class ExtractionRelationContainer; 37 struct ExtractionNode; 38 struct ExtractionWay; 39 struct ExtractionTurn; 40 struct ExtractionSegment; 41 42 /** 43 * Abstract class that handles processing osmium ways, nodes and relation objects by applying 44 * user supplied profiles. 45 */ 46 class ScriptingEnvironment 47 { 48 public: 49 ScriptingEnvironment() = default; 50 ScriptingEnvironment(const ScriptingEnvironment &) = delete; 51 ScriptingEnvironment &operator=(const ScriptingEnvironment &) = delete; 52 virtual ~ScriptingEnvironment() = default; 53 54 virtual const ProfileProperties &GetProfileProperties() = 0; 55 56 virtual std::vector<std::vector<std::string>> GetExcludableClasses() = 0; 57 virtual std::vector<std::string> GetClassNames() = 0; 58 virtual std::vector<std::string> GetNameSuffixList() = 0; 59 virtual std::vector<std::string> GetRestrictions() = 0; 60 virtual std::vector<std::string> GetRelations() = 0; 61 virtual void ProcessTurn(ExtractionTurn &turn) = 0; 62 virtual void ProcessSegment(ExtractionSegment &segment) = 0; 63 64 virtual void 65 ProcessElements(const osmium::memory::Buffer &buffer, 66 const RestrictionParser &restriction_parser, 67 const ManeuverOverrideRelationParser &maneuver_override_parser, 68 const ExtractionRelationContainer &relations, 69 std::vector<std::pair<const osmium::Node &, ExtractionNode>> &resulting_nodes, 70 std::vector<std::pair<const osmium::Way &, ExtractionWay>> &resulting_ways, 71 std::vector<InputTurnRestriction> &resulting_restrictions, 72 std::vector<InputManeuverOverride> &resulting_maneuver_overrides) = 0; 73 74 virtual bool HasLocationDependentData() const = 0; 75 }; 76 } // namespace extractor 77 } // namespace osrm 78 79 #endif /* SCRIPTING_ENVIRONMENT_HPP */ 80