@@ -124,13 +124,19 @@ void parse_osmium_t::stream_file(const std::string &filename, const std::string
124124
125125 fprintf (stderr, " Using %s parser.\n " , osmium::io::as_string (infile.format ()));
126126
127+ m_type = osmium::item_type::node;
127128 osmium::io::Reader reader (infile);
128129 osmium::apply (reader, *this );
129130 reader.close ();
130131}
131132
132133void parse_osmium_t::node (osmium::Node const &node)
133134{
135+ if (m_type != osmium::item_type::node) {
136+ m_type = osmium::item_type::node;
137+ m_data->type_changed ();
138+ }
139+
134140 if (node.deleted ()) {
135141 m_data->node_delete (node.id ());
136142 } else {
@@ -159,6 +165,11 @@ void parse_osmium_t::node(osmium::Node const &node)
159165
160166void parse_osmium_t::way (osmium::Way& way)
161167{
168+ if (m_type != osmium::item_type::way) {
169+ m_type = osmium::item_type::way;
170+ m_data->type_changed ();
171+ }
172+
162173 if (way.deleted ()) {
163174 m_data->way_delete (way.id ());
164175 } else {
@@ -173,6 +184,11 @@ void parse_osmium_t::way(osmium::Way& way)
173184
174185void parse_osmium_t::relation (osmium::Relation const &rel)
175186{
187+ if (m_type != osmium::item_type::relation) {
188+ m_type = osmium::item_type::relation;
189+ m_data->type_changed ();
190+ }
191+
176192 if (rel.deleted ()) {
177193 m_data->relation_delete (rel.id ());
178194 } else {
0 commit comments