Move native/util, native/data and native/i18 to Common/Data.
Also move colorutil.cpp/h linking build fix experiment Delete a bunch of unused CMakeLists.txt files CMakeLists.txt linking fix Don't include NativeApp.h from any headers. Android.mk buildfix Half of the UWP fix Buildfix Minor project file cleanup Buildfixes Guess what? More buildfixes!
This commit is contained in:
parent
5c9b7bb859
commit
ff8148dd92
191 changed files with 583 additions and 797 deletions
83
Common/Data/Text/Parsers.cpp
Normal file
83
Common/Data/Text/Parsers.cpp
Normal file
|
@ -0,0 +1,83 @@
|
|||
#include <climits>
|
||||
#include <cstdio>
|
||||
#include <string>
|
||||
|
||||
#include "Common/Data/Text/Parsers.h"
|
||||
|
||||
#include "Common/StringUtils.h"
|
||||
|
||||
bool Version::ParseVersionString(std::string str) {
|
||||
if (str.empty())
|
||||
return false;
|
||||
if (str[0] == 'v')
|
||||
str = str.substr(1);
|
||||
if (3 != sscanf(str.c_str(), "%i.%i.%i", &major, &minor, &sub)) {
|
||||
sub = 0;
|
||||
if (2 != sscanf(str.c_str(), "%i.%i", &major, &minor))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string Version::ToString() const {
|
||||
char temp[128];
|
||||
sprintf(temp, "%i.%i.%i", major, minor, sub);
|
||||
return std::string(temp);
|
||||
}
|
||||
|
||||
int Version::ToInteger() const {
|
||||
// This allows for ~2000 major versions, ~100 minor versions, and ~10000 sub versions.
|
||||
return major * 1000000 + minor * 10000 + sub;
|
||||
}
|
||||
|
||||
bool ParseMacAddress(std::string str, uint8_t macAddr[6]) {
|
||||
unsigned int mac[6];
|
||||
if (6 != sscanf(str.c_str(), "%02x:%02x:%02x:%02x:%02x:%02x", &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5])) {
|
||||
return false;
|
||||
}
|
||||
for (int i = 0; i < 6; i++) {
|
||||
macAddr[i] = mac[i];
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TryParse(const std::string &str, uint32_t *const output) {
|
||||
char *endptr = NULL;
|
||||
|
||||
// Holy crap this is ugly.
|
||||
|
||||
// Reset errno to a value other than ERANGE
|
||||
errno = 0;
|
||||
|
||||
unsigned long value = strtoul(str.c_str(), &endptr, 0);
|
||||
|
||||
if (!endptr || *endptr)
|
||||
return false;
|
||||
|
||||
if (errno == ERANGE)
|
||||
return false;
|
||||
|
||||
if (ULONG_MAX > UINT_MAX) {
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning (disable:4309)
|
||||
#endif
|
||||
// Note: The typecasts avoid GCC warnings when long is 32 bits wide.
|
||||
if (value >= static_cast<unsigned long>(0x100000000ull)
|
||||
&& value <= static_cast<unsigned long>(0xFFFFFFFF00000000ull))
|
||||
return false;
|
||||
}
|
||||
|
||||
*output = static_cast<uint32_t>(value);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TryParse(const std::string &str, bool *const output) {
|
||||
if ("1" == str || !strcasecmp("true", str.c_str()))
|
||||
*output = true;
|
||||
else if ("0" == str || !strcasecmp("false", str.c_str()))
|
||||
*output = false;
|
||||
else
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue