//===----------------------------------------------------------------------===// // // 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