Apply clang format

This commit is contained in:
Denis Koronchik 2017-09-01 16:55:00 +03:00 committed by Michael Krasnyk
parent 580c5e39ae
commit c2fd64d3cc
8 changed files with 105 additions and 114 deletions

View File

@ -14,10 +14,7 @@ namespace extractor
namespace detail namespace detail
{ {
inline const char * checkedString(const char * str) inline const char *checkedString(const char *str) { return str ? str : ""; }
{
return str ? str : "";
}
} // namespace detail } // namespace detail
@ -25,10 +22,7 @@ struct ExtractionRelation
{ {
using AttributesMap = std::unordered_map<std::string, std::string>; using AttributesMap = std::unordered_map<std::string, std::string>;
ExtractionRelation() ExtractionRelation() : is_restriction(false) {}
: is_restriction(false)
{
}
void clear() void clear()
{ {
@ -36,15 +30,9 @@ struct ExtractionRelation
values.clear(); values.clear();
} }
bool IsRestriction() const bool IsRestriction() const { return is_restriction; }
{
return is_restriction;
}
AttributesMap & GetMember(util::OsmIDTyped id) AttributesMap &GetMember(util::OsmIDTyped id) { return values[id.Hash()]; }
{
return values[id.Hash()];
}
bool is_restriction; bool is_restriction;
std::unordered_map<util::OsmIDTyped::HashType, AttributesMap> values; 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 // It contains data of all parsed relations for each node/way element
class ExtractionRelationContainer class ExtractionRelationContainer
{ {
public: public:
using AttributesMap = ExtractionRelation::AttributesMap; using AttributesMap = ExtractionRelation::AttributesMap;
using RelationList = std::vector<AttributesMap>; using RelationList = std::vector<AttributesMap>;
void AddRelation(const ExtractionRelation & rel) void AddRelation(const ExtractionRelation &rel)
{ {
BOOST_ASSERT(!rel.is_restriction); BOOST_ASSERT(!rel.is_restriction);
for (auto it : rel.values) for (auto it : rel.values)
data[it.first].push_back(it.second); 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()); const auto it = data.find(id.Hash());
if (it != data.end()) if (it != data.end())
@ -74,7 +62,7 @@ public:
return empty; return empty;
} }
private: private:
// TODO: need to store more common data // TODO: need to store more common data
std::unordered_map<util::OsmIDTyped::HashType, RelationList> data; std::unordered_map<util::OsmIDTyped::HashType, RelationList> data;
}; };

View File

@ -90,7 +90,6 @@ class ExtractorCallbacks
// warning: caller needs to take care of synchronization! // warning: caller needs to take care of synchronization!
void ProcessWay(const osmium::Way &current_way, const ExtractionWay &result_way); void ProcessWay(const osmium::Way &current_way, const ExtractionWay &result_way);
}; };
} }
} }

View File

@ -62,14 +62,14 @@ class ScriptingEnvironment
virtual void ProcessTurn(ExtractionTurn &turn) = 0; virtual void ProcessTurn(ExtractionTurn &turn) = 0;
virtual void ProcessSegment(ExtractionSegment &segment) = 0; virtual void ProcessSegment(ExtractionSegment &segment) = 0;
virtual void virtual void ProcessElements(
ProcessElements(const osmium::memory::Buffer &buffer, const osmium::memory::Buffer &buffer,
const RestrictionParser &restriction_parser, const RestrictionParser &restriction_parser,
const ExtractionRelationContainer &relations, const ExtractionRelationContainer &relations,
std::vector<std::pair<const osmium::Node &, ExtractionNode>> &resulting_nodes, 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::Way &, ExtractionWay>> &resulting_ways,
std::vector<std::pair<const osmium::Relation &, ExtractionRelation>> &resulting_relations, std::vector<std::pair<const osmium::Relation &, ExtractionRelation>> &resulting_relations,
std::vector<InputConditionalTurnRestriction> &resulting_restrictions) = 0; std::vector<InputConditionalTurnRestriction> &resulting_restrictions) = 0;
}; };
} }
} }

View File

@ -1,9 +1,9 @@
#ifndef SCRIPTING_ENVIRONMENT_LUA_HPP #ifndef SCRIPTING_ENVIRONMENT_LUA_HPP
#define SCRIPTING_ENVIRONMENT_LUA_HPP #define SCRIPTING_ENVIRONMENT_LUA_HPP
#include "extractor/extraction_relation.hpp"
#include "extractor/raster_source.hpp" #include "extractor/raster_source.hpp"
#include "extractor/scripting_environment.hpp" #include "extractor/scripting_environment.hpp"
#include "extractor/extraction_relation.hpp"
#include <tbb/enumerable_thread_specific.h> #include <tbb/enumerable_thread_specific.h>
@ -20,8 +20,12 @@ namespace extractor
struct LuaScriptingContext final struct LuaScriptingContext final
{ {
void ProcessNode(const osmium::Node &, ExtractionNode &result, const ExtractionRelationContainer::RelationList &relations); void ProcessNode(const osmium::Node &,
void ProcessWay(const osmium::Way &, ExtractionWay &result, const ExtractionRelationContainer::RelationList &relations); ExtractionNode &result,
const ExtractionRelationContainer::RelationList &relations);
void ProcessWay(const osmium::Way &,
ExtractionWay &result,
const ExtractionRelationContainer::RelationList &relations);
void ProcessRelation(const osmium::Relation &, ExtractionRelation &result); void ProcessRelation(const osmium::Relation &, ExtractionRelation &result);
ProfileProperties properties; ProfileProperties properties;
@ -69,14 +73,14 @@ class Sol2ScriptingEnvironment final : public ScriptingEnvironment
void ProcessTurn(ExtractionTurn &turn) override; void ProcessTurn(ExtractionTurn &turn) override;
void ProcessSegment(ExtractionSegment &segment) override; void ProcessSegment(ExtractionSegment &segment) override;
void void ProcessElements(
ProcessElements(const osmium::memory::Buffer &buffer, const osmium::memory::Buffer &buffer,
const RestrictionParser &restriction_parser, const RestrictionParser &restriction_parser,
const ExtractionRelationContainer &relations, const ExtractionRelationContainer &relations,
std::vector<std::pair<const osmium::Node &, ExtractionNode>> &resulting_nodes, 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::Way &, ExtractionWay>> &resulting_ways,
std::vector<std::pair<const osmium::Relation &, ExtractionRelation>> &resulting_relations, std::vector<std::pair<const osmium::Relation &, ExtractionRelation>> &resulting_relations,
std::vector<InputConditionalTurnRestriction> &resulting_restrictions) override; std::vector<InputConditionalTurnRestriction> &resulting_restrictions) override;
private: private:
LuaScriptingContext &GetSol2Context(); LuaScriptingContext &GetSol2Context();

View File

@ -10,26 +10,24 @@ namespace util
class OsmIDTyped class OsmIDTyped
{ {
public: public:
using HashType = std::uint64_t; using HashType = std::uint64_t;
OsmIDTyped(std::uint64_t id_, std::uint8_t type_) OsmIDTyped(std::uint64_t id_, std::uint8_t type_) : id(id_), type(type_)
: id(id_)
, type(type_)
{ {
// check if type value not above type size bound // check if type value not above type size bound
BOOST_ASSERT(id_ < (std::uint64_t(1) << 56)); 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); } inline HashType Hash() const { return (std::uint64_t(id) | std::uint64_t(type) << 56); }
std::uint64_t GetID() const { return id; } std::uint64_t GetID() const { return id; }
std::uint8_t GetType() const { return type; } std::uint8_t GetType() const { return type; }
private: private:
std::uint64_t id : 56; std::uint64_t id : 56;
std::uint8_t type; std::uint8_t type;
}; };

View File

@ -3,8 +3,8 @@
#include "extractor/edge_based_edge.hpp" #include "extractor/edge_based_edge.hpp"
#include "extractor/extraction_containers.hpp" #include "extractor/extraction_containers.hpp"
#include "extractor/extraction_node.hpp" #include "extractor/extraction_node.hpp"
#include "extractor/extraction_way.hpp"
#include "extractor/extraction_relation.hpp" #include "extractor/extraction_relation.hpp"
#include "extractor/extraction_way.hpp"
#include "extractor/extractor_callbacks.hpp" #include "extractor/extractor_callbacks.hpp"
#include "extractor/files.hpp" #include "extractor/files.hpp"
#include "extractor/raster_source.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()); const osmium::io::File input_file(config.input_path.string());
osmium::thread::Pool pool(number_of_threads); osmium::thread::Pool pool(number_of_threads);
std::unique_ptr<osmium::io::Reader> reader( std::unique_ptr<osmium::io::Reader> reader(new osmium::io::Reader(
new osmium::io::Reader(input_file, osmium::osm_entity_bits::relation, input_file,
(config.use_metadata ? osmium::io::read_meta::yes : osmium::io::read_meta::no))); osmium::osm_entity_bits::relation,
(config.use_metadata ? osmium::io::read_meta::yes : osmium::io::read_meta::no)));
osmium::io::Header header = reader->header(); 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) { tbb::filter::serial_in_order, [&](const std::shared_ptr<ParsedBuffer> parsed_buffer) {
if (!parsed_buffer) if (!parsed_buffer)
return; return;
@ -429,8 +430,10 @@ Extractor::ParseOSMData(ScriptingEnvironment &scripting_environment,
* processed there. * processed there.
*/ */
util::Log() << "Parse ways and nodes ..."; util::Log() << "Parse ways and nodes ...";
reader.reset(new osmium::io::Reader(input_file, osmium::osm_entity_bits::node | osmium::osm_entity_bits::way, reader.reset(new osmium::io::Reader(
(config.use_metadata ? osmium::io::read_meta::yes : osmium::io::read_meta::no))); 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 // 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, tbb::parallel_pipeline(tbb::task_scheduler_init::default_num_threads() * 1.5,

View File

@ -290,24 +290,18 @@ void Sol2ScriptingEnvironment::InitContext(LuaScriptingContext &context)
struct RelationMemberWrap struct RelationMemberWrap
{ {
explicit RelationMemberWrap(const osmium::RelationMember & member) explicit RelationMemberWrap(const osmium::RelationMember &member) { init(member); }
{
init(member);
}
RelationMemberWrap() RelationMemberWrap() : item_type(osmium::item_type::undefined) {}
: item_type(osmium::item_type::undefined)
{
}
void init(const osmium::RelationMember & member) void init(const osmium::RelationMember &member)
{ {
role = member.role(); role = member.role();
item_type = member.type(); item_type = member.type();
id = member.ref(); 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::item_type GetItemType() const { return item_type; }
osmium::object_id_type GetId() const { return id; } osmium::object_id_type GetId() const { return id; }
@ -319,20 +313,13 @@ void Sol2ScriptingEnvironment::InitContext(LuaScriptingContext &context)
}; };
context.state.new_usertype<util::OsmIDTyped>( context.state.new_usertype<util::OsmIDTyped>(
"OsmIDTypes", "OsmIDTypes", "id", &util::OsmIDTyped::GetID, "type", &util::OsmIDTyped::GetType);
"id",
&util::OsmIDTyped::GetID,
"type",
&util::OsmIDTyped::GetType
);
context.state.new_usertype<RelationMemberWrap>( context.state.new_usertype<RelationMemberWrap>("RelationMember",
"RelationMember", "role",
"role", &RelationMemberWrap::GetRole,
&RelationMemberWrap::GetRole, "item_type",
"item_type", &RelationMemberWrap::GetItemType);
&RelationMemberWrap::GetItemType
);
/** TODO: make better solution with members iteration. /** TODO: make better solution with members iteration.
* For this moment, just make vector of RelationMember wrappers * For this moment, just make vector of RelationMember wrappers
@ -344,14 +331,15 @@ void Sol2ScriptingEnvironment::InitContext(LuaScriptingContext &context)
&osmium::Relation::id, &osmium::Relation::id,
"version", "version",
&osmium::Relation::version, &osmium::Relation::version,
"members", [](const osmium::Relation &rel) "members",
{ [](const osmium::Relation &rel) {
std::vector<RelationMemberWrap> members(rel.members().size()); std::vector<RelationMemberWrap> members(
size_t i = 0; rel.members().size());
for (const auto & m : rel.members()) size_t i = 0;
members[i++].init(m); for (const auto &m : rel.members())
return sol::as_table(std::move(members)); members[i++].init(m);
}); return sol::as_table(std::move(members));
});
context.state.new_usertype<osmium::Node>("Node", context.state.new_usertype<osmium::Node>("Node",
"location", "location",
@ -445,34 +433,37 @@ void Sol2ScriptingEnvironment::InitContext(LuaScriptingContext &context)
struct ExtractionRelationData struct ExtractionRelationData
{ {
explicit ExtractionRelationData(ExtractionRelation::AttributesMap & attrs_) explicit ExtractionRelationData(ExtractionRelation::AttributesMap &attrs_) : attrs(attrs_)
: attrs(attrs_)
{ {
} }
ExtractionRelation::AttributesMap & attrs; ExtractionRelation::AttributesMap &attrs;
}; };
context.state.new_usertype<ExtractionRelationData>( context.state.new_usertype<ExtractionRelationData>(
"ExtractionRelationData", "ExtractionRelationData",
"size", "size",
[](const ExtractionRelationData & data) { return data.attrs.size(); }, [](const ExtractionRelationData &data) { return data.attrs.size(); },
sol::meta_function::new_index, 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, 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>( context.state.new_usertype<ExtractionRelation>(
"ExtractionRelation", "ExtractionRelation",
sol::meta_function::new_index, 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, 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", "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; }));
);
context.state.new_usertype<ExtractionSegment>("ExtractionSegment", context.state.new_usertype<ExtractionSegment>("ExtractionSegment",
"source", "source",
@ -565,8 +556,7 @@ void Sol2ScriptingEnvironment::InitContext(LuaScriptingContext &context)
util::Log() << "Using profile api version " << context.api_version; util::Log() << "Using profile api version " << context.api_version;
// version-dependent parts of the api // version-dependent parts of the api
auto initV2Context = [&]() auto initV2Context = [&]() {
{
// clear global not used in v2 // clear global not used in v2
context.state["properties"] = sol::nullopt; context.state["properties"] = sol::nullopt;
@ -758,7 +748,7 @@ void Sol2ScriptingEnvironment::ProcessElements(
(!static_cast<const osmium::Node &>(*entity).tags().empty() || (!static_cast<const osmium::Node &>(*entity).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 osmium::Node &node = static_cast<const osmium::Node &>(*entity);
const util::OsmIDTyped id(node.id(), std::uint8_t(node.type())); const util::OsmIDTyped id(node.id(), std::uint8_t(node.type()));
local_context.ProcessNode(node, result_node, relations.Get(id)); local_context.ProcessNode(node, result_node, relations.Get(id));
} }
@ -769,7 +759,7 @@ void Sol2ScriptingEnvironment::ProcessElements(
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 osmium::Way &way = static_cast<const osmium::Way &>(*entity);
const util::OsmIDTyped id(way.id(), std::uint8_t(way.type())); const util::OsmIDTyped id(way.id(), std::uint8_t(way.type()));
local_context.ProcessWay(way, result_way, relations.Get(id)); local_context.ProcessWay(way, result_way, relations.Get(id));
} }
@ -790,10 +780,13 @@ 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), result_relation); local_context.ProcessRelation(static_cast<const osmium::Relation &>(*entity),
result_relation);
} }
resulting_relations.push_back(std::pair<const osmium::Relation &, ExtractionRelation>( resulting_relations.push_back(
static_cast<const osmium::Relation &>(*entity), std::move(result_relation))); std::pair<const osmium::Relation &, ExtractionRelation>(
static_cast<const osmium::Relation &>(*entity),
std::move(result_relation)));
} }
} }
break; 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); 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); 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(state.lua_state() != nullptr);
BOOST_ASSERT(api_version > 2); BOOST_ASSERT(api_version > 2);

View File

@ -34,13 +34,14 @@ class MockScriptingEnvironment : public extractor::ScriptingEnvironment
void ProcessTurn(extractor::ExtractionTurn &) override final {} void ProcessTurn(extractor::ExtractionTurn &) override final {}
void ProcessSegment(extractor::ExtractionSegment &) override final {} void ProcessSegment(extractor::ExtractionSegment &) override final {}
void ProcessElements(const osmium::memory::Buffer &, void ProcessElements(
const extractor::RestrictionParser &, const osmium::memory::Buffer &,
const extractor::ExtractionRelationContainer &, const extractor::RestrictionParser &,
std::vector<std::pair<const osmium::Node &, extractor::ExtractionNode>> &, const extractor::ExtractionRelationContainer &,
std::vector<std::pair<const osmium::Way &, extractor::ExtractionWay>> &, std::vector<std::pair<const osmium::Node &, extractor::ExtractionNode>> &,
std::vector<std::pair<const osmium::Relation &, extractor::ExtractionRelation>> &, std::vector<std::pair<const osmium::Way &, extractor::ExtractionWay>> &,
std::vector<extractor::InputConditionalTurnRestriction> &) override final std::vector<std::pair<const osmium::Relation &, extractor::ExtractionRelation>> &,
std::vector<extractor::InputConditionalTurnRestriction> &) override final
{ {
} }
}; };