@@ -25,8 +25,9 @@ class BaseHandler : public osmium::handler::Handler {
2525 };
2626
2727public:
28+ virtual void apply_start () {};
2829// handler functions
29- virtual void node (const osmium::Node&)= 0;
30+ virtual void node (const osmium::Node&) = 0;
3031virtual void way (const osmium::Way&) = 0;
3132virtual void relation (const osmium::Relation&) = 0;
3233virtual void changeset (const osmium::Changeset&) = 0;
@@ -163,14 +164,7 @@ struct SimpleHandlerWrap: BaseHandler, wrapper<BaseHandler> {
163164 apply_object (osmium::io::File (cbuf, len, cfmt), locations, idx);
164165 }
165166
166- private:
167- void apply_object (osmium::io::File file, bool locations, const std::string &idx)
168- {
169- osmium::osm_entity_bits::type entities = osmium::osm_entity_bits::nothing;
170- BaseHandler::pre_handler handler = locations?
171- BaseHandler::location_handler
172- :BaseHandler::no_handler;
173-
167+ void apply_start () override {
174168 m_callbacks = osmium::osm_entity_bits::nothing;
175169 if (hasfunc (" node" ))
176170 m_callbacks |= osmium::osm_entity_bits::node;
@@ -182,6 +176,18 @@ struct SimpleHandlerWrap: BaseHandler, wrapper<BaseHandler> {
182176 m_callbacks |= osmium::osm_entity_bits::area;
183177 if (hasfunc (" changeset" ))
184178 m_callbacks |= osmium::osm_entity_bits::changeset;
179+ }
180+
181+
182+ private:
183+ void apply_object (osmium::io::File file, bool locations, const std::string &idx)
184+ {
185+ osmium::osm_entity_bits::type entities = osmium::osm_entity_bits::nothing;
186+ BaseHandler::pre_handler handler = locations?
187+ BaseHandler::location_handler
188+ :BaseHandler::no_handler;
189+
190+ apply_start ();
185191
186192 if (m_callbacks & osmium::osm_entity_bits::area)
187193 {
@@ -202,6 +208,7 @@ struct SimpleHandlerWrap: BaseHandler, wrapper<BaseHandler> {
202208 apply (file, entities, handler, idx);
203209 }
204210
211+
205212 bool hasfunc (char const *name) {
206213 reference_existing_object::apply<SimpleHandlerWrap*>::type converter;
207214 PyObject* obj = converter ( this );
0 commit comments