Skip to content

Commit 80301bd

Browse files
authored
Merge pull request #1344 from joto/remove-id-tracker
Remove id-tracker, use libosmiums IdSet instead
2 parents aa9d1b5 + 9d11e2b commit 80301bd

5 files changed

Lines changed: 18 additions & 260 deletions

File tree

src/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ set(osm2pgsql_lib_SOURCES
66
expire-tiles.cpp
77
gazetteer-style.cpp
88
geometry-processor.cpp
9-
id-tracker.cpp
109
input-handler.cpp
1110
logging.cpp
1211
middle-pgsql.cpp

src/dependency-manager.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,29 @@
22
#include "dependency-manager.hpp"
33
#include "middle.hpp"
44

5+
#include <algorithm>
6+
#include <iterator>
7+
58
void full_dependency_manager_t::node_changed(osmid_t id)
69
{
710
for (auto const way_id : m_object_store->get_ways_by_node(id)) {
811
way_changed(way_id);
9-
m_ways_pending_tracker.mark(way_id);
12+
m_ways_pending_tracker.set(way_id);
1013
}
1114

1215
for (auto const rel_id : m_object_store->get_rels_by_node(id)) {
13-
m_rels_pending_tracker.mark(rel_id);
16+
m_rels_pending_tracker.set(rel_id);
1417
}
1518
}
1619

1720
void full_dependency_manager_t::way_changed(osmid_t id)
1821
{
19-
if (m_ways_pending_tracker.is_marked(id)) {
22+
if (m_ways_pending_tracker.get(id)) {
2023
return;
2124
}
2225

2326
for (auto const rel_id : m_object_store->get_rels_by_way(id)) {
24-
m_rels_pending_tracker.mark(rel_id);
27+
m_rels_pending_tracker.set(rel_id);
2528
}
2629
}
2730

@@ -30,15 +33,16 @@ bool full_dependency_manager_t::has_pending() const noexcept
3033
return !m_ways_pending_tracker.empty() || !m_rels_pending_tracker.empty();
3134
}
3235

33-
idlist_t full_dependency_manager_t::get_ids(id_tracker &tracker)
36+
idlist_t full_dependency_manager_t::get_ids(osmium::index::IdSetSmall<osmid_t> &tracker)
3437
{
38+
tracker.sort_unique();
39+
3540
idlist_t list;
3641
list.reserve(tracker.size());
3742

38-
osmid_t id;
39-
while (id_tracker::is_valid(id = tracker.pop_mark())) {
40-
list.push_back(id);
41-
}
43+
std::copy(tracker.cbegin(), tracker.cend(), std::back_inserter(list));
44+
45+
tracker.clear();
4246

4347
return list;
4448
}

src/dependency-manager.hpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
#ifndef OSM2PGSQL_DEPENDENCY_MANAGER_HPP
22
#define OSM2PGSQL_DEPENDENCY_MANAGER_HPP
33

4-
#include "id-tracker.hpp"
54
#include "osmtypes.hpp"
65

6+
#include <osmium/index/id_set.hpp>
7+
78
#include <cassert>
89
#include <memory>
910

@@ -97,12 +98,12 @@ class full_dependency_manager_t : public dependency_manager_t
9798
}
9899

99100
private:
100-
static idlist_t get_ids(id_tracker &tracker);
101+
static idlist_t get_ids(osmium::index::IdSetSmall<osmid_t> &tracker);
101102

102103
std::shared_ptr<middle_t> m_object_store;
103104

104-
id_tracker m_ways_pending_tracker;
105-
id_tracker m_rels_pending_tracker;
105+
osmium::index::IdSetSmall<osmid_t> m_ways_pending_tracker;
106+
osmium::index::IdSetSmall<osmid_t> m_rels_pending_tracker;
106107
};
107108

108109
#endif // OSM2PGSQL_DEPENDENCY_MANAGER_HPP

src/id-tracker.cpp

Lines changed: 0 additions & 194 deletions
This file was deleted.

src/id-tracker.hpp

Lines changed: 0 additions & 52 deletions
This file was deleted.

0 commit comments

Comments
 (0)