Riyyi
4 years ago
3 changed files with 43 additions and 21 deletions
@ -0,0 +1,27 @@ |
|||||||
|
#ifndef INTEGER_UTIL_H |
||||||
|
#define INTEGER_UTIL_H |
||||||
|
|
||||||
|
#include <limits> // std::numeric_limits |
||||||
|
#include <string> // std::string, std::stoul |
||||||
|
|
||||||
|
#include "inferno/assert.h" |
||||||
|
|
||||||
|
namespace std { |
||||||
|
|
||||||
|
// Can't believe this is not in the standard library
|
||||||
|
|
||||||
|
inline uint32_t stou(const std::string& string) |
||||||
|
{ |
||||||
|
unsigned long size = std::stoul(string); |
||||||
|
ASSERT(size <= std::numeric_limits<uint32_t>::max(), "String util not in uint32_t range '{}'", string); |
||||||
|
return static_cast<uint32_t>(size); |
||||||
|
} |
||||||
|
|
||||||
|
inline uint32_t stou(const char* string) |
||||||
|
{ |
||||||
|
return stou(std::string(string)); |
||||||
|
} |
||||||
|
|
||||||
|
} // namespace std
|
||||||
|
|
||||||
|
#endif // INTEGER_UTIL_H
|
@ -1,27 +1,22 @@ |
|||||||
#ifndef UTIL_STRING_H |
#ifndef STRING_UTIL_H |
||||||
#define UTIL_STRING_H |
#define STRING_UTIL_H |
||||||
|
|
||||||
#include <limits> // std::numeric_limits |
#include <iomanip> // std::setfill, std::setw |
||||||
#include <string> // std::string, std::stoul |
#include <sstream> // std::stringstream |
||||||
|
|
||||||
#include "inferno/assert.h" |
namespace Inferno { |
||||||
|
|
||||||
namespace std { |
template<typename T> |
||||||
|
std::string intToHex(T i) |
||||||
// Can't believe this is not in the standard library
|
|
||||||
|
|
||||||
inline uint32_t stou(const std::string& string) |
|
||||||
{ |
{ |
||||||
unsigned long size = std::stoul(string); |
std::stringstream stream; |
||||||
ASSERT(size <= std::numeric_limits<uint32_t>::max(), "String util not in uint32_t range '{}'", string); |
stream << "0x" |
||||||
return static_cast<uint32_t>(size); |
<< std::setfill('0') << std::setw(sizeof(T) * 2) |
||||||
} |
<< std::hex << i; |
||||||
|
|
||||||
inline uint32_t stou(const char* string) |
return stream.str(); |
||||||
{ |
|
||||||
return stou(std::string(string)); |
|
||||||
} |
} |
||||||
|
|
||||||
} // namespace std
|
} // namespace Inferno
|
||||||
|
|
||||||
#endif // UTIL_STRING_H
|
#endif // STRING_UTIL_H
|
||||||
|
Loading…
Reference in new issue