summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2018-07-24 20:58:54 +0300
committerBruno de Oliveira Abinader <bruno@mapbox.com>2018-07-24 21:45:23 +0300
commit8e59c0ce5fad9889162a129df10d1810cffd7848 (patch)
tree4bf36742449e104ee7f3674d3fe48e12a35e835c
parentf6659c729f29fe65789ee08d50d438cf05623f6f (diff)
downloadqtlocation-mapboxgl-8e59c0ce5fad9889162a129df10d1810cffd7848.tar.gz
[core] Replace remaining dynamic_cast with static_cast
-rw-r--r--src/mbgl/renderer/layers/render_hillshade_layer.cpp5
-rw-r--r--src/mbgl/renderer/layers/render_symbol_layer.cpp2
-rw-r--r--src/mbgl/style/layers/circle_layer_impl.cpp2
-rw-r--r--src/mbgl/style/layers/fill_extrusion_layer_impl.cpp2
-rw-r--r--src/mbgl/style/layers/fill_layer_impl.cpp2
-rw-r--r--src/mbgl/style/layers/heatmap_layer_impl.cpp2
-rw-r--r--src/mbgl/style/layers/line_layer_impl.cpp2
-rw-r--r--src/mbgl/style/layers/symbol_layer_impl.cpp2
-rw-r--r--src/mbgl/text/placement.cpp2
-rw-r--r--src/mbgl/tile/geometry_tile.cpp2
-rw-r--r--src/mbgl/tile/raster_dem_tile.cpp2
-rw-r--r--src/mbgl/tile/raster_tile.cpp2
-rw-r--r--src/mbgl/tile/tile.cpp10
-rw-r--r--src/mbgl/tile/tile.hpp9
-rw-r--r--test/map/map.test.cpp2
15 files changed, 32 insertions, 16 deletions
diff --git a/src/mbgl/renderer/layers/render_hillshade_layer.cpp b/src/mbgl/renderer/layers/render_hillshade_layer.cpp
index 25eef98fcf..9958a71654 100644
--- a/src/mbgl/renderer/layers/render_hillshade_layer.cpp
+++ b/src/mbgl/renderer/layers/render_hillshade_layer.cpp
@@ -59,8 +59,9 @@ bool RenderHillshadeLayer::hasTransition() const {
void RenderHillshadeLayer::render(PaintParameters& parameters, RenderSource* src) {
if (parameters.pass != RenderPass::Translucent && parameters.pass != RenderPass::Pass3D)
return;
-
- RenderRasterDEMSource* demsrc = dynamic_cast<RenderRasterDEMSource*>(src);
+
+ assert(src == nullptr || src->is<RenderRasterDEMSource>());
+ RenderRasterDEMSource* demsrc = static_cast<RenderRasterDEMSource*>(src);
const uint8_t TERRAIN_RGB_MAXZOOM = 15;
const uint8_t maxzoom = demsrc != nullptr ? demsrc->getMaxZoom() : TERRAIN_RGB_MAXZOOM;
diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp
index 63fcb6cfd5..f9e4e7c043 100644
--- a/src/mbgl/renderer/layers/render_symbol_layer.cpp
+++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp
@@ -126,7 +126,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
);
};
- assert(dynamic_cast<GeometryTile*>(&tile.tile));
+ assert(tile.tile.kind == Tile::Kind::Geometry);
GeometryTile& geometryTile = static_cast<GeometryTile&>(tile.tile);
if (bucket.hasIconData()) {
diff --git a/src/mbgl/style/layers/circle_layer_impl.cpp b/src/mbgl/style/layers/circle_layer_impl.cpp
index 69f574cd6b..358598e09c 100644
--- a/src/mbgl/style/layers/circle_layer_impl.cpp
+++ b/src/mbgl/style/layers/circle_layer_impl.cpp
@@ -4,7 +4,7 @@ namespace mbgl {
namespace style {
bool CircleLayer::Impl::hasLayoutDifference(const Layer::Impl& other) const {
- assert(dynamic_cast<const CircleLayer::Impl*>(&other));
+ assert(other.type == LayerType::Circle);
const auto& impl = static_cast<const style::CircleLayer::Impl&>(other);
return filter != impl.filter ||
visibility != impl.visibility ||
diff --git a/src/mbgl/style/layers/fill_extrusion_layer_impl.cpp b/src/mbgl/style/layers/fill_extrusion_layer_impl.cpp
index d37c2ad29b..357ea3e973 100644
--- a/src/mbgl/style/layers/fill_extrusion_layer_impl.cpp
+++ b/src/mbgl/style/layers/fill_extrusion_layer_impl.cpp
@@ -4,7 +4,7 @@ namespace mbgl {
namespace style {
bool FillExtrusionLayer::Impl::hasLayoutDifference(const Layer::Impl& other) const {
- assert(dynamic_cast<const FillExtrusionLayer::Impl*>(&other));
+ assert(other.type == LayerType::FillExtrusion);
const auto& impl = static_cast<const style::FillExtrusionLayer::Impl&>(other);
return filter != impl.filter ||
visibility != impl.visibility ||
diff --git a/src/mbgl/style/layers/fill_layer_impl.cpp b/src/mbgl/style/layers/fill_layer_impl.cpp
index 0dc7ed14d5..a8ba1b693b 100644
--- a/src/mbgl/style/layers/fill_layer_impl.cpp
+++ b/src/mbgl/style/layers/fill_layer_impl.cpp
@@ -4,7 +4,7 @@ namespace mbgl {
namespace style {
bool FillLayer::Impl::hasLayoutDifference(const Layer::Impl& other) const {
- assert(dynamic_cast<const FillLayer::Impl*>(&other));
+ assert(other.type == LayerType::Fill);
const auto& impl = static_cast<const style::FillLayer::Impl&>(other);
return filter != impl.filter ||
visibility != impl.visibility ||
diff --git a/src/mbgl/style/layers/heatmap_layer_impl.cpp b/src/mbgl/style/layers/heatmap_layer_impl.cpp
index af20888d9d..8fd0cf72b2 100644
--- a/src/mbgl/style/layers/heatmap_layer_impl.cpp
+++ b/src/mbgl/style/layers/heatmap_layer_impl.cpp
@@ -4,7 +4,7 @@ namespace mbgl {
namespace style {
bool HeatmapLayer::Impl::hasLayoutDifference(const Layer::Impl& other) const {
- assert(dynamic_cast<const HeatmapLayer::Impl*>(&other));
+ assert(other.type == LayerType::Heatmap);
const auto& impl = static_cast<const style::HeatmapLayer::Impl&>(other);
return filter != impl.filter ||
visibility != impl.visibility ||
diff --git a/src/mbgl/style/layers/line_layer_impl.cpp b/src/mbgl/style/layers/line_layer_impl.cpp
index bee88d6a47..68cd3a8f49 100644
--- a/src/mbgl/style/layers/line_layer_impl.cpp
+++ b/src/mbgl/style/layers/line_layer_impl.cpp
@@ -4,7 +4,7 @@ namespace mbgl {
namespace style {
bool LineLayer::Impl::hasLayoutDifference(const Layer::Impl& other) const {
- assert(dynamic_cast<const LineLayer::Impl*>(&other));
+ assert(other.type == LayerType::Line);
const auto& impl = static_cast<const style::LineLayer::Impl&>(other);
return filter != impl.filter ||
visibility != impl.visibility ||
diff --git a/src/mbgl/style/layers/symbol_layer_impl.cpp b/src/mbgl/style/layers/symbol_layer_impl.cpp
index b59768725d..753b2fa184 100644
--- a/src/mbgl/style/layers/symbol_layer_impl.cpp
+++ b/src/mbgl/style/layers/symbol_layer_impl.cpp
@@ -4,7 +4,7 @@ namespace mbgl {
namespace style {
bool SymbolLayer::Impl::hasLayoutDifference(const Layer::Impl& other) const {
- assert(dynamic_cast<const SymbolLayer::Impl*>(&other));
+ assert(other.type == LayerType::Symbol);
const auto& impl = static_cast<const style::SymbolLayer::Impl&>(other);
return filter != impl.filter ||
visibility != impl.visibility ||
diff --git a/src/mbgl/text/placement.cpp b/src/mbgl/text/placement.cpp
index 16dd94b374..8bd92087b1 100644
--- a/src/mbgl/text/placement.cpp
+++ b/src/mbgl/text/placement.cpp
@@ -48,7 +48,7 @@ void Placement::placeLayer(RenderSymbolLayer& symbolLayer, const mat4& projMatri
if (!renderTile.tile.isRenderable()) {
continue;
}
- assert(dynamic_cast<GeometryTile*>(&renderTile.tile));
+ assert(renderTile.tile.kind == Tile::Kind::Geometry);
GeometryTile& geometryTile = static_cast<GeometryTile&>(renderTile.tile);
auto bucket = renderTile.tile.getBucket<SymbolBucket>(*symbolLayer.baseImpl);
diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp
index d686d8440b..90d4d07895 100644
--- a/src/mbgl/tile/geometry_tile.cpp
+++ b/src/mbgl/tile/geometry_tile.cpp
@@ -44,7 +44,7 @@ using namespace style;
GeometryTile::GeometryTile(const OverscaledTileID& id_,
std::string sourceID_,
const TileParameters& parameters)
- : Tile(id_),
+ : Tile(Kind::Geometry, id_),
sourceID(std::move(sourceID_)),
mailbox(std::make_shared<Mailbox>(*Scheduler::GetCurrent())),
worker(parameters.workerScheduler,
diff --git a/src/mbgl/tile/raster_dem_tile.cpp b/src/mbgl/tile/raster_dem_tile.cpp
index f29861ee71..751f69bad9 100644
--- a/src/mbgl/tile/raster_dem_tile.cpp
+++ b/src/mbgl/tile/raster_dem_tile.cpp
@@ -15,7 +15,7 @@ namespace mbgl {
RasterDEMTile::RasterDEMTile(const OverscaledTileID& id_,
const TileParameters& parameters,
const Tileset& tileset)
- : Tile(id_),
+ : Tile(Kind::RasterDEM, id_),
loader(*this, id_, parameters, tileset),
mailbox(std::make_shared<Mailbox>(*Scheduler::GetCurrent())),
worker(parameters.workerScheduler,
diff --git a/src/mbgl/tile/raster_tile.cpp b/src/mbgl/tile/raster_tile.cpp
index cc71c04ba1..1346f87ae5 100644
--- a/src/mbgl/tile/raster_tile.cpp
+++ b/src/mbgl/tile/raster_tile.cpp
@@ -15,7 +15,7 @@ namespace mbgl {
RasterTile::RasterTile(const OverscaledTileID& id_,
const TileParameters& parameters,
const Tileset& tileset)
- : Tile(id_),
+ : Tile(Kind::Raster, id_),
loader(*this, id_, parameters, tileset),
mailbox(std::make_shared<Mailbox>(*Scheduler::GetCurrent())),
worker(parameters.workerScheduler,
diff --git a/src/mbgl/tile/tile.cpp b/src/mbgl/tile/tile.cpp
index b95944f10e..5a69df5b43 100644
--- a/src/mbgl/tile/tile.cpp
+++ b/src/mbgl/tile/tile.cpp
@@ -9,7 +9,7 @@ namespace mbgl {
static TileObserver nullObserver;
-Tile::Tile(OverscaledTileID id_) : id(std::move(id_)), observer(&nullObserver) {
+Tile::Tile(Kind kind_, OverscaledTileID id_) : kind(kind_), id(std::move(id_)), observer(&nullObserver) {
}
Tile::~Tile() = default;
@@ -27,6 +27,14 @@ void Tile::setTriedCache() {
}
void Tile::dumpDebugLogs() const {
+ std::string kindString;
+ switch (kind) {
+ case Kind::Geometry: kindString = "Geometry"; break;
+ case Kind::Raster: kindString = "Raster"; break;
+ case Kind::RasterDEM: kindString = "RasterDEM"; break;
+ default: kindString = "Unknown"; break;
+ }
+ Log::Info(Event::General, "Tile::Kind: %s", kindString.c_str());
Log::Info(Event::General, "Tile::id: %s", util::toString(id).c_str());
Log::Info(Event::General, "Tile::renderable: %s", isRenderable() ? "yes" : "no");
Log::Info(Event::General, "Tile::complete: %s", isComplete() ? "yes" : "no");
diff --git a/src/mbgl/tile/tile.hpp b/src/mbgl/tile/tile.hpp
index 5cf74abff5..77c1853925 100644
--- a/src/mbgl/tile/tile.hpp
+++ b/src/mbgl/tile/tile.hpp
@@ -35,7 +35,13 @@ class Context;
class Tile : private util::noncopyable {
public:
- Tile(OverscaledTileID);
+ enum class Kind : int32_t {
+ Geometry,
+ Raster,
+ RasterDEM
+ };
+
+ Tile(Kind, OverscaledTileID);
virtual ~Tile();
void setObserver(TileObserver* observer);
@@ -119,6 +125,7 @@ public:
void dumpDebugLogs() const;
+ const Kind kind;
OverscaledTileID id;
optional<Timestamp> modified;
optional<Timestamp> expires;
diff --git a/test/map/map.test.cpp b/test/map/map.test.cpp
index 8e2d9cb9cd..cb45c2900b 100644
--- a/test/map/map.test.cpp
+++ b/test/map/map.test.cpp
@@ -207,7 +207,7 @@ TEST(Map, SetStyleInvalidJSON) {
EXPECT_TRUE(fail);
auto observer = Log::removeObserver();
- auto flo = dynamic_cast<FixtureLogObserver*>(observer.get());
+ auto flo = static_cast<FixtureLogObserver*>(observer.get());
EXPECT_EQ(1u, flo->count({ EventSeverity::Error, Event::ParseStyle, -1,
"Failed to parse style: 0 - Invalid value." }));
auto unchecked = flo->unchecked();