Small ProcessElements refactoring
This commit is contained in:
parent
94169a20de
commit
64ad308e9d
@ -288,14 +288,19 @@ void Sol2ScriptingEnvironment::InitContext(LuaScriptingContext &context)
|
|||||||
"version",
|
"version",
|
||||||
&osmium::Way::version);
|
&osmium::Way::version);
|
||||||
|
|
||||||
context.state.new_usertype<osmium::RelationMember>("RelationMember",
|
context.state.new_usertype<osmium::RelationMember>(
|
||||||
"role", &osmium::RelationMember::role,
|
"RelationMember",
|
||||||
"type", &osmium::RelationMember::type,
|
"role",
|
||||||
"id", [](const osmium::RelationMember &member) -> osmium::object_id_type {
|
&osmium::RelationMember::role,
|
||||||
|
"type",
|
||||||
|
&osmium::RelationMember::type,
|
||||||
|
"id",
|
||||||
|
[](const osmium::RelationMember &member) -> osmium::object_id_type {
|
||||||
return member.ref();
|
return member.ref();
|
||||||
});
|
});
|
||||||
|
|
||||||
context.state.new_usertype<osmium::Relation>("Relation",
|
context.state.new_usertype<osmium::Relation>(
|
||||||
|
"Relation",
|
||||||
"get_value_by_key",
|
"get_value_by_key",
|
||||||
&get_value_by_key<osmium::Relation>,
|
&get_value_by_key<osmium::Relation>,
|
||||||
"id",
|
"id",
|
||||||
@ -400,13 +405,11 @@ void Sol2ScriptingEnvironment::InitContext(LuaScriptingContext &context)
|
|||||||
context.state.new_usertype<ExtractionRelation>(
|
context.state.new_usertype<ExtractionRelation>(
|
||||||
"ExtractionRelation",
|
"ExtractionRelation",
|
||||||
sol::meta_function::new_index,
|
sol::meta_function::new_index,
|
||||||
[](ExtractionRelation &rel, const osmium::RelationMember &member) -> ExtractionRelation::AttributesMap& {
|
[](ExtractionRelation &rel, const osmium::RelationMember &member)
|
||||||
return rel.GetMember(member);
|
-> ExtractionRelation::AttributesMap & { return rel.GetMember(member); },
|
||||||
},
|
|
||||||
sol::meta_function::index,
|
sol::meta_function::index,
|
||||||
[](ExtractionRelation &rel, const osmium::RelationMember &member) -> ExtractionRelation::AttributesMap& {
|
[](ExtractionRelation &rel, const osmium::RelationMember &member)
|
||||||
return rel.GetMember(member);
|
-> ExtractionRelation::AttributesMap & { return rel.GetMember(member); },
|
||||||
},
|
|
||||||
"restriction",
|
"restriction",
|
||||||
sol::property([](const ExtractionRelation &rel) { return rel.is_restriction; },
|
sol::property([](const ExtractionRelation &rel) { return rel.is_restriction; },
|
||||||
[](ExtractionRelation &rel, bool flag) { rel.is_restriction = flag; }));
|
[](ExtractionRelation &rel, bool flag) { rel.is_restriction = flag; }));
|
||||||
@ -689,34 +692,34 @@ void Sol2ScriptingEnvironment::ProcessElements(
|
|||||||
switch (entity->type())
|
switch (entity->type())
|
||||||
{
|
{
|
||||||
case osmium::item_type::node:
|
case osmium::item_type::node:
|
||||||
|
{
|
||||||
|
const auto &node = static_cast<const osmium::Node &>(*entity);
|
||||||
result_node.clear();
|
result_node.clear();
|
||||||
if (local_context.has_node_function &&
|
if (local_context.has_node_function &&
|
||||||
(!static_cast<const osmium::Node &>(*entity).tags().empty() ||
|
(!node.tags().empty() || local_context.properties.call_tagless_node_function))
|
||||||
local_context.properties.call_tagless_node_function))
|
|
||||||
{
|
{
|
||||||
const osmium::Node &node = static_cast<const osmium::Node &>(*entity);
|
|
||||||
const auto &id = ExtractionRelation::OsmIDTyped(node.id(), osmium::item_type::node);
|
const auto &id = ExtractionRelation::OsmIDTyped(node.id(), osmium::item_type::node);
|
||||||
local_context.ProcessNode(node, result_node, relations.Get(id));
|
local_context.ProcessNode(node, result_node, relations.Get(id));
|
||||||
}
|
}
|
||||||
resulting_nodes.push_back(std::pair<const osmium::Node &, ExtractionNode>(
|
resulting_nodes.push_back({node, std::move(result_node)});
|
||||||
static_cast<const osmium::Node &>(*entity), std::move(result_node)));
|
}
|
||||||
break;
|
break;
|
||||||
case osmium::item_type::way:
|
case osmium::item_type::way:
|
||||||
|
{
|
||||||
|
const osmium::Way &way = static_cast<const osmium::Way &>(*entity);
|
||||||
result_way.clear();
|
result_way.clear();
|
||||||
if (local_context.has_way_function)
|
if (local_context.has_way_function)
|
||||||
{
|
{
|
||||||
const osmium::Way &way = static_cast<const osmium::Way &>(*entity);
|
|
||||||
const auto &id = ExtractionRelation::OsmIDTyped(way.id(), osmium::item_type::way);
|
const auto &id = ExtractionRelation::OsmIDTyped(way.id(), osmium::item_type::way);
|
||||||
local_context.ProcessWay(way, result_way, relations.Get(id));
|
local_context.ProcessWay(way, result_way, relations.Get(id));
|
||||||
}
|
}
|
||||||
resulting_ways.push_back(std::pair<const osmium::Way &, ExtractionWay>(
|
resulting_ways.push_back({way, std::move(result_way)});
|
||||||
static_cast<const osmium::Way &>(*entity), std::move(result_way)));
|
}
|
||||||
break;
|
break;
|
||||||
case osmium::item_type::relation:
|
case osmium::item_type::relation:
|
||||||
{
|
{
|
||||||
auto result_res =
|
const auto &relation = static_cast<const osmium::Relation &>(*entity);
|
||||||
restriction_parser.TryParse(static_cast<const osmium::Relation &>(*entity));
|
if (auto result_res = restriction_parser.TryParse(relation))
|
||||||
if (result_res)
|
|
||||||
{
|
{
|
||||||
resulting_restrictions.push_back(*result_res);
|
resulting_restrictions.push_back(*result_res);
|
||||||
}
|
}
|
||||||
@ -726,13 +729,9 @@ void Sol2ScriptingEnvironment::ProcessElements(
|
|||||||
result_relation.clear();
|
result_relation.clear();
|
||||||
if (local_context.has_relation_function)
|
if (local_context.has_relation_function)
|
||||||
{
|
{
|
||||||
local_context.ProcessRelation(static_cast<const osmium::Relation &>(*entity),
|
local_context.ProcessRelation(relation, result_relation);
|
||||||
result_relation);
|
|
||||||
}
|
}
|
||||||
resulting_relations.push_back(
|
resulting_relations.push_back({relation, std::move(result_relation)});
|
||||||
std::pair<const osmium::Relation &, ExtractionRelation>(
|
|
||||||
static_cast<const osmium::Relation &>(*entity),
|
|
||||||
std::move(result_relation)));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user