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
Namespace for everything in the Osmium library.
Definition: assembler.hpp:53
void operator()(THandlers &)
Definition: chain.hpp:83
void operator()(THandlers &handlers)
Definition: chain.hpp:75