LUA binding for a relation processing

This commit is contained in:
Denis Koronchik
2017-08-31 14:23:00 +03:00
committed by Michael Krasnyk
parent a253111cbe
commit f2b63ba0aa
5 changed files with 173 additions and 6 deletions
@@ -19,6 +19,7 @@ namespace osmium
{
class Node;
class Way;
class Relation;
}
namespace osrm
@@ -35,6 +36,7 @@ namespace extractor
class RestrictionParser;
struct ExtractionNode;
struct ExtractionWay;
struct ExtractionRelation;
struct ExtractionTurn;
struct ExtractionSegment;
@@ -64,6 +66,7 @@ class ScriptingEnvironment
const RestrictionParser &restriction_parser,
std::vector<std::pair<const osmium::Node &, ExtractionNode>> &resulting_nodes,
std::vector<std::pair<const osmium::Way &, ExtractionWay>> &resulting_ways,
std::vector<std::pair<const osmium::Relation &, ExtractionRelation>> &resulting_relations,
std::vector<InputConditionalTurnRestriction> &resulting_restrictions) = 0;
};
}
@@ -21,6 +21,7 @@ struct LuaScriptingContext final
{
void ProcessNode(const osmium::Node &, ExtractionNode &result);
void ProcessWay(const osmium::Way &, ExtractionWay &result);
void ProcessRelation(const osmium::Relation &, ExtractionRelation &result);
ProfileProperties properties;
RasterContainer raster_sources;
@@ -29,11 +30,13 @@ struct LuaScriptingContext final
bool has_turn_penalty_function;
bool has_node_function;
bool has_way_function;
bool has_relation_function;
bool has_segment_function;
sol::function turn_function;
sol::function way_function;
sol::function node_function;
sol::function relation_function;
sol::function segment_function;
int api_version;
@@ -51,7 +54,7 @@ class Sol2ScriptingEnvironment final : public ScriptingEnvironment
{
public:
static const constexpr int SUPPORTED_MIN_API_VERSION = 0;
static const constexpr int SUPPORTED_MAX_API_VERSION = 2;
static const constexpr int SUPPORTED_MAX_API_VERSION = 3;
explicit Sol2ScriptingEnvironment(const std::string &file_name);
~Sol2ScriptingEnvironment() override = default;
@@ -70,6 +73,7 @@ class Sol2ScriptingEnvironment final : public ScriptingEnvironment
const RestrictionParser &restriction_parser,
std::vector<std::pair<const osmium::Node &, ExtractionNode>> &resulting_nodes,
std::vector<std::pair<const osmium::Way &, ExtractionWay>> &resulting_ways,
std::vector<std::pair<const osmium::Relation &, ExtractionRelation>> &resulting_relations,
std::vector<InputConditionalTurnRestriction> &resulting_restrictions) override;
private: