summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-09-27 18:22:57 +0300
committerAnder Conselvan de Oliveira <ander.deoliveira@mapbox.com>2019-09-27 19:17:25 +0300
commitd446b3382b7de03d9031445e37c1ebf183092ea2 (patch)
tree7e2e1ef39681aa46e794d3c702febf566c4fe53b
parentbb9b1ab62438f733ad278cb03f781116b9f3d721 (diff)
downloadqtlocation-mapboxgl-d446b3382b7de03d9031445e37c1ebf183092ea2.tar.gz
[core] Enable move semantics for StyleProperty
-rw-r--r--include/mbgl/style/style_property.hpp12
-rw-r--r--test/map/map.test.cpp48
2 files changed, 33 insertions, 27 deletions
diff --git a/include/mbgl/style/style_property.hpp b/include/mbgl/style/style_property.hpp
index 43787c7919..fc34078dec 100644
--- a/include/mbgl/style/style_property.hpp
+++ b/include/mbgl/style/style_property.hpp
@@ -8,12 +8,18 @@ namespace style {
/**
* @brief Generic representation of a style property.
*/
-struct StyleProperty {
+class StyleProperty {
+public:
enum class Kind : uint8_t { Undefined, Constant, Expression, Transition };
StyleProperty(Value value_, Kind kind_) : value(std::move(value_)), kind(kind_) {}
StyleProperty() = default;
- const Value value;
- const Kind kind = Kind::Undefined;
+ const Value& getValue() const { return value; }
+ Value& getValue() { return value; }
+ Kind getKind() const { return kind; }
+
+private:
+ Value value;
+ Kind kind = Kind::Undefined;
};
} // namespace style
diff --git a/test/map/map.test.cpp b/test/map/map.test.cpp
index 6f0f126d3d..3f3145059a 100644
--- a/test/map/map.test.cpp
+++ b/test/map/map.test.cpp
@@ -957,41 +957,41 @@ TEST(Map, UniversalStyleGetter) {
ASSERT_TRUE(lineLayer);
StyleProperty nonexistent = lineLayer->getProperty("nonexistent");
- ASSERT_FALSE(nonexistent.value);
- EXPECT_EQ(StyleProperty::Kind::Undefined, nonexistent.kind);
+ ASSERT_FALSE(nonexistent.getValue());
+ EXPECT_EQ(StyleProperty::Kind::Undefined, nonexistent.getKind());
StyleProperty undefined = lineLayer->getProperty("line-blur");
- ASSERT_FALSE(undefined.value);
- EXPECT_EQ(StyleProperty::Kind::Undefined, undefined.kind);
+ ASSERT_FALSE(undefined.getValue());
+ EXPECT_EQ(StyleProperty::Kind::Undefined, undefined.getKind());
StyleProperty lineColor = lineLayer->getProperty("line-color");
- ASSERT_TRUE(lineColor.value);
- EXPECT_EQ(StyleProperty::Kind::Constant, lineColor.kind);
- ASSERT_TRUE(lineColor.value.getObject());
- const auto& color = *(lineColor.value.getObject());
+ ASSERT_TRUE(lineColor.getValue());
+ EXPECT_EQ(StyleProperty::Kind::Constant, lineColor.getKind());
+ ASSERT_TRUE(lineColor.getValue().getObject());
+ const auto& color = *(lineColor.getValue().getObject());
EXPECT_EQ(1.0, *color.at("r").getDouble());
EXPECT_EQ(0.0, *color.at("g").getDouble());
EXPECT_EQ(0.0, *color.at("b").getDouble());
EXPECT_EQ(1.0, *color.at("a").getDouble());
StyleProperty lineOpacity = lineLayer->getProperty("line-opacity");
- ASSERT_TRUE(lineOpacity.value);
- EXPECT_EQ(StyleProperty::Kind::Constant, lineOpacity.kind);
- ASSERT_TRUE(lineOpacity.value.getDouble());
- EXPECT_EQ(0.5, *lineOpacity.value.getDouble());
+ ASSERT_TRUE(lineOpacity.getValue());
+ EXPECT_EQ(StyleProperty::Kind::Constant, lineOpacity.getKind());
+ ASSERT_TRUE(lineOpacity.getValue().getDouble());
+ EXPECT_EQ(0.5, *lineOpacity.getValue().getDouble());
StyleProperty lineOpacityTransition = lineLayer->getProperty("line-opacity-transition");
- ASSERT_TRUE(lineOpacityTransition.value);
- EXPECT_EQ(StyleProperty::Kind::Transition, lineOpacityTransition.kind);
- ASSERT_TRUE(lineOpacityTransition.value.getArray());
- EXPECT_EQ(3u, lineOpacityTransition.value.getArray()->size());
+ ASSERT_TRUE(lineOpacityTransition.getValue());
+ EXPECT_EQ(StyleProperty::Kind::Transition, lineOpacityTransition.getKind());
+ ASSERT_TRUE(lineOpacityTransition.getValue().getArray());
+ EXPECT_EQ(3u, lineOpacityTransition.getValue().getArray()->size());
StyleProperty lineWidth = lineLayer->getProperty("line-width");
- ASSERT_TRUE(lineWidth.value);
- EXPECT_EQ(StyleProperty::Kind::Expression, lineWidth.kind);
- ASSERT_TRUE(lineWidth.value.getArray());
+ ASSERT_TRUE(lineWidth.getValue());
+ EXPECT_EQ(StyleProperty::Kind::Expression, lineWidth.getKind());
+ ASSERT_TRUE(lineWidth.getValue().getArray());
- const auto& expression = *lineWidth.value.getArray();
+ const auto& expression = *lineWidth.getValue().getArray();
EXPECT_EQ(2u, expression.size());
ASSERT_TRUE(expression[0].getString());
EXPECT_EQ("number", *expression[0].getString());
@@ -1004,8 +1004,8 @@ TEST(Map, UniversalStyleGetter) {
EXPECT_EQ("width", *operation[1].getString());
StyleProperty lineCap = lineLayer->getProperty("line-cap");
- ASSERT_TRUE(lineCap.value);
- EXPECT_EQ(StyleProperty::Kind::Constant, lineCap.kind);
- ASSERT_TRUE(lineCap.value.getString());
- EXPECT_EQ(std::string("butt"), *lineCap.value.getString());
+ ASSERT_TRUE(lineCap.getValue());
+ EXPECT_EQ(StyleProperty::Kind::Constant, lineCap.getKind());
+ ASSERT_TRUE(lineCap.getValue().getString());
+ EXPECT_EQ(std::string("butt"), *lineCap.getValue().getString());
}