1#ifndef OSMIUM_HANDLER_CHAIN_HPP
2#define OSMIUM_HANDLER_CHAIN_HPP
40#define OSMIUM_CHAIN_HANDLER_CALL(_func_, _type_) \
41 template <int N, int SIZE, typename THandlers> \
42 struct call_ ## _func_ { \
43 void operator()(THandlers& handlers, osmium::_type_& object) { \
44 std::get<N>(handlers)._func_(object); \
45 call_ ## _func_<N+1, SIZE, THandlers>()(handlers, object); \
48 template <int SIZE, typename THandlers> \
49 struct call_ ## _func_<SIZE, SIZE, THandlers> { \
50 void operator()(THandlers&, osmium::_type_&) {} \
67 template <
typename... THandler>
73 template <
int N,
int SIZE,
typename THandlers>
76 std::get<N>(handlers).flush();
81 template <
int SIZE,
typename THandlers>
#define OSMIUM_CHAIN_HANDLER_CALL(_func_, _type_)
Definition chain.hpp:40
An OSM Changeset, a group of changes made by a single user over a short period of time.
Definition changeset.hpp:146
Definition relation.hpp:161
void relation(osmium::Relation &relation)
Definition chain.hpp:106
void way(osmium::Way &way)
Definition chain.hpp:102
void changeset(osmium::Changeset &changeset)
Definition chain.hpp:110
ChainHandler(THandler &... handlers)
Definition chain.hpp:94
void node(osmium::Node &node)
Definition chain.hpp:98
handlers_type m_handlers
Definition chain.hpp:71
std::tuple< THandler &... > handlers_type
Definition chain.hpp:70
void area(osmium::Area &area)
Definition chain.hpp:114
void flush()
Definition chain.hpp:118
Definition handler.hpp:71
Code related to the building of areas (multipolygons) from relations.
Definition assembler.hpp:55
Namespace for everything in the Osmium library.
Definition assembler.hpp:53
@ relation
Definition item_type.hpp:50
@ node
Definition item_type.hpp:48
@ changeset
Definition item_type.hpp:52
@ way
Definition item_type.hpp:49
void operator()(THandlers &)
Definition chain.hpp:83
void operator()(THandlers &handlers)
Definition chain.hpp:75