#include #include #include namespace kstd::libc { extern "C" { auto strlen(char const * string) -> std::size_t { return std::distance(string, std::ranges::find(string, nullptr, '\0')); } auto memcmp(void const * lhs, void const * rhs, std::size_t size) -> std::size_t { auto left_span = std::span{static_cast(lhs), size}; auto right_span = std::span{static_cast(rhs), size}; auto mismatched = std::ranges::mismatch(left_span, right_span); if (mismatched.in1 == left_span.end()) { return 0; } return std::bit_cast(*mismatched.in1) - std::bit_cast(*mismatched.in2); } } } // namespace kstd::libc