- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
void Argument::parseAsInt()
{
auto res = std::from_chars(data.data(), data.data() + data.size(), dataInt);
if (res.ec == std::errc()) {
setTypeFlag(ArgType::Int);
}
}
void Argument::parseAsFloat()
{
// Rww: gcc still does not support float from_chars(), lol
const char *begin = data.data();
const char *end = begin + data.size();
char *endPtr = nullptr;
dataFloat = std::strtof(begin, &endPtr);
if (endPtr == end || dataFloat != 0.0f) {
setTypeFlag(ArgType::Float);
} else {
for (const char *it = endPtr; it < end; it++) {
if (!std::isspace(*it)) {
return;
}
}
setTypeFlag(ArgType::Float);
}
}