From acabbacdee68ad80e829bda56ae5363d04646d2d Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Wed, 29 Oct 2025 10:39:30 +0100 Subject: kstd: clean up libc implementation --- libs/kstd/src/libc/string.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 libs/kstd/src/libc/string.cpp (limited to 'libs/kstd/src/libc/string.cpp') diff --git a/libs/kstd/src/libc/string.cpp b/libs/kstd/src/libc/string.cpp new file mode 100644 index 0000000..c6b3847 --- /dev/null +++ b/libs/kstd/src/libc/string.cpp @@ -0,0 +1,15 @@ +#include +#include + +namespace kstd::libc +{ + + extern "C" + { + auto strlen(const char * string) -> std::size_t + { + return std::distance(string, std::ranges::find(string, nullptr, '\0')); + } + } + +} // namespace kstd::libc \ No newline at end of file -- cgit v1.2.3 From b157e2c472d8bd67ac1656404a6a6ee821260f4b Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Wed, 29 Oct 2025 15:01:43 +0100 Subject: chore: reformat source code --- libs/kstd/src/libc/string.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libs/kstd/src/libc/string.cpp') diff --git a/libs/kstd/src/libc/string.cpp b/libs/kstd/src/libc/string.cpp index c6b3847..a42aedc 100644 --- a/libs/kstd/src/libc/string.cpp +++ b/libs/kstd/src/libc/string.cpp @@ -6,7 +6,7 @@ namespace kstd::libc extern "C" { - auto strlen(const char * string) -> std::size_t + auto strlen(char const * string) -> std::size_t { return std::distance(string, std::ranges::find(string, nullptr, '\0')); } -- cgit v1.2.3 From fc6d44be383213b7609b5e3c4778e235fb6b00c3 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 5 Dec 2025 18:48:44 +0100 Subject: kstd: implement memcmp --- libs/kstd/src/libc/string.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'libs/kstd/src/libc/string.cpp') diff --git a/libs/kstd/src/libc/string.cpp b/libs/kstd/src/libc/string.cpp index a42aedc..a9b85fc 100644 --- a/libs/kstd/src/libc/string.cpp +++ b/libs/kstd/src/libc/string.cpp @@ -1,5 +1,6 @@ #include #include +#include namespace kstd::libc { @@ -10,6 +11,20 @@ namespace kstd::libc { 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 \ No newline at end of file -- cgit v1.2.3 From 1945dd16716392e70e74efacd19e779f121bd1da Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 15 Dec 2025 16:46:51 +0100 Subject: chore: fix missing includes --- libs/kstd/src/libc/string.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'libs/kstd/src/libc/string.cpp') diff --git a/libs/kstd/src/libc/string.cpp b/libs/kstd/src/libc/string.cpp index a9b85fc..319f6fd 100644 --- a/libs/kstd/src/libc/string.cpp +++ b/libs/kstd/src/libc/string.cpp @@ -1,5 +1,7 @@ #include +#include #include +#include #include namespace kstd::libc -- cgit v1.2.3