blob: a2605beb9ee76d9631f4c31a46e01ac4d88cca34 [file] [log] [blame]
#include "casbin/pch.h"
#ifndef XTOI_CPP
#define XTOI_CPP
#include "casbin/ip_parser/parser/xtoi.h"
namespace casbin {
std::pair<int, int> xtoi(std::string_view s) {
int n = 0;
int i = 0;
std::pair<int, int> p;
for (i = 0; i < s.length(); i++) {
if ('0' <= s[i] && s[i] <= '9') {
n *= 16;
n += int(s[i] - '0');
} else if ('a' <= s[i] && s[i] <= 'f') {
n *= 16;
n += int(s[i] - 'a') + 10;
} else if ('A' <= s[i] && s[i] <= 'F') {
n *= 16;
n += int(s[i] - 'A') + 10;
} else {
break;
}
if (n >= big) {
p.first = 0;
p.second = i;
return p;
}
}
if (i == 0) {
p.first = 0;
p.second = i;
return p;
}
p.first = n;
p.second = i;
return p;
}
} // namespace casbin
#endif // XTOI_CPP