#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
