#include #include #include #include #include #include namespace llarp { bool CaselessLessThan::operator()(string_view lhs, string_view rhs) const { const size_t s = std::min(lhs.size(), rhs.size()); for(size_t i = 0; i < s; ++i) { auto l = std::tolower(lhs[i]); auto r = std::tolower(rhs[i]); if(l < r) { return true; } if(l > r) { return false; } } return lhs.size() < rhs.size(); } bool IsFalseValue(string_view str) { static const std::set< string_view, CaselessLessThan > vals{"no", "false", "0", "off"}; return vals.count(str) > 0; } bool IsTrueValue(string_view str) { static const std::set< string_view, CaselessLessThan > vals{"yes", "true", "1", "on"}; return vals.count(str) > 0; } bool StrEq(const char* s1, const char* s2) { size_t sz1 = strlen(s1); size_t sz2 = strlen(s2); if(sz1 == sz2) { return strncmp(s1, s2, sz1) == 0; } return false; } } // namespace llarp