#pragma once #include #include #include #include #include namespace mbgl { template class LayoutProperty { public: explicit LayoutProperty(T v) : value(std::move(v)) {} void parse(const char * name, const JSValue& layout) { if (layout.HasMember(name)) { parsedValue = parseProperty(name, layout[name]); } } void calculate(const StyleCalculationParameters& parameters) { if (parsedValue) { NormalFunctionEvaluator evaluator; value = evaluator(*parsedValue, parameters); } } void operator=(const T& v) { value = v; } operator T() const { return value; } optional> parsedValue; T value; }; } // namespace mbgl