aboutsummaryrefslogtreecommitdiff
path: root/libs/kstd/src
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-05-02 17:12:21 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-05-02 17:12:21 +0200
commit3ab0a15fb6aba0ad9516da69589b9da8dbd63a8e (patch)
treee79c1c0911c3b712a1b02c79d84f0ce5f643bc6c /libs/kstd/src
parente8904a65e49dea8ce2e1d58eaa3fb60c7cd3443e (diff)
downloadkernel-3ab0a15fb6aba0ad9516da69589b9da8dbd63a8e.tar.xz
kernel-3ab0a15fb6aba0ad9516da69589b9da8dbd63a8e.zip
libs: adopt p1204 layout for kstd
Diffstat (limited to 'libs/kstd/src')
-rw-r--r--libs/kstd/src/libc/stdlib.cpp19
-rw-r--r--libs/kstd/src/libc/string.cpp78
-rw-r--r--libs/kstd/src/mutex.cpp38
-rw-r--r--libs/kstd/src/os/error.cpp12
-rw-r--r--libs/kstd/src/vformat.cpp209
5 files changed, 0 insertions, 356 deletions
diff --git a/libs/kstd/src/libc/stdlib.cpp b/libs/kstd/src/libc/stdlib.cpp
deleted file mode 100644
index a18fed0..0000000
--- a/libs/kstd/src/libc/stdlib.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-#include <kstd/os/error.hpp>
-
-namespace kstd::libc
-{
-
- extern "C"
- {
- [[noreturn]] auto abort() -> void
- {
- kstd::os::abort();
- }
-
- [[noreturn, gnu::weak]] auto free(void *) -> void
- {
- kstd::os::panic("Tried to call free.");
- }
- }
-
-} // namespace kstd::libc \ No newline at end of file
diff --git a/libs/kstd/src/libc/string.cpp b/libs/kstd/src/libc/string.cpp
deleted file mode 100644
index c9fada1..0000000
--- a/libs/kstd/src/libc/string.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-#include <kstd/cstring>
-
-#include <algorithm>
-#include <bit>
-#include <cstddef>
-#include <iterator>
-#include <span>
-
-namespace kstd::libc
-{
-
- auto memcpy(void * dest, void const * src, std::size_t size) noexcept -> void *
- {
- auto dest_span = std::span{static_cast<std::byte *>(dest), size};
- auto src_span = std::span{static_cast<std::byte const *>(src), size};
-
- for (std::size_t i = 0; i < size; ++i)
- {
- dest_span[i] = src_span[i];
- }
-
- return dest;
- }
-
- auto memset(void * dest, int value, std::size_t size) noexcept -> void *
- {
- auto const byte_value = static_cast<std::byte>(static_cast<unsigned char>(value));
- auto dest_span = std::span{static_cast<std::byte *>(dest), size};
-
- for (std::size_t i = 0; i < size; ++i)
- {
- dest_span[i] = byte_value;
- }
-
- return dest;
- }
-
- auto memcmp(void const * lhs, void const * rhs, std::size_t size) noexcept -> int
- {
- auto left_span = std::span{static_cast<std::byte const *>(lhs), size};
- auto right_span = std::span{static_cast<std::byte const *>(rhs), size};
- auto mismatched = std::ranges::mismatch(left_span, right_span);
-
- if (mismatched.in1 == left_span.end())
- {
- return 0;
- }
-
- return std::bit_cast<char>(*mismatched.in1) - std::bit_cast<char>(*mismatched.in2);
- }
-
- auto memmove(void * dest, void const * src, std::size_t size) noexcept -> void *
- {
- auto dest_span = std::span{static_cast<std::byte *>(dest), size};
- auto src_span = std::span{static_cast<std::byte const *>(src), size};
- if (dest < src)
- {
- for (std::size_t i = 0; i < size; ++i)
- {
- dest_span[i] = src_span[i];
- }
- }
- else
- {
- for (std::size_t i = size; i > 0; --i)
- {
- dest_span[i - 1] = src_span[i - 1];
- }
- }
- return dest;
- }
-
- auto strlen(char const * string) noexcept -> std::size_t
- {
- return std::distance(string, std::ranges::find(string, nullptr, '\0'));
- }
-
-} // namespace kstd::libc \ No newline at end of file
diff --git a/libs/kstd/src/mutex.cpp b/libs/kstd/src/mutex.cpp
deleted file mode 100644
index 7387657..0000000
--- a/libs/kstd/src/mutex.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-#include <kstd/mutex>
-
-#include <kstd/os/error.hpp>
-
-#include <atomic>
-
-namespace kstd
-{
-
- mutex::mutex() = default;
-
- mutex::~mutex()
- {
- if (m_locked.test(std::memory_order_relaxed))
- {
- os::panic("[KSTD] Tried to destroy a locked mutex.");
- }
- }
-
- auto mutex::lock() -> void
- {
- while (!try_lock())
- {
- asm volatile("nop");
- }
- }
-
- auto mutex::try_lock() -> bool
- {
- return !m_locked.test_and_set(std::memory_order_acquire);
- }
-
- auto mutex::unlock() -> void
- {
- m_locked.clear(std::memory_order_release);
- }
-
-} // namespace kstd
diff --git a/libs/kstd/src/os/error.cpp b/libs/kstd/src/os/error.cpp
deleted file mode 100644
index f969cb5..0000000
--- a/libs/kstd/src/os/error.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <kstd/os/error.hpp>
-
-namespace kstd::os
-{
-
- [[gnu::weak, noreturn]]
- auto abort() -> void
- {
- os::panic("Abort called.");
- }
-
-} // namespace kstd::os \ No newline at end of file
diff --git a/libs/kstd/src/vformat.cpp b/libs/kstd/src/vformat.cpp
deleted file mode 100644
index b7c5121..0000000
--- a/libs/kstd/src/vformat.cpp
+++ /dev/null
@@ -1,209 +0,0 @@
-#include <kstd/format>
-#include <kstd/string>
-
-#include <cstddef>
-#include <iterator>
-#include <string_view>
-#include <utility>
-
-namespace kstd::bits::format
-{
-
- auto vformat_to(output_buffer & buffer, std::string_view format, format_args args) -> void
- {
- auto context = kstd::format_context{buffer, args};
- auto parse_context = kstd::format_parse_context{format, args.size()};
-
- auto it = parse_context.begin();
- auto end = parse_context.end();
-
- while (it != end)
- {
- if (*it != '{' && *it != '}')
- {
- auto start = it;
- while (it != end && *it != '{' && *it != '}')
- {
- std::advance(it, 1);
- }
- parse_context.advance_to(it);
- context.push(std::string_view(start, it - start));
- continue;
- }
-
- if (*it == '{')
- {
- std::advance(it, 1);
- if (it != end && *it == '{')
- {
- context.push('{');
- std::advance(it, 1);
- parse_context.advance_to(it);
- continue;
- }
-
- parse_context.advance_to(it);
- auto index = 0uz;
-
- if (it != end && *it >= '0' && *it <= '9')
- {
- while (it != end && *it >= '0' && *it <= '9')
- {
- index = index * 10 + static_cast<std::size_t>(*it - '0');
- std::advance(it, 1);
- }
- parse_context.check_arg_id(index);
- }
- else
- {
- index = parse_context.next_arg_id();
- }
-
- if (it != end && *it == ':')
- {
- std::advance(it, 1);
- }
-
- parse_context.advance_to(it);
-
- if (index < args.size())
- {
- auto const & arg = args[index];
- switch (arg.type)
- {
- case kstd::bits::format::arg_type::boolean:
- {
- auto fmt = kstd::formatter<bool>{};
- auto const parsed = fmt.parse(parse_context);
- parse_context.advance_to(parsed);
- fmt.format(arg.value.boolean, context);
- break;
- }
- case kstd::bits::format::arg_type::character:
- {
- auto fmt = kstd::formatter<char>{};
- auto const parsed = fmt.parse(parse_context);
- parse_context.advance_to(parsed);
- fmt.format(arg.value.character, context);
- break;
- }
- case kstd::bits::format::arg_type::integer:
- {
- auto fmt = kstd::formatter<long long>{};
- auto const parsed = fmt.parse(parse_context);
- parse_context.advance_to(parsed);
- fmt.format(arg.value.integer, context);
- break;
- }
- case kstd::bits::format::arg_type::unsigned_integer:
- {
- auto fmt = kstd::formatter<unsigned long long>{};
- auto const parsed = fmt.parse(parse_context);
- parse_context.advance_to(parsed);
- fmt.format(arg.value.unsigned_integer, context);
- break;
- }
- case kstd::bits::format::arg_type::string_view:
- {
- auto fmt = kstd::formatter<std::string_view>{};
- auto const parsed = fmt.parse(parse_context);
- parse_context.advance_to(parsed);
- fmt.format(arg.value.string_view, context);
- break;
- }
- case kstd::bits::format::arg_type::c_string:
- {
- auto fmt = kstd::formatter<char const *>{};
- auto const parsed = fmt.parse(parse_context);
- parse_context.advance_to(parsed);
- fmt.format(arg.value.c_string, context);
- break;
- }
- case kstd::bits::format::arg_type::pointer:
- {
- auto fmt = kstd::formatter<void const *>{};
- auto const parsed = fmt.parse(parse_context);
- parse_context.advance_to(parsed);
- fmt.format(arg.value.pointer, context);
- break;
- }
- case kstd::bits::format::arg_type::user_defined:
- {
- if (arg.value.user_defined.format)
- {
- arg.value.user_defined.format(arg.value.user_defined.pointer, parse_context, context);
- }
- else
- {
- context.push("{?}");
- }
- break;
- }
- default:
- {
- context.push("{fmt-err: unknown-type}");
- break;
- }
- }
- }
- else
- {
- context.push("{fmt-err: bound}");
- }
-
- it = parse_context.begin();
-
- if (it != end && *it == '}')
- {
- std::advance(it, 1);
- parse_context.advance_to(it);
- }
- else
- {
- context.push("{fmt-err: unconsumed}");
- while (it != end && *it != '}')
- {
- std::advance(it, 1);
- }
-
- if (it != end)
- {
- std::advance(it, 1);
- parse_context.advance_to(it);
- }
- }
- }
- else if (*it == '}')
- {
- std::advance(it, 1);
- if (it != end && *it == '}')
- {
- context.push('}');
- std::advance(it, 1);
- parse_context.advance_to(it);
- }
- else
- {
- context.push("{fmt-err: unescaped}");
- parse_context.advance_to(it);
- }
- }
- }
- }
-
- auto string_writer::push(std::string_view text) -> void
- {
- m_result.append(text);
- }
-
- auto string_writer::push(char character) -> void
- {
- m_result.push_back(character);
- }
-
- auto string_writer::release() -> string &&
- {
- return std::move(m_result);
- }
-
-} // namespace kstd::bits::format \ No newline at end of file