#ifndef EXTRACTOR_HPP #define EXTRACTOR_HPP #include "extractor/extractor_options.hpp" #include "extractor/edge_based_graph_factory.hpp" #include "extractor/graph_compressor.hpp" class extractor { public: extractor(ExtractorConfig extractor_config) : config(std::move(extractor_config)) {} int run(); private: ExtractorConfig config; void SetupScriptingEnvironment(lua_State *myLuaState, SpeedProfileProperties &speed_profile); std::pair BuildEdgeExpandedGraph(std::vector &internal_to_external_node_map, std::vector &node_based_edge_list, std::vector &node_is_startpoint, DeallocatingVector &edge_based_edge_list); void WriteNodeMapping(const std::vector &internal_to_external_node_map); void FindComponents(unsigned max_edge_id, const DeallocatingVector &edges, std::vector &nodes) const; void BuildRTree(std::vector node_based_edge_list, std::vector node_is_startpoint, const std::vector &internal_to_external_node_map); std::shared_ptr LoadRestrictionMap(); std::shared_ptr LoadNodeBasedGraph(std::unordered_set &barrier_nodes, std::unordered_set &traffic_lights, std::vector &internal_to_external_node_map); void WriteEdgeBasedGraph(std::string const &output_file_filename, size_t const max_edge_id, DeallocatingVector const &edge_based_edge_list); }; #endif /* EXTRACTOR_HPP */