From dafb757549b5238f67c49b2c8c0a1b44aedf0bd4 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Fri, 12 Dec 2025 09:27:10 +0100 Subject: chore: make Ref `operator bool` explicit, remove useless `MUST_PASS` in TLS.inl, use `CFRef` in LaunchHelpers. Signed-off-by: Amlal El Mahrouss --- src/kernel/NeKit/ErrorOr.h | 2 +- src/kernel/NeKit/Ref.h | 2 +- src/kernel/NeKit/Utils.h | 12 +++++++++++- src/kernel/NeKit/Vettable.h | 6 +++--- 4 files changed, 16 insertions(+), 6 deletions(-) (limited to 'src/kernel/NeKit') diff --git a/src/kernel/NeKit/ErrorOr.h b/src/kernel/NeKit/ErrorOr.h index a8280406..4e43cb27 100644 --- a/src/kernel/NeKit/ErrorOr.h +++ b/src/kernel/NeKit/ErrorOr.h @@ -16,7 +16,7 @@ namespace Kernel { /// ================================================================================ /// @brief ErrorOr class for error handling. /// ================================================================================ -template +template class ErrorOr final { public: explicit ErrorOr() = default; diff --git a/src/kernel/NeKit/Ref.h b/src/kernel/NeKit/Ref.h index 960df31f..253ee379 100644 --- a/src/kernel/NeKit/Ref.h +++ b/src/kernel/NeKit/Ref.h @@ -46,7 +46,7 @@ class Ref final { Type operator*() { return fClass; } - operator bool() { return Vettable::kValue; } + explicit operator bool() { return Vettable::kValue; } bool operator!() { return !Vettable::kValue; } private: diff --git a/src/kernel/NeKit/Utils.h b/src/kernel/NeKit/Utils.h index 28a153af..71cae42b 100644 --- a/src/kernel/NeKit/Utils.h +++ b/src/kernel/NeKit/Utils.h @@ -51,12 +51,22 @@ Size urt_string_len(const Utf8Char* str); /// =========================================================== /// template -inline SizeT oe_string_len(const CharType* str) { +inline constexpr SizeT oe_string_len(const CharType* str) { if (!str) return 0; +#if __cplusplus == 202302L + if consteval { + return ARRAY_SIZE(str); + } else { + SizeT len{0}; + while (str[len] != 0) ++len; + return len; + } +#else SizeT len{0}; while (str[len] != 0) ++len; return len; +#endif } } // namespace Kernel diff --git a/src/kernel/NeKit/Vettable.h b/src/kernel/NeKit/Vettable.h index 52528847..6769507f 100644 --- a/src/kernel/NeKit/Vettable.h +++ b/src/kernel/NeKit/Vettable.h @@ -29,7 +29,7 @@ struct INotVettable { NE_COPY_DEFAULT(INotVettable) }; -template +template struct Vettable final { static constexpr bool kValue = false; }; @@ -50,9 +50,9 @@ concept IsVettable = requires(OnFallback fallback) { { Vettable::kValue ? true : fallback() }; }; -template +template concept IsNotVettable = requires(OnFallback fallback) { - { !Vettable::kValue ? true : fallback() }; + { !Vettable::kValue ? true : fallback() }; }; } // namespace Kernel -- cgit v1.2.3