Skip to content

Commit 5543e7c

Browse files
committed
Revert "Open writer in getid command earlier"
This reverts commit c75d01a. Too complicated, there is a better solution using set_header()
1 parent 6f4942d commit 5543e7c

File tree

2 files changed

+9
-30
lines changed

2 files changed

+9
-30
lines changed

src/command_getid.cpp

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
4242
#include <cstddef>
4343
#include <fstream>
4444
#include <iostream>
45-
#include <memory>
4645
#include <string>
4746
#include <vector>
4847

@@ -246,7 +245,6 @@ bool CommandGetId::find_relations_in_relations() {
246245
osmium::index::RelationsMapStash stash;
247246

248247
osmium::io::Reader reader{m_input_file, osmium::osm_entity_bits::relation, osmium::io::read_meta::no};
249-
open_writer(reader);
250248
while (osmium::memory::Buffer buffer = reader.read()) {
251249
for (const auto& relation : buffer.select<osmium::Relation>()) {
252250
for (const auto& member : relation.members()) {
@@ -280,7 +278,6 @@ void CommandGetId::find_nodes_and_ways_in_relations() {
280278
m_vout << " Reading input file to find nodes/ways in relations...\n";
281279

282280
osmium::io::Reader reader{m_input_file, osmium::osm_entity_bits::relation, osmium::io::read_meta::no};
283-
open_writer(reader);
284281
while (osmium::memory::Buffer buffer = reader.read()) {
285282
for (const auto& relation : buffer.select<osmium::Relation>()) {
286283
if (m_ids(osmium::item_type::relation).get(relation.positive_id())) {
@@ -301,7 +298,6 @@ void CommandGetId::find_nodes_in_ways() {
301298
m_vout << " Reading input file to find nodes in ways...\n";
302299

303300
osmium::io::Reader reader{m_input_file, osmium::osm_entity_bits::way, osmium::io::read_meta::no};
304-
open_writer(reader);
305301
while (osmium::memory::Buffer buffer = reader.read()) {
306302
for (const auto& way : buffer.select<osmium::Way>()) {
307303
if (m_ids(osmium::item_type::way).get(way.positive_id())) {
@@ -336,25 +332,19 @@ void CommandGetId::find_referenced_objects() {
336332
m_vout << "Done following references.\n";
337333
}
338334

339-
void CommandGetId::open_writer(osmium::io::Reader& reader) {
340-
if (m_writer) {
341-
return;
342-
}
343-
344-
m_vout << "Opening output file...\n";
345-
osmium::io::Header header{reader.header()};
346-
setup_header(header);
347-
m_writer = std::make_unique<osmium::io::Writer>(m_output_file, header, m_output_overwrite, m_fsync);
348-
}
349-
350335
bool CommandGetId::run() {
351336
if (m_add_referenced_objects) {
352337
find_referenced_objects();
353338
}
354339

355340
m_vout << "Opening input file...\n";
356341
osmium::io::Reader reader{m_input_file, get_needed_types()};
357-
open_writer(reader);
342+
343+
m_vout << "Opening output file...\n";
344+
osmium::io::Header header{reader.header()};
345+
setup_header(header);
346+
347+
osmium::io::Writer writer{m_output_file, header, m_output_overwrite, m_fsync};
358348

359349
m_vout << "Copying matching objects to output file...\n";
360350
osmium::ProgressBar progress_bar{reader.file_size(), display_progress()};
@@ -365,22 +355,22 @@ bool CommandGetId::run() {
365355
if (!m_work_with_history) {
366356
m_ids(object.type()).unset(object.positive_id());
367357
}
368-
writer()(object);
358+
writer(object);
369359
} else if (m_ids(object.type()).get(object.positive_id())) {
370360
if (!m_work_with_history) {
371361
m_ids(object.type()).unset(object.positive_id());
372362
}
373363
if (m_remove_tags) {
374364
object.remove_tags();
375365
}
376-
writer()(object);
366+
writer(object);
377367
}
378368
}
379369
}
380370
progress_bar.done();
381371

382372
m_vout << "Closing output file...\n";
383-
writer().close();
373+
writer.close();
384374

385375
m_vout << "Closing input file...\n";
386376
reader.close();

src/command_getid.hpp

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,22 +29,17 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
2929
#include <osmium/index/id_set.hpp>
3030
#include <osmium/index/nwr_array.hpp>
3131
#include <osmium/index/relations_map.hpp>
32-
#include <osmium/io/reader.hpp>
33-
#include <osmium/io/writer.hpp>
3432
#include <osmium/osm/entity_bits.hpp>
3533
#include <osmium/osm/item_type.hpp>
3634
#include <osmium/osm/types.hpp>
3735

3836
#include <cstddef>
3937
#include <iosfwd>
40-
#include <memory>
4138
#include <string>
4239
#include <vector>
4340

4441
class CommandGetId : public CommandWithSingleOSMInput, public with_osm_output {
4542

46-
std::unique_ptr<osmium::io::Writer> m_writer;
47-
4843
osmium::nwr_array<osmium::index::IdSetDense<osmium::unsigned_object_id_type>> m_matching_ids;
4944
osmium::nwr_array<osmium::index::IdSetDense<osmium::unsigned_object_id_type>> m_ids;
5045

@@ -58,12 +53,6 @@ class CommandGetId : public CommandWithSingleOSMInput, public with_osm_output {
5853
osmium::osm_entity_bits::type get_needed_types() const;
5954
std::size_t count_ids() const noexcept;
6055

61-
void open_writer(osmium::io::Reader& reader);
62-
63-
osmium::io::Writer& writer() {
64-
return *m_writer;
65-
}
66-
6756
void find_referenced_objects();
6857

6958
void mark_rel_ids(const osmium::index::RelationsMapIndex& rel_in_rel, osmium::unsigned_object_id_type parent_id);

0 commit comments

Comments
 (0)