//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LIBCPP_TEST_SUPPORT_PARSE_INTEGER_H #define LIBCPP_TEST_SUPPORT_PARSE_INTEGER_H #include namespace detail { template struct parse_integer_impl; template <> struct parse_integer_impl { template int operator()(std::basic_string const& str) const { return std::stoi(str); } }; template <> struct parse_integer_impl { template long operator()(std::basic_string const& str) const { return std::stol(str); } }; template <> struct parse_integer_impl { template long long operator()(std::basic_string const& str) const { return std::stoll(str); } }; template <> struct parse_integer_impl { template unsigned int operator()(std::basic_string const& str) const { return std::stoul(str); } }; template <> struct parse_integer_impl { template unsigned long operator()(std::basic_string const& str) const { return std::stoul(str); } }; template <> struct parse_integer_impl { template unsigned long long operator()(std::basic_string const& str) const { return std::stoull(str); } }; } // end namespace detail template T parse_integer(std::basic_string const& str) { return detail::parse_integer_impl()(str); } #endif // LIBCPP_TEST_SUPPORT_PARSE_INTEGER_H