diff --git a/graphics/meshes/shared.h b/graphics/meshes/shared.h index 316c1aa9..11fbcb94 100644 --- a/graphics/meshes/shared.h +++ b/graphics/meshes/shared.h @@ -12,28 +12,24 @@ #include -#include #include -#include +#include -//#include -#include -#include +#include -namespace aw { -namespace obj { +namespace aw::obj { constexpr string_view ws (" \t\v\f\r", 5); template bool parse1(string_view line, T& v) { - char* end; - std::string tmp(line); - // unfortunately, strto* requires string to be null-terminated - - v = strto( tmp.data(), &end ); - return (end != tmp.data()); + auto result = std::from_chars(begin(line), end(line), v); + if (result.ec != std::errc()) { + v = T(); + return false; + } + return true; } using split_func = std::vector(string_view, string_view); @@ -74,6 +70,6 @@ size_t parse3(string_view line, T(&arr)[3], string_view delim = ws) { return parse3(line, arr[0], arr[1], arr[2], delim); } -} // namespace obj -} // namespace aw +} // namespace aw::obj + #endif//aw_internal_obj_shared_h