diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-05-02 17:12:21 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-05-02 17:12:21 +0200 |
| commit | 3ab0a15fb6aba0ad9516da69589b9da8dbd63a8e (patch) | |
| tree | e79c1c0911c3b712a1b02c79d84f0ce5f643bc6c /libs/kstd/src | |
| parent | e8904a65e49dea8ce2e1d58eaa3fb60c7cd3443e (diff) | |
| download | kernel-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.cpp | 19 | ||||
| -rw-r--r-- | libs/kstd/src/libc/string.cpp | 78 | ||||
| -rw-r--r-- | libs/kstd/src/mutex.cpp | 38 | ||||
| -rw-r--r-- | libs/kstd/src/os/error.cpp | 12 | ||||
| -rw-r--r-- | libs/kstd/src/vformat.cpp | 209 |
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 |
