1313
1414output_multi_t ::output_multi_t (std::string const &name,
1515 std::shared_ptr<geometry_processor> processor_,
16- export_list const &export_list_ ,
16+ export_list const &export_list ,
1717 std::shared_ptr<middle_query_t > const &mid,
1818 options_t const &options)
1919: output_t (mid, options),
20- m_tagtransform (tagtransform_t ::make_tagtransform(&m_options)),
21- m_export_list(new export_list(export_list_)), m_processor(processor_),
22- m_proj(m_options.projection),
20+ m_tagtransform (tagtransform_t ::make_tagtransform(&m_options, export_list)),
21+ m_processor(processor_), m_proj(m_options.projection),
2322 // TODO: we could in fact have something that is interested in nodes and
2423 // ways..
2524 m_osm_type(m_processor->interests (geometry_processor::interest_node)
2625 ? osmium::item_type::node
2726 : osmium::item_type::way),
2827 m_table(new table_t (
2928 m_options.database_options.conninfo(), name, m_processor->column_type(),
30- m_export_list-> normal_columns(m_osm_type), m_options.hstore_columns,
29+ export_list. normal_columns(m_osm_type), m_options.hstore_columns,
3130 m_processor->srid(), m_options.append, m_options.slim, m_options.droptemp,
3231 m_options.hstore_mode, m_options.enable_hstore_index,
3332 m_options.tblsmain_data, m_options.tblsmain_index)),
@@ -36,15 +35,14 @@ output_multi_t::output_multi_t(std::string const &name,
3635 m_options.projection),
3736 buffer(1024 , osmium::memory::Buffer::auto_grow::yes),
3837 m_builder(m_options.projection, m_options.enable_multi),
39- m_way_area(m_export_list-> has_column (m_osm_type, " way_area" ))
38+ m_way_area(export_list. has_column(m_osm_type, " way_area" ))
4039{
4140}
4241
4342output_multi_t ::output_multi_t (output_multi_t const *other,
4443 std::shared_ptr<middle_query_t > const &mid)
4544: output_t(mid, other->m_options),
46- m_tagtransform(tagtransform_t ::make_tagtransform(&m_options)),
47- m_export_list(new export_list(*other->m_export_list)),
45+ m_tagtransform(other->m_tagtransform->clone ()),
4846 m_processor(other->m_processor), m_proj(other->m_proj),
4947 m_osm_type(other->m_osm_type), m_table(new table_t (*other->m_table)),
5048 // NOTE: we need to know which ways were used by relations so each thread
@@ -284,8 +282,7 @@ int output_multi_t::process_node(osmium::Node const &node)
284282{
285283 // check if we are keeping this node
286284 taglist_t outtags;
287- auto filter = m_tagtransform->filter_tags (node, 0 , 0 , *m_export_list.get (),
288- outtags, true );
285+ auto filter = m_tagtransform->filter_tags (node, 0 , 0 , outtags, true );
289286 if (!filter) {
290287 // grab its geom
291288 auto geom = m_processor->process_node (node.location (), &m_builder);
@@ -312,8 +309,8 @@ int output_multi_t::reprocess_way(osmium::Way *way, bool exists)
312309
313310 // check if we are keeping this way
314311 taglist_t outtags;
315- unsigned int filter = m_tagtransform-> filter_tags (
316- *way, 0 , 0 , *m_export_list. get () , outtags, true );
312+ unsigned int filter =
313+ m_tagtransform-> filter_tags ( *way, 0 , 0 , outtags, true );
317314 if (!filter) {
318315 m_mid->nodes_get_list (&(way->nodes ()));
319316 auto geom = m_processor->process_way (*way, &m_builder);
@@ -327,7 +324,7 @@ int output_multi_t::reprocess_way(osmium::Way *way, bool exists)
327324int output_multi_t::process_way (osmium::Way *way) {
328325 // check if we are keeping this way
329326 taglist_t outtags;
330- auto filter = m_tagtransform->filter_tags (*way, 0 , 0 , *m_export_list. get (), outtags, true );
327+ auto filter = m_tagtransform->filter_tags (*way, 0 , 0 , outtags, true );
331328 if (!filter) {
332329 // get the geom from the middle
333330 if (m_mid->nodes_get_list (&(way->nodes ())) < 1 )
@@ -358,8 +355,7 @@ int output_multi_t::process_relation(osmium::Relation const &rel, bool exists)
358355
359356 // does this relation have anything interesting to us
360357 taglist_t rel_outtags;
361- auto filter = m_tagtransform->filter_tags (rel, 0 , 0 , *m_export_list.get (),
362- rel_outtags, true );
358+ auto filter = m_tagtransform->filter_tags (rel, 0 , 0 , rel_outtags, true );
363359 if (!filter) {
364360 // TODO: move this into geometry processor, figure a way to come back for tag transform
365361 // grab ways/nodes of the members in the relation, bail if none were used
@@ -377,8 +373,7 @@ int output_multi_t::process_relation(osmium::Relation const &rel, bool exists)
377373 taglist_t outtags;
378374 filter = m_tagtransform->filter_rel_member_tags (
379375 rel_outtags, m_relation_helper.data , m_relation_helper.roles ,
380- &make_boundary, &make_polygon, &roads, *m_export_list.get (),
381- outtags, true );
376+ &make_boundary, &make_polygon, &roads, outtags, true );
382377 if (!filter)
383378 {
384379 m_relation_helper.add_way_locations (m_mid.get ());
0 commit comments