From 7235ba0bfba31294b4af3bf3b5475d79d96f5f36 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Mon, 6 Jun 2016 16:15:52 -0700 Subject: [PATCH] [core] Repeat some code so that all branches are parallel --- src/mbgl/style/source.cpp | 50 ++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/src/mbgl/style/source.cpp b/src/mbgl/style/source.cpp index f7af4210e..8f33a62d0 100644 --- a/src/mbgl/style/source.cpp +++ b/src/mbgl/style/source.cpp @@ -209,32 +209,44 @@ std::unique_ptr Source::createTile(const OverscaledTileID& overscaledT // Need a std::move here to create a std::unique_ptr from // std::unique_ptr. return std::move(data); - } else { + } else if (type == SourceType::Vector) { + assert(!tileset->tiles.empty()); + const auto resource = Resource::tile( + tileset->tiles.at(0), parameters.pixelRatio, overscaledTileID.canonical.x, + overscaledTileID.canonical.y, overscaledTileID.canonical.z); auto data = std::make_unique(overscaledTileID, id, parameters.style, parameters.mode); data->setObserver(this); - if (type == SourceType::Vector) { - assert(!tileset->tiles.empty()); - const auto resource = Resource::tile( - tileset->tiles.at(0), parameters.pixelRatio, overscaledTileID.canonical.x, - overscaledTileID.canonical.y, overscaledTileID.canonical.z); - data->setTileSource( - std::make_unique(*data, resource, parameters.fileSource)); - } else if (type == SourceType::Annotations) { - data->setTileSource(std::make_unique( - *data, overscaledTileID, parameters.annotationManager)); - } else if (type == SourceType::GeoJSON) { - data->setTileSource( - std::make_unique(*data, geojsonvt.get(), overscaledTileID)); - } else { - Log::Warning(Event::Style, "Source type '%s' is not implemented", - SourceTypeClass(type).c_str()); - return nullptr; - } + data->setTileSource( + std::make_unique(*data, resource, parameters.fileSource)); // Need a std::move here to create a std::unique_ptr from // std::unique_ptr. return std::move(data); + } else if (type == SourceType::Annotations) { + auto data = std::make_unique(overscaledTileID, id, parameters.style, + parameters.mode); + data->setObserver(this); + data->setTileSource(std::make_unique( + *data, overscaledTileID, parameters.annotationManager)); + + // Need a std::move here to create a std::unique_ptr from + // std::unique_ptr. + return std::move(data); + } else if (type == SourceType::GeoJSON) { + auto data = std::make_unique(overscaledTileID, id, parameters.style, + parameters.mode); + data->setObserver(this); + data->setTileSource( + std::make_unique(*data, geojsonvt.get(), overscaledTileID)); + + // Need a std::move here to create a std::unique_ptr from + // std::unique_ptr. + return std::move(data); + } else { + Log::Warning(Event::Style, "Source type '%s' is not implemented", + SourceTypeClass(type).c_str()); + return nullptr; } }