Porytiles
Loading...
Searching...
No Matches
parsing.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <expected>
4#include <string>
5
6namespace porytiles {
7
8// ReSharper disable once CppParameterMayBeConst
9template <typename T>
10std::expected<T, std::string> ParseInt(std::string_view int_string, const int base) {
11 T arg;
12 std::size_t pos;
13
14 try {
15 arg = std::stoi(int_string.data(), &pos, base);
16 } catch (const std::exception &e) {
17 return std::unexpected{"invalid integral string: " + std::string{int_string}};
18 }
19 if (std::string{int_string}.size() != pos) {
20 return std::unexpected{"invalid integral string: " + std::string{int_string}};
21 }
22
23 return arg;
24}
25
26// ReSharper disable once CppParameterMayBeConst
27template <typename T>
28std::expected<T, std::string> ParseInt(std::string_view int_string) {
29 return ParseInt<T>(int_string, 0);
30}
31
32} // namespace porytiles
std::expected< T, std::string > ParseInt(std::string_view int_string, const int base)
Definition parsing.hpp:10