diff options
Diffstat (limited to 'include/mbgl/style/conversion/constant.hpp')
-rw-r--r-- | include/mbgl/style/conversion/constant.hpp | 86 |
1 files changed, 6 insertions, 80 deletions
diff --git a/include/mbgl/style/conversion/constant.hpp b/include/mbgl/style/conversion/constant.hpp index 3a9dd3e052..50d31ab9a8 100644 --- a/include/mbgl/style/conversion/constant.hpp +++ b/include/mbgl/style/conversion/constant.hpp @@ -1,7 +1,6 @@ #pragma once #include <mbgl/style/conversion.hpp> -#include <mbgl/util/optional.hpp> #include <mbgl/util/color.hpp> #include <mbgl/util/enum.hpp> #include <mbgl/util/string.hpp> @@ -16,38 +15,17 @@ namespace conversion { template <> struct Converter<bool> { - optional<bool> operator()(const Value& value, Error& error) const { - optional<bool> converted = toBool(value); - if (!converted) { - error = { "value must be a boolean" }; - return {}; - } - return *converted; - } + optional<bool> operator()(const Value& value, Error& error) const; }; template <> struct Converter<float> { - optional<float> operator()(const Value& value, Error& error) const { - optional<float> converted = toNumber(value); - if (!converted) { - error = { "value must be a number" }; - return {}; - } - return *converted; - } + optional<float> operator()(const Value& value, Error& error) const; }; template <> struct Converter<std::string> { - optional<std::string> operator()(const Value& value, Error& error) const { - optional<std::string> converted = toString(value); - if (!converted) { - error = { "value must be a string" }; - return {}; - } - return *converted; - } + optional<std::string> operator()(const Value& value, Error& error) const; }; template <class T> @@ -71,21 +49,7 @@ struct Converter<T, typename std::enable_if_t<std::is_enum<T>::value>> { template <> struct Converter<Color> { - optional<Color> operator()(const Value& value, Error& error) const { - optional<std::string> string = toString(value); - if (!string) { - error = { "value must be a string" }; - return {}; - } - - optional<Color> color = Color::parse(*string); - if (!color) { - error = { "value must be a valid color" }; - return {}; - } - - return *color; - } + optional<Color> operator()(const Value& value, Error& error) const; }; template <size_t N> @@ -111,50 +75,12 @@ struct Converter<std::array<float, N>> { template <> struct Converter<std::vector<float>> { - optional<std::vector<float>> operator()(const Value& value, Error& error) const { - if (!isArray(value)) { - error = { "value must be an array" }; - return {}; - } - - std::vector<float> result; - result.reserve(arrayLength(value)); - - for (std::size_t i = 0; i < arrayLength(value); ++i) { - optional<float> number = toNumber(arrayMember(value, i)); - if (!number) { - error = { "value must be an array of numbers" }; - return {}; - } - result.push_back(*number); - } - - return result; - } + optional<std::vector<float>> operator()(const Value& value, Error& error) const; }; template <> struct Converter<std::vector<std::string>> { - optional<std::vector<std::string>> operator()(const Value& value, Error& error) const { - if (!isArray(value)) { - error = { "value must be an array" }; - return {}; - } - - std::vector<std::string> result; - result.reserve(arrayLength(value)); - - for (std::size_t i = 0; i < arrayLength(value); ++i) { - optional<std::string> string = toString(arrayMember(value, i)); - if (!string) { - error = { "value must be an array of strings" }; - return {}; - } - result.push_back(*string); - } - - return result; - } + optional<std::vector<std::string>> operator()(const Value& value, Error& error) const; }; } // namespace conversion |