Browse Source

Move std::stou to integer.h, add intToHex util

master
Riyyi 4 years ago
parent
commit
e106f0ba8d
  1. 4
      inferno/src/inferno/render/font.cpp
  2. 27
      inferno/src/inferno/util/integer.h
  3. 33
      inferno/src/inferno/util/string.h

4
inferno/src/inferno/render/font.cpp

@ -1,11 +1,11 @@
#include <limits> // std::numeric_limits #include <limits> // std::numeric_limits
#include <string> // std::getline #include <string> // std::getline, std::stoi
#include "inferno/assert.h" #include "inferno/assert.h"
#include "inferno/io/file.h" #include "inferno/io/file.h"
#include "inferno/render/font.h" #include "inferno/render/font.h"
#include "inferno/render/texture.h" #include "inferno/render/texture.h"
#include "inferno/util/string.h" #include "inferno/util/integer.h"
namespace Inferno { namespace Inferno {

27
inferno/src/inferno/util/integer.h

@ -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

33
inferno/src/inferno/util/string.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…
Cancel
Save