#pragma once #include #include #include #include #include #include #include namespace mbgl { namespace style { namespace expression { namespace dsl { // 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. 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(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(); Interpolator exponential(double base); Interpolator cubicBezier(double x1, double y1, double x2, double y2); 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