summaryrefslogtreecommitdiff
path: root/src/mbgl/style/expression/dsl.cpp
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2018-07-13 17:02:30 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2018-07-20 12:35:00 -0700
commitaf89318b1d3bef15e92e591887c9d65b10be54ce (patch)
treed3ccb07da91bb56197607f5319100e64f7493211 /src/mbgl/style/expression/dsl.cpp
parenta3d988ab8520ea12272bb80a746a2d91cbc332f5 (diff)
downloadqtlocation-mapboxgl-af89318b1d3bef15e92e591887c9d65b10be54ce.tar.gz
[core] Convert token strings to expressions
Diffstat (limited to 'src/mbgl/style/expression/dsl.cpp')
-rw-r--r--src/mbgl/style/expression/dsl.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/mbgl/style/expression/dsl.cpp b/src/mbgl/style/expression/dsl.cpp
index 5532e0a520..a851d82e16 100644
--- a/src/mbgl/style/expression/dsl.cpp
+++ b/src/mbgl/style/expression/dsl.cpp
@@ -7,26 +7,22 @@
#include <mbgl/style/expression/step.hpp>
#include <mbgl/style/expression/interpolate.hpp>
#include <mbgl/style/expression/compound_expression.hpp>
-#include <mbgl/util/ignore.hpp>
namespace mbgl {
namespace style {
namespace expression {
namespace dsl {
-template <class... Args>
-static std::vector<std::unique_ptr<Expression>> vec(Args... args) {
- std::vector<std::unique_ptr<Expression>> result;
- util::ignore({ (result.push_back(std::move(args)), 0)... });
- return result;
+static std::unique_ptr<Expression> compound(const char* op, std::vector<std::unique_ptr<Expression>> args) {
+ ParsingContext ctx;
+ ParseResult result = createCompoundExpression(op, std::move(args), ctx);
+ assert(result);
+ return std::move(*result);
}
template <class... Args>
static std::unique_ptr<Expression> compound(const char* op, Args... args) {
- ParsingContext ctx;
- ParseResult result = createCompoundExpression(op, vec(std::move(args)...), ctx);
- assert(result);
- return std::move(*result);
+ return compound(op, vec(std::move(args)...));
}
std::unique_ptr<Expression> error(std::string message) {
@@ -69,14 +65,14 @@ std::unique_ptr<Expression> boolean(std::unique_ptr<Expression> value) {
return std::make_unique<Assertion>(type::Boolean, vec(std::move(value)));
}
-std::unique_ptr<Expression> toColor(const char* value) {
- return toColor(literal(value));
-}
-
std::unique_ptr<Expression> toColor(std::unique_ptr<Expression> value) {
return std::make_unique<Coercion>(type::Color, vec(std::move(value)));
}
+std::unique_ptr<Expression> toString(std::unique_ptr<Expression> value) {
+ return compound("to-string", std::move(value));
+}
+
std::unique_ptr<Expression> get(const char* value) {
return get(literal(value));
}
@@ -177,6 +173,10 @@ std::unique_ptr<Expression> interpolate(Interpolator interpolator,
return std::move(*result);
}
+std::unique_ptr<Expression> concat(std::vector<std::unique_ptr<Expression>> inputs) {
+ return compound("concat", std::move(inputs));
+}
+
} // namespace dsl
} // namespace expression
} // namespace style