Skip to content

Commit de6628c

Browse files
author
Dane Springmeyer
committedSep 9, 2016
port to protozero v1.4.2
1 parent 2ac7621 commit de6628c

14 files changed

+55
-52
lines changed
 

‎Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ MAPNIK_PLUGINDIR := $(shell mapnik-config --input-plugins)
22
BUILDTYPE ?= Release
33

44
CLIPPER_REVISION=ac8d6bf2517f46c05647b5c19cac113fb180ffb4
5-
PROTOZERO_REVISION=v1.3.0
5+
PROTOZERO_REVISION=v1.4.2
66
GYP_REVISION=3464008
77

88
all: libvtile

‎src/vector_tile_composite.hpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ void composite(merc_tile & target_vt,
5757
while (tile_message.next(Tile_Encoding::LAYERS))
5858
{
5959
bool reencode_layer = reencode_tile;
60-
auto data_pair = tile_message.get_data();
61-
protozero::pbf_reader layer_message(data_pair);
60+
const auto data_view = tile_message.get_view();
61+
protozero::pbf_reader layer_message(data_view);
6262
if (!layer_message.next(Layer_Encoding::NAME))
6363
{
6464
continue;
@@ -68,15 +68,15 @@ void composite(merc_tile & target_vt,
6868

6969
if (!reencode_layer)
7070
{
71-
target_vt.append_layer_buffer(data_pair.first, data_pair.second, layer_name);
71+
target_vt.append_layer_buffer(data_view.data(), data_view.size(), layer_name);
7272
}
7373

7474
if (target_vt.has_layer(layer_name))
7575
{
7676
continue;
7777
}
7878

79-
protozero::pbf_reader layer_pbf(data_pair);
79+
protozero::pbf_reader layer_pbf(data_view);
8080
auto ds = std::make_shared<mapnik::vector_tile_impl::tile_datasource_pbf>(
8181
layer_pbf,
8282
vt->x(),

‎src/vector_tile_datasource_pbf.ipp

+3-3
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,14 @@ tile_datasource_pbf::tile_datasource_pbf(protozero::pbf_reader const& layer,
7474
break;
7575
case Layer_Encoding::FEATURES:
7676
{
77-
auto data_pair = layer_.get_data();
78-
protozero::pbf_reader check_feature(data_pair);
77+
const auto data_view = layer_.get_view();
78+
protozero::pbf_reader check_feature(data_view);
7979
while (check_feature.next(Feature_Encoding::RASTER))
8080
{
8181
type_ = datasource::Raster;
8282
check_feature.skip();
8383
}
84-
protozero::pbf_reader f_msg(data_pair);
84+
protozero::pbf_reader f_msg(data_view);
8585
features_.push_back(f_msg);
8686
}
8787
break;

‎src/vector_tile_featureset_pbf.ipp

+5-5
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ feature_ptr tile_featureset_pbf<Filter>::next()
123123
int32_t geometry_type = 0; // vector_tile::Tile_GeomType_UNKNOWN
124124
bool has_geometry = false;
125125
bool has_geometry_type = false;
126-
std::pair<protozero::pbf_reader::const_uint32_iterator, protozero::pbf_reader::const_uint32_iterator> geom_itr;
126+
GeometryPBF::pbf_itr geom_itr;
127127
bool has_raster = false;
128128
std::unique_ptr<mapnik::image_reader> reader;
129129
while (f.next())
@@ -136,10 +136,10 @@ feature_ptr tile_featureset_pbf<Filter>::next()
136136
case 2:
137137
{
138138
auto tag_iterator = f.get_packed_uint32();
139-
for (auto _i = tag_iterator.first; _i != tag_iterator.second;)
139+
for (auto _i = tag_iterator.begin(); _i != tag_iterator.end();)
140140
{
141141
std::size_t key_name = *(_i++);
142-
if (_i == tag_iterator.second)
142+
if (_i == tag_iterator.end())
143143
{
144144
throw std::runtime_error("Vector Tile has a feature with an odd number of tags, therefore the tile is invalid.");
145145
}
@@ -186,8 +186,8 @@ feature_ptr tile_featureset_pbf<Filter>::next()
186186
throw std::runtime_error("Vector Tile has a feature with multiple raster fields, it must have only one of them");
187187
}
188188
has_raster = true;
189-
auto image_buffer = f.get_data();
190-
reader = std::unique_ptr<mapnik::image_reader>(mapnik::get_image_reader(image_buffer.first, image_buffer.second));
189+
auto image_buffer = f.get_view();
190+
reader = std::unique_ptr<mapnik::image_reader>(mapnik::get_image_reader(image_buffer.data(), image_buffer.size()));
191191
}
192192
break;
193193
case 4:

‎src/vector_tile_geometry_decoder.hpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ class GeometryPBF
3131
{
3232
public:
3333
using value_type = std::int64_t;
34-
using pbf_itr = std::pair<protozero::pbf_reader::const_uint32_iterator, protozero::pbf_reader::const_uint32_iterator >;
34+
using iterator_type = protozero::pbf_reader::const_uint32_iterator;
35+
using pbf_itr = protozero::iterator_range<iterator_type>;
3536

3637
explicit GeometryPBF(pbf_itr const& geo_iterator);
3738

@@ -53,7 +54,8 @@ class GeometryPBF
5354
command ring_next(value_type & rx, value_type & ry, bool skip_lineto_zero);
5455

5556
private:
56-
std::pair< protozero::pbf_reader::const_uint32_iterator, protozero::pbf_reader::const_uint32_iterator > geo_iterator_;
57+
iterator_type geo_itr_;
58+
iterator_type geo_end_itr_;
5759
value_type x, y;
5860
value_type ox, oy;
5961
uint32_t length;

‎src/vector_tile_geometry_decoder.ipp

+18-17
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,8 @@ void decode_polygon(mapnik::geometry::geometry<geom_value_type> & geom,
554554
} // end ns detail
555555

556556
GeometryPBF::GeometryPBF(pbf_itr const& geo_iterator)
557-
: geo_iterator_(geo_iterator),
557+
: geo_itr_(geo_iterator.begin()),
558+
geo_end_itr_(geo_iterator.end()),
558559
x(0),
559560
y(0),
560561
ox(0),
@@ -571,9 +572,9 @@ typename GeometryPBF::command GeometryPBF::point_next(value_type & rx, value_typ
571572
{
572573
if (length == 0)
573574
{
574-
if (geo_iterator_.first != geo_iterator_.second)
575+
if (geo_itr_ != geo_end_itr_)
575576
{
576-
uint32_t cmd_length = static_cast<uint32_t>(*geo_iterator_.first++);
577+
uint32_t cmd_length = static_cast<uint32_t>(*geo_itr_++);
577578
cmd = cmd_length & 0x7;
578579
length = cmd_length >> 3;
579580
if (cmd == move_to)
@@ -611,8 +612,8 @@ typename GeometryPBF::command GeometryPBF::point_next(value_type & rx, value_typ
611612
// If an exception occurs it will likely be a end_of_buffer_exception with the text:
612613
// "end of buffer exception"
613614
// While this error message is not verbose a try catch here would slow down processing.
614-
int32_t dx = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_iterator_.first++));
615-
int32_t dy = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_iterator_.first++));
615+
int32_t dx = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_itr_++));
616+
int32_t dy = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_itr_++));
616617
detail::move_cursor(x, y, dx, dy);
617618
rx = x;
618619
ry = y;
@@ -625,9 +626,9 @@ typename GeometryPBF::command GeometryPBF::line_next(value_type & rx,
625626
{
626627
if (length == 0)
627628
{
628-
if (geo_iterator_.first != geo_iterator_.second)
629+
if (geo_itr_ != geo_end_itr_)
629630
{
630-
uint32_t cmd_length = static_cast<uint32_t>(*geo_iterator_.first++);
631+
uint32_t cmd_length = static_cast<uint32_t>(*geo_itr_++);
631632
cmd = cmd_length & 0x7;
632633
length = cmd_length >> 3;
633634
if (cmd == move_to)
@@ -642,8 +643,8 @@ typename GeometryPBF::command GeometryPBF::line_next(value_type & rx,
642643
// If an exception occurs it will likely be a end_of_buffer_exception with the text:
643644
// "end of buffer exception"
644645
// While this error message is not verbose a try catch here would slow down processing.
645-
int32_t dx = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_iterator_.first++));
646-
int32_t dy = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_iterator_.first++));
646+
int32_t dx = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_itr_++));
647+
int32_t dy = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_itr_++));
647648
detail::move_cursor(x, y, dx, dy);
648649
rx = x;
649650
ry = y;
@@ -680,8 +681,8 @@ typename GeometryPBF::command GeometryPBF::line_next(value_type & rx,
680681
// If an exception occurs it will likely be a end_of_buffer_exception with the text:
681682
// "end of buffer exception"
682683
// While this error message is not verbose a try catch here would slow down processing.
683-
int32_t dx = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_iterator_.first++));
684-
int32_t dy = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_iterator_.first++));
684+
int32_t dx = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_itr_++));
685+
int32_t dy = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_itr_++));
685686
if (skip_lineto_zero && dx == 0 && dy == 0)
686687
{
687688
// We are going to skip this vertex as the point doesn't move call line_next again
@@ -699,9 +700,9 @@ typename GeometryPBF::command GeometryPBF::ring_next(value_type & rx,
699700
{
700701
if (length == 0)
701702
{
702-
if (geo_iterator_.first != geo_iterator_.second)
703+
if (geo_itr_ != geo_end_itr_)
703704
{
704-
uint32_t cmd_length = static_cast<uint32_t>(*geo_iterator_.first++);
705+
uint32_t cmd_length = static_cast<uint32_t>(*geo_itr_++);
705706
cmd = cmd_length & 0x7;
706707
length = cmd_length >> 3;
707708
if (cmd == move_to)
@@ -716,8 +717,8 @@ typename GeometryPBF::command GeometryPBF::ring_next(value_type & rx,
716717
// If an exception occurs it will likely be a end_of_buffer_exception with the text:
717718
// "end of buffer exception"
718719
// While this error message is not verbose a try catch here would slow down processing.
719-
int32_t dx = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_iterator_.first++));
720-
int32_t dy = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_iterator_.first++));
720+
int32_t dx = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_itr_++));
721+
int32_t dy = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_itr_++));
721722
detail::move_cursor(x, y, dx, dy);
722723
rx = x;
723724
ry = y;
@@ -759,8 +760,8 @@ typename GeometryPBF::command GeometryPBF::ring_next(value_type & rx,
759760
// If an exception occurs it will likely be a end_of_buffer_exception with the text:
760761
// "end of buffer exception"
761762
// While this error message is not verbose a try catch here would slow down processing.
762-
int32_t dx = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_iterator_.first++));
763-
int32_t dy = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_iterator_.first++));
763+
int32_t dx = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_itr_++));
764+
int32_t dy = protozero::decode_zigzag32(static_cast<uint32_t>(*geo_itr_++));
764765
if (skip_lineto_zero && dx == 0 && dy == 0)
765766
{
766767
// We are going to skip this vertex as the point doesn't move call ring_next again

‎src/vector_tile_is_valid.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ inline void feature_is_valid(protozero::pbf_reader & feature_msg,
201201
}
202202
has_raster = true;
203203
++raster_feature_count;
204-
feature_msg.get_data();
204+
feature_msg.get_view();
205205
break;
206206
default:
207207
errors.insert(FEATURE_HAS_UNKNOWN_TAG);

‎src/vector_tile_load_tile.hpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ void merge_from_buffer(merc_tile & t, const char * data, std::size_t size, bool
6262
{
6363
case Tile_Encoding::LAYERS:
6464
{
65-
auto layer_data = tile_msg.get_data();
66-
protozero::pbf_reader layer_props_msg(layer_data);
65+
const auto layer_view = tile_msg.get_view();
66+
protozero::pbf_reader layer_props_msg(layer_view);
6767
auto layer_info = get_layer_name_and_version(layer_props_msg);
6868
std::string const& layer_name = layer_info.first;
6969
std::uint32_t version = layer_info.second;
@@ -78,7 +78,7 @@ void merge_from_buffer(merc_tile & t, const char * data, std::size_t size, bool
7878
{
7979
errors.insert(TILE_REPEATED_LAYER_NAMES);
8080
}
81-
protozero::pbf_reader layer_valid_msg(layer_data);
81+
protozero::pbf_reader layer_valid_msg(layer_view);
8282
layer_is_valid(layer_valid_msg, errors);
8383
if (!errors.empty())
8484
{
@@ -94,7 +94,7 @@ void merge_from_buffer(merc_tile & t, const char * data, std::size_t size, bool
9494
if (upgrade && version == 1)
9595
{
9696
// v1 tiles will be converted to v2
97-
protozero::pbf_reader layer_msg(layer_data);
97+
protozero::pbf_reader layer_msg(layer_view);
9898
ds_vec.push_back(std::make_shared<mapnik::vector_tile_impl::tile_datasource_pbf>(
9999
layer_msg,
100100
t.x(),
@@ -104,7 +104,7 @@ void merge_from_buffer(merc_tile & t, const char * data, std::size_t size, bool
104104
}
105105
else
106106
{
107-
t.append_layer_buffer(layer_data.first, layer_data.second, layer_name);
107+
t.append_layer_buffer(layer_view.data(), layer_view.size(), layer_name);
108108
}
109109
}
110110
break;

‎test/geometry_visual_test.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ void clip_geometry(mapnik::Map const& map,
6868
{
6969
protozero::pbf_reader feature_reader = layer_reader.get_message();
7070
int32_t geometry_type = mapnik::vector_tile_impl::Geometry_Type::UNKNOWN;
71-
std::pair<protozero::pbf_reader::const_uint32_iterator, protozero::pbf_reader::const_uint32_iterator> geom_itr;
71+
mapnik::vector_tile_impl::GeometryPBF::pbf_itr geom_itr;
7272
while (feature_reader.next())
7373
{
7474
if (feature_reader.tag() == mapnik::vector_tile_impl::Feature_Encoding::GEOMETRY)

‎test/unit/load/merge.cpp

+9-9
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ TEST_CASE( "merge_from_compressed_buffer - vector" )
2424
protozero::pbf_reader tile_msg(tile.get_buffer());
2525
while (tile_msg.next(mapnik::vector_tile_impl::Tile_Encoding::LAYERS))
2626
{
27-
auto layer_data = tile_msg.get_data();
28-
protozero::pbf_reader layer_props_msg(layer_data);
27+
const auto layer_view = tile_msg.get_view();
28+
protozero::pbf_reader layer_props_msg(layer_view);
2929
auto layer_info = mapnik::vector_tile_impl::get_layer_name_and_version(layer_props_msg);
3030
std::string const& layer_name = layer_info.first;
3131
std::uint32_t version = layer_info.second;
3232
CHECK(layer_name == "water");
3333
CHECK(version == 1);
3434
std::set<mapnik::vector_tile_impl::validity_error> errors;
35-
protozero::pbf_reader layer_valid_msg(layer_data);
35+
protozero::pbf_reader layer_valid_msg(layer_view);
3636
layer_is_valid(layer_valid_msg, errors);
3737
CHECK(errors.size() == 0);
3838
}
@@ -51,15 +51,15 @@ TEST_CASE( "merge_from_compressed_buffer - vector" )
5151
protozero::pbf_reader tile_msg(tile2.get_buffer());
5252
while (tile_msg.next(mapnik::vector_tile_impl::Tile_Encoding::LAYERS))
5353
{
54-
auto layer_data = tile_msg.get_data();
55-
protozero::pbf_reader layer_props_msg(layer_data);
54+
const auto layer_view = tile_msg.get_view();
55+
protozero::pbf_reader layer_props_msg(layer_view);
5656
auto layer_info = mapnik::vector_tile_impl::get_layer_name_and_version(layer_props_msg);
5757
std::string const& layer_name = layer_info.first;
5858
std::uint32_t version = layer_info.second;
5959
CHECK(layer_name == "water");
6060
CHECK(version == 2);
6161
std::set<mapnik::vector_tile_impl::validity_error> errors;
62-
protozero::pbf_reader layer_valid_msg(layer_data);
62+
protozero::pbf_reader layer_valid_msg(layer_view);
6363
layer_is_valid(layer_valid_msg, errors);
6464
CHECK(errors.size() == 0);
6565
}
@@ -79,15 +79,15 @@ TEST_CASE( "merge_from_compressed_buffer - raster" )
7979
protozero::pbf_reader tile_msg(tile.get_buffer());
8080
while (tile_msg.next(mapnik::vector_tile_impl::Tile_Encoding::LAYERS))
8181
{
82-
auto layer_data = tile_msg.get_data();
83-
protozero::pbf_reader layer_props_msg(layer_data);
82+
const auto layer_view = tile_msg.get_view();
83+
protozero::pbf_reader layer_props_msg(layer_view);
8484
auto layer_info = mapnik::vector_tile_impl::get_layer_name_and_version(layer_props_msg);
8585
std::string const& layer_name = layer_info.first;
8686
std::uint32_t version = layer_info.second;
8787
CHECK(layer_name == "layer");
8888
CHECK(version == 2);
8989
std::set<mapnik::vector_tile_impl::validity_error> errors;
90-
protozero::pbf_reader layer_valid_msg(layer_data);
90+
protozero::pbf_reader layer_valid_msg(layer_view);
9191
layer_is_valid(layer_valid_msg, errors);
9292
CHECK(errors.size() == 0);
9393
}

‎test/utils/encoding_util.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ std::string compare_pbf(mapnik::geometry::geometry<std::int64_t> const& g, unsig
6565
REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(g, feature_writer, x, y));
6666
protozero::pbf_reader feature_reader(feature_str);
6767
int32_t geometry_type = mapnik::vector_tile_impl::Geometry_Type::UNKNOWN;
68-
std::pair<protozero::pbf_reader::const_uint32_iterator, protozero::pbf_reader::const_uint32_iterator> geom_itr;
68+
mapnik::vector_tile_impl::GeometryPBF::pbf_itr geom_itr;
6969
while (feature_reader.next())
7070
{
7171
if (feature_reader.tag() == mapnik::vector_tile_impl::Feature_Encoding::GEOMETRY)

‎test/utils/round_trip.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ mapnik::geometry::geometry<double> round_trip(mapnik::geometry::geometry<double>
7070
}
7171
protozero::pbf_reader feature_reader = layer_reader.get_message();
7272
int32_t geometry_type = mapnik::vector_tile_impl::Geometry_Type::UNKNOWN;
73-
std::pair<protozero::pbf_reader::const_uint32_iterator, protozero::pbf_reader::const_uint32_iterator> geom_itr;
73+
mapnik::vector_tile_impl::GeometryPBF::pbf_itr geom_itr;
7474
while (feature_reader.next())
7575
{
7676
if (feature_reader.tag() == mapnik::vector_tile_impl::Feature_Encoding::GEOMETRY)

‎test/vector_tile.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ TEST_CASE("vector tile from simplified geojson")
7171
REQUIRE(layer_reader.next(mapnik::vector_tile_impl::Layer_Encoding::FEATURES));
7272
protozero::pbf_reader feature_reader = layer_reader.get_message();
7373
int32_t geometry_type = mapnik::vector_tile_impl::Geometry_Type::UNKNOWN;
74-
std::pair<protozero::pbf_reader::const_uint32_iterator, protozero::pbf_reader::const_uint32_iterator> geom_itr;
74+
mapnik::vector_tile_impl::GeometryPBF::pbf_itr geom_itr;
7575
while (feature_reader.next())
7676
{
7777
if (feature_reader.tag() == mapnik::vector_tile_impl::Feature_Encoding::GEOMETRY)

‎test/vector_tile_pbf.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ TEST_CASE("pbf vector tile from simplified geojson")
414414
while (!found && pbf_feature.next(4))
415415
{
416416
found = true;
417-
std::pair< protozero::pbf_reader::const_uint32_iterator, protozero::pbf_reader::const_uint32_iterator > geom_itr = pbf_feature.get_packed_uint32();
417+
mapnik::vector_tile_impl::GeometryPBF::pbf_itr geom_itr = pbf_feature.get_packed_uint32();
418418
mapnik::vector_tile_impl::GeometryPBF geoms(geom_itr);
419419
auto geom = mapnik::vector_tile_impl::decode_geometry<double>(geoms, f.type(), 2, tile_x, tile_y, scale, -1.0 * scale);
420420
unsigned int n_err = 0;

0 commit comments

Comments
 (0)
Please sign in to comment.