Apply clang format
This commit is contained in:
parent
580c5e39ae
commit
c2fd64d3cc
@ -14,10 +14,7 @@ namespace extractor
|
||||
namespace detail
|
||||
{
|
||||
|
||||
inline const char * checkedString(const char * str)
|
||||
{
|
||||
return str ? str : "";
|
||||
}
|
||||
inline const char *checkedString(const char *str) { return str ? str : ""; }
|
||||
|
||||
} // namespace detail
|
||||
|
||||
@ -25,10 +22,7 @@ struct ExtractionRelation
|
||||
{
|
||||
using AttributesMap = std::unordered_map<std::string, std::string>;
|
||||
|
||||
ExtractionRelation()
|
||||
: is_restriction(false)
|
||||
{
|
||||
}
|
||||
ExtractionRelation() : is_restriction(false) {}
|
||||
|
||||
void clear()
|
||||
{
|
||||
@ -36,15 +30,9 @@ struct ExtractionRelation
|
||||
values.clear();
|
||||
}
|
||||
|
||||
bool IsRestriction() const
|
||||
{
|
||||
return is_restriction;
|
||||
}
|
||||
bool IsRestriction() const { return is_restriction; }
|
||||
|
||||
AttributesMap & GetMember(util::OsmIDTyped id)
|
||||
{
|
||||
return values[id.Hash()];
|
||||
}
|
||||
AttributesMap &GetMember(util::OsmIDTyped id) { return values[id.Hash()]; }
|
||||
|
||||
bool is_restriction;
|
||||
std::unordered_map<util::OsmIDTyped::HashType, AttributesMap> values;
|
||||
@ -53,18 +41,18 @@ struct ExtractionRelation
|
||||
// It contains data of all parsed relations for each node/way element
|
||||
class ExtractionRelationContainer
|
||||
{
|
||||
public:
|
||||
public:
|
||||
using AttributesMap = ExtractionRelation::AttributesMap;
|
||||
using RelationList = std::vector<AttributesMap>;
|
||||
|
||||
void AddRelation(const ExtractionRelation & rel)
|
||||
void AddRelation(const ExtractionRelation &rel)
|
||||
{
|
||||
BOOST_ASSERT(!rel.is_restriction);
|
||||
for (auto it : rel.values)
|
||||
data[it.first].push_back(it.second);
|
||||
}
|
||||
|
||||
const RelationList & Get(const util::OsmIDTyped & id) const
|
||||
const RelationList &Get(const util::OsmIDTyped &id) const
|
||||
{
|
||||
const auto it = data.find(id.Hash());
|
||||
if (it != data.end())
|
||||
@ -74,7 +62,7 @@ public:
|
||||
return empty;
|
||||
}
|
||||
|
||||
private:
|
||||
private:
|
||||
// TODO: need to store more common data
|
||||
std::unordered_map<util::OsmIDTyped::HashType, RelationList> data;
|
||||
};
|
||||
|
@ -90,7 +90,6 @@ class ExtractorCallbacks
|
||||
// warning: caller needs to take care of synchronization!
|
||||
void ProcessWay(const osmium::Way ¤t_way, const ExtractionWay &result_way);
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -62,14 +62,14 @@ class ScriptingEnvironment
|
||||
virtual void ProcessTurn(ExtractionTurn &turn) = 0;
|
||||
virtual void ProcessSegment(ExtractionSegment &segment) = 0;
|
||||
|
||||
virtual void
|
||||
ProcessElements(const osmium::memory::Buffer &buffer,
|
||||
const RestrictionParser &restriction_parser,
|
||||
const ExtractionRelationContainer &relations,
|
||||
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;
|
||||
virtual void ProcessElements(
|
||||
const osmium::memory::Buffer &buffer,
|
||||
const RestrictionParser &restriction_parser,
|
||||
const ExtractionRelationContainer &relations,
|
||||
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;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
#ifndef SCRIPTING_ENVIRONMENT_LUA_HPP
|
||||
#define SCRIPTING_ENVIRONMENT_LUA_HPP
|
||||
|
||||
#include "extractor/extraction_relation.hpp"
|
||||
#include "extractor/raster_source.hpp"
|
||||
#include "extractor/scripting_environment.hpp"
|
||||
#include "extractor/extraction_relation.hpp"
|
||||
|
||||
#include <tbb/enumerable_thread_specific.h>
|
||||
|
||||
@ -20,8 +20,12 @@ namespace extractor
|
||||
|
||||
struct LuaScriptingContext final
|
||||
{
|
||||
void ProcessNode(const osmium::Node &, ExtractionNode &result, const ExtractionRelationContainer::RelationList &relations);
|
||||
void ProcessWay(const osmium::Way &, ExtractionWay &result, const ExtractionRelationContainer::RelationList &relations);
|
||||
void ProcessNode(const osmium::Node &,
|
||||
ExtractionNode &result,
|
||||
const ExtractionRelationContainer::RelationList &relations);
|
||||
void ProcessWay(const osmium::Way &,
|
||||
ExtractionWay &result,
|
||||
const ExtractionRelationContainer::RelationList &relations);
|
||||
void ProcessRelation(const osmium::Relation &, ExtractionRelation &result);
|
||||
|
||||
ProfileProperties properties;
|
||||
@ -69,14 +73,14 @@ class Sol2ScriptingEnvironment final : public ScriptingEnvironment
|
||||
void ProcessTurn(ExtractionTurn &turn) override;
|
||||
void ProcessSegment(ExtractionSegment &segment) override;
|
||||
|
||||
void
|
||||
ProcessElements(const osmium::memory::Buffer &buffer,
|
||||
const RestrictionParser &restriction_parser,
|
||||
const ExtractionRelationContainer &relations,
|
||||
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;
|
||||
void ProcessElements(
|
||||
const osmium::memory::Buffer &buffer,
|
||||
const RestrictionParser &restriction_parser,
|
||||
const ExtractionRelationContainer &relations,
|
||||
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:
|
||||
LuaScriptingContext &GetSol2Context();
|
||||
|
@ -10,26 +10,24 @@ namespace util
|
||||
|
||||
class OsmIDTyped
|
||||
{
|
||||
public:
|
||||
public:
|
||||
using HashType = std::uint64_t;
|
||||
|
||||
OsmIDTyped(std::uint64_t id_, std::uint8_t type_)
|
||||
: id(id_)
|
||||
, type(type_)
|
||||
OsmIDTyped(std::uint64_t id_, std::uint8_t type_) : id(id_), type(type_)
|
||||
{
|
||||
// check if type value not above type size bound
|
||||
BOOST_ASSERT(id_ < (std::uint64_t(1) << 56));
|
||||
}
|
||||
|
||||
bool operator == (const OsmIDTyped &other) { return (id == other.id && type == other.type); }
|
||||
bool operator != (const OsmIDTyped &other) { return (id != other.id || type != other.type); }
|
||||
bool operator==(const OsmIDTyped &other) { return (id == other.id && type == other.type); }
|
||||
bool operator!=(const OsmIDTyped &other) { return (id != other.id || type != other.type); }
|
||||
|
||||
inline HashType Hash() const { return (std::uint64_t(id) | std::uint64_t(type) << 56); }
|
||||
|
||||
std::uint64_t GetID() const { return id; }
|
||||
std::uint8_t GetType() const { return type; }
|
||||
|
||||
private:
|
||||
private:
|
||||
std::uint64_t id : 56;
|
||||
std::uint8_t type;
|
||||
};
|
||||
|
@ -3,8 +3,8 @@
|
||||
#include "extractor/edge_based_edge.hpp"
|
||||
#include "extractor/extraction_containers.hpp"
|
||||
#include "extractor/extraction_node.hpp"
|
||||
#include "extractor/extraction_way.hpp"
|
||||
#include "extractor/extraction_relation.hpp"
|
||||
#include "extractor/extraction_way.hpp"
|
||||
#include "extractor/extractor_callbacks.hpp"
|
||||
#include "extractor/files.hpp"
|
||||
#include "extractor/raster_source.hpp"
|
||||
@ -290,9 +290,10 @@ Extractor::ParseOSMData(ScriptingEnvironment &scripting_environment,
|
||||
const osmium::io::File input_file(config.input_path.string());
|
||||
osmium::thread::Pool pool(number_of_threads);
|
||||
|
||||
std::unique_ptr<osmium::io::Reader> reader(
|
||||
new osmium::io::Reader(input_file, osmium::osm_entity_bits::relation,
|
||||
(config.use_metadata ? osmium::io::read_meta::yes : osmium::io::read_meta::no)));
|
||||
std::unique_ptr<osmium::io::Reader> reader(new osmium::io::Reader(
|
||||
input_file,
|
||||
osmium::osm_entity_bits::relation,
|
||||
(config.use_metadata ? osmium::io::read_meta::yes : osmium::io::read_meta::no)));
|
||||
|
||||
osmium::io::Header header = reader->header();
|
||||
|
||||
@ -396,7 +397,7 @@ Extractor::ParseOSMData(ScriptingEnvironment &scripting_environment,
|
||||
}
|
||||
});
|
||||
|
||||
tbb::filter_t<std::shared_ptr<ParsedBuffer>, void> buffer_storage_relation(
|
||||
tbb::filter_t<std::shared_ptr<ParsedBuffer>, void> buffer_storage_relation(
|
||||
tbb::filter::serial_in_order, [&](const std::shared_ptr<ParsedBuffer> parsed_buffer) {
|
||||
if (!parsed_buffer)
|
||||
return;
|
||||
@ -429,8 +430,10 @@ Extractor::ParseOSMData(ScriptingEnvironment &scripting_environment,
|
||||
* processed there.
|
||||
*/
|
||||
util::Log() << "Parse ways and nodes ...";
|
||||
reader.reset(new osmium::io::Reader(input_file, osmium::osm_entity_bits::node | osmium::osm_entity_bits::way,
|
||||
(config.use_metadata ? osmium::io::read_meta::yes : osmium::io::read_meta::no)));
|
||||
reader.reset(new osmium::io::Reader(
|
||||
input_file,
|
||||
osmium::osm_entity_bits::node | osmium::osm_entity_bits::way,
|
||||
(config.use_metadata ? osmium::io::read_meta::yes : osmium::io::read_meta::no)));
|
||||
|
||||
// Number of pipeline tokens that yielded the best speedup was about 1.5 * num_cores
|
||||
tbb::parallel_pipeline(tbb::task_scheduler_init::default_num_threads() * 1.5,
|
||||
|
@ -290,24 +290,18 @@ void Sol2ScriptingEnvironment::InitContext(LuaScriptingContext &context)
|
||||
|
||||
struct RelationMemberWrap
|
||||
{
|
||||
explicit RelationMemberWrap(const osmium::RelationMember & member)
|
||||
{
|
||||
init(member);
|
||||
}
|
||||
explicit RelationMemberWrap(const osmium::RelationMember &member) { init(member); }
|
||||
|
||||
RelationMemberWrap()
|
||||
: item_type(osmium::item_type::undefined)
|
||||
{
|
||||
}
|
||||
RelationMemberWrap() : item_type(osmium::item_type::undefined) {}
|
||||
|
||||
void init(const osmium::RelationMember & member)
|
||||
void init(const osmium::RelationMember &member)
|
||||
{
|
||||
role = member.role();
|
||||
item_type = member.type();
|
||||
id = member.ref();
|
||||
}
|
||||
|
||||
const char* GetRole() const { return role.c_str(); }
|
||||
const char *GetRole() const { return role.c_str(); }
|
||||
osmium::item_type GetItemType() const { return item_type; }
|
||||
osmium::object_id_type GetId() const { return id; }
|
||||
|
||||
@ -319,20 +313,13 @@ void Sol2ScriptingEnvironment::InitContext(LuaScriptingContext &context)
|
||||
};
|
||||
|
||||
context.state.new_usertype<util::OsmIDTyped>(
|
||||
"OsmIDTypes",
|
||||
"id",
|
||||
&util::OsmIDTyped::GetID,
|
||||
"type",
|
||||
&util::OsmIDTyped::GetType
|
||||
);
|
||||
"OsmIDTypes", "id", &util::OsmIDTyped::GetID, "type", &util::OsmIDTyped::GetType);
|
||||
|
||||
context.state.new_usertype<RelationMemberWrap>(
|
||||
"RelationMember",
|
||||
"role",
|
||||
&RelationMemberWrap::GetRole,
|
||||
"item_type",
|
||||
&RelationMemberWrap::GetItemType
|
||||
);
|
||||
context.state.new_usertype<RelationMemberWrap>("RelationMember",
|
||||
"role",
|
||||
&RelationMemberWrap::GetRole,
|
||||
"item_type",
|
||||
&RelationMemberWrap::GetItemType);
|
||||
|
||||
/** TODO: make better solution with members iteration.
|
||||
* For this moment, just make vector of RelationMember wrappers
|
||||
@ -344,14 +331,15 @@ void Sol2ScriptingEnvironment::InitContext(LuaScriptingContext &context)
|
||||
&osmium::Relation::id,
|
||||
"version",
|
||||
&osmium::Relation::version,
|
||||
"members", [](const osmium::Relation &rel)
|
||||
{
|
||||
std::vector<RelationMemberWrap> members(rel.members().size());
|
||||
size_t i = 0;
|
||||
for (const auto & m : rel.members())
|
||||
members[i++].init(m);
|
||||
return sol::as_table(std::move(members));
|
||||
});
|
||||
"members",
|
||||
[](const osmium::Relation &rel) {
|
||||
std::vector<RelationMemberWrap> members(
|
||||
rel.members().size());
|
||||
size_t i = 0;
|
||||
for (const auto &m : rel.members())
|
||||
members[i++].init(m);
|
||||
return sol::as_table(std::move(members));
|
||||
});
|
||||
|
||||
context.state.new_usertype<osmium::Node>("Node",
|
||||
"location",
|
||||
@ -445,34 +433,37 @@ void Sol2ScriptingEnvironment::InitContext(LuaScriptingContext &context)
|
||||
|
||||
struct ExtractionRelationData
|
||||
{
|
||||
explicit ExtractionRelationData(ExtractionRelation::AttributesMap & attrs_)
|
||||
: attrs(attrs_)
|
||||
explicit ExtractionRelationData(ExtractionRelation::AttributesMap &attrs_) : attrs(attrs_)
|
||||
{
|
||||
}
|
||||
|
||||
ExtractionRelation::AttributesMap & attrs;
|
||||
ExtractionRelation::AttributesMap &attrs;
|
||||
};
|
||||
|
||||
context.state.new_usertype<ExtractionRelationData>(
|
||||
"ExtractionRelationData",
|
||||
"size",
|
||||
[](const ExtractionRelationData & data) { return data.attrs.size(); },
|
||||
[](const ExtractionRelationData &data) { return data.attrs.size(); },
|
||||
sol::meta_function::new_index,
|
||||
[](ExtractionRelationData & data, const std::string & key, sol::stack_object object) { return data.attrs[key] = object.as<std::string>(); },
|
||||
[](ExtractionRelationData &data, const std::string &key, sol::stack_object object) {
|
||||
return data.attrs[key] = object.as<std::string>();
|
||||
},
|
||||
sol::meta_function::index,
|
||||
[](ExtractionRelationData & data, const std::string & key) { return data.attrs[key]; }
|
||||
);
|
||||
[](ExtractionRelationData &data, const std::string &key) { return data.attrs[key]; });
|
||||
|
||||
context.state.new_usertype<ExtractionRelation>(
|
||||
"ExtractionRelation",
|
||||
sol::meta_function::new_index,
|
||||
[](ExtractionRelation & rel, const RelationMemberWrap & member) { return ExtractionRelationData(rel.GetMember(member.ref())); },
|
||||
[](ExtractionRelation &rel, const RelationMemberWrap &member) {
|
||||
return ExtractionRelationData(rel.GetMember(member.ref()));
|
||||
},
|
||||
sol::meta_function::index,
|
||||
[](ExtractionRelation & rel, const RelationMemberWrap & member) { return ExtractionRelationData(rel.GetMember(member.ref())); },
|
||||
[](ExtractionRelation &rel, const RelationMemberWrap &member) {
|
||||
return ExtractionRelationData(rel.GetMember(member.ref()));
|
||||
},
|
||||
"restriction",
|
||||
sol::property([](const ExtractionRelation & rel) { return rel.is_restriction; },
|
||||
[](ExtractionRelation & rel, bool flag) { rel.is_restriction = flag; })
|
||||
);
|
||||
sol::property([](const ExtractionRelation &rel) { return rel.is_restriction; },
|
||||
[](ExtractionRelation &rel, bool flag) { rel.is_restriction = flag; }));
|
||||
|
||||
context.state.new_usertype<ExtractionSegment>("ExtractionSegment",
|
||||
"source",
|
||||
@ -565,8 +556,7 @@ void Sol2ScriptingEnvironment::InitContext(LuaScriptingContext &context)
|
||||
util::Log() << "Using profile api version " << context.api_version;
|
||||
|
||||
// version-dependent parts of the api
|
||||
auto initV2Context = [&]()
|
||||
{
|
||||
auto initV2Context = [&]() {
|
||||
// clear global not used in v2
|
||||
context.state["properties"] = sol::nullopt;
|
||||
|
||||
@ -758,7 +748,7 @@ void Sol2ScriptingEnvironment::ProcessElements(
|
||||
(!static_cast<const osmium::Node &>(*entity).tags().empty() ||
|
||||
local_context.properties.call_tagless_node_function))
|
||||
{
|
||||
const osmium::Node & node = static_cast<const osmium::Node &>(*entity);
|
||||
const osmium::Node &node = static_cast<const osmium::Node &>(*entity);
|
||||
const util::OsmIDTyped id(node.id(), std::uint8_t(node.type()));
|
||||
local_context.ProcessNode(node, result_node, relations.Get(id));
|
||||
}
|
||||
@ -769,7 +759,7 @@ void Sol2ScriptingEnvironment::ProcessElements(
|
||||
result_way.clear();
|
||||
if (local_context.has_way_function)
|
||||
{
|
||||
const osmium::Way & way = static_cast<const osmium::Way &>(*entity);
|
||||
const osmium::Way &way = static_cast<const osmium::Way &>(*entity);
|
||||
const util::OsmIDTyped id(way.id(), std::uint8_t(way.type()));
|
||||
local_context.ProcessWay(way, result_way, relations.Get(id));
|
||||
}
|
||||
@ -790,10 +780,13 @@ void Sol2ScriptingEnvironment::ProcessElements(
|
||||
result_relation.clear();
|
||||
if (local_context.has_relation_function)
|
||||
{
|
||||
local_context.ProcessRelation(static_cast<const osmium::Relation &>(*entity), result_relation);
|
||||
local_context.ProcessRelation(static_cast<const osmium::Relation &>(*entity),
|
||||
result_relation);
|
||||
}
|
||||
resulting_relations.push_back(std::pair<const osmium::Relation &, ExtractionRelation>(
|
||||
static_cast<const osmium::Relation &>(*entity), std::move(result_relation)));
|
||||
resulting_relations.push_back(
|
||||
std::pair<const osmium::Relation &, ExtractionRelation>(
|
||||
static_cast<const osmium::Relation &>(*entity),
|
||||
std::move(result_relation)));
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -1012,7 +1005,9 @@ void Sol2ScriptingEnvironment::ProcessSegment(ExtractionSegment &segment)
|
||||
}
|
||||
}
|
||||
|
||||
void LuaScriptingContext::ProcessNode(const osmium::Node &node, ExtractionNode &result, const ExtractionRelationContainer::RelationList &relations)
|
||||
void LuaScriptingContext::ProcessNode(const osmium::Node &node,
|
||||
ExtractionNode &result,
|
||||
const ExtractionRelationContainer::RelationList &relations)
|
||||
{
|
||||
BOOST_ASSERT(state.lua_state() != nullptr);
|
||||
|
||||
@ -1031,7 +1026,9 @@ void LuaScriptingContext::ProcessNode(const osmium::Node &node, ExtractionNode &
|
||||
}
|
||||
}
|
||||
|
||||
void LuaScriptingContext::ProcessWay(const osmium::Way &way, ExtractionWay &result, const ExtractionRelationContainer::RelationList &relations)
|
||||
void LuaScriptingContext::ProcessWay(const osmium::Way &way,
|
||||
ExtractionWay &result,
|
||||
const ExtractionRelationContainer::RelationList &relations)
|
||||
{
|
||||
BOOST_ASSERT(state.lua_state() != nullptr);
|
||||
|
||||
@ -1050,7 +1047,8 @@ void LuaScriptingContext::ProcessWay(const osmium::Way &way, ExtractionWay &resu
|
||||
}
|
||||
}
|
||||
|
||||
void LuaScriptingContext::ProcessRelation(const osmium::Relation &relation, ExtractionRelation &result)
|
||||
void LuaScriptingContext::ProcessRelation(const osmium::Relation &relation,
|
||||
ExtractionRelation &result)
|
||||
{
|
||||
BOOST_ASSERT(state.lua_state() != nullptr);
|
||||
BOOST_ASSERT(api_version > 2);
|
||||
|
@ -34,13 +34,14 @@ class MockScriptingEnvironment : public extractor::ScriptingEnvironment
|
||||
void ProcessTurn(extractor::ExtractionTurn &) override final {}
|
||||
void ProcessSegment(extractor::ExtractionSegment &) override final {}
|
||||
|
||||
void ProcessElements(const osmium::memory::Buffer &,
|
||||
const extractor::RestrictionParser &,
|
||||
const extractor::ExtractionRelationContainer &,
|
||||
std::vector<std::pair<const osmium::Node &, extractor::ExtractionNode>> &,
|
||||
std::vector<std::pair<const osmium::Way &, extractor::ExtractionWay>> &,
|
||||
std::vector<std::pair<const osmium::Relation &, extractor::ExtractionRelation>> &,
|
||||
std::vector<extractor::InputConditionalTurnRestriction> &) override final
|
||||
void ProcessElements(
|
||||
const osmium::memory::Buffer &,
|
||||
const extractor::RestrictionParser &,
|
||||
const extractor::ExtractionRelationContainer &,
|
||||
std::vector<std::pair<const osmium::Node &, extractor::ExtractionNode>> &,
|
||||
std::vector<std::pair<const osmium::Way &, extractor::ExtractionWay>> &,
|
||||
std::vector<std::pair<const osmium::Relation &, extractor::ExtractionRelation>> &,
|
||||
std::vector<extractor::InputConditionalTurnRestriction> &) override final
|
||||
{
|
||||
}
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user