#pragma once #include #include #include #include #include #include #include namespace mbgl { namespace style { namespace expression { /// This convenience API does little to no expression validation or /// type-checking, and is intended for use only by test and other non-production /// code. namespace dsl { template std::vector> vec(Args... args) { std::vector> result; util::ignore({(result.push_back(std::move(args)), 0)...}); return result; } std::unique_ptr createExpression(const char* expr); std::unique_ptr createExpression(const mbgl::style::conversion::Convertible& expr); std::unique_ptr error(std::string); std::unique_ptr literal(const char* value); std::unique_ptr literal(Value&& value); std::unique_ptr literal(const Value& value); std::unique_ptr literal(std::initializer_list value); std::unique_ptr literal(std::initializer_list value); std::unique_ptr assertion(type::Type, std::unique_ptr, std::unique_ptr def = nullptr); std::unique_ptr number(std::unique_ptr, std::unique_ptr def = nullptr); std::unique_ptr string(std::unique_ptr, std::unique_ptr def = nullptr); std::unique_ptr boolean(std::unique_ptr, std::unique_ptr def = nullptr); std::unique_ptr toColor(std::unique_ptr, std::unique_ptr def = nullptr); std::unique_ptr toString(std::unique_ptr, std::unique_ptr def = nullptr); std::unique_ptr toFormatted(std::unique_ptr, std::unique_ptr def = nullptr); std::unique_ptr toImage(std::unique_ptr, std::unique_ptr def = nullptr); std::unique_ptr get(const char* value); std::unique_ptr get(std::unique_ptr); std::unique_ptr id(); std::unique_ptr zoom(); std::unique_ptr eq(std::unique_ptr, std::unique_ptr); std::unique_ptr ne(std::unique_ptr, std::unique_ptr); std::unique_ptr gt(std::unique_ptr, std::unique_ptr); std::unique_ptr lt(std::unique_ptr, std::unique_ptr); std::unique_ptr step(std::unique_ptr input, std::unique_ptr output0, double input1, std::unique_ptr output1); Interpolator linear() noexcept; Interpolator exponential(double base) noexcept; Interpolator cubicBezier(double x1, double y1, double x2, double y2) noexcept; std::unique_ptr interpolate(Interpolator interpolator, std::unique_ptr input, double input1, std::unique_ptr output1); std::unique_ptr interpolate(Interpolator interpolator, std::unique_ptr input, double input1, std::unique_ptr output1, double input2, std::unique_ptr output2); std::unique_ptr interpolate(Interpolator interpolator, std::unique_ptr input, double input1, std::unique_ptr output1, double input2, std::unique_ptr output2, double input3, std::unique_ptr output3); std::unique_ptr concat(std::vector> inputs); std::unique_ptr format(const char* value); std::unique_ptr format(std::unique_ptr); std::unique_ptr image(const char* value); std::unique_ptr image(std::unique_ptr); } // namespace dsl } // namespace expression } // namespace style } // namespace mbgl