summaryrefslogtreecommitdiffhomepage
path: root/src/kernel/NeKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-29 21:40:49 -0500
committerGitHub <noreply@github.com>2025-11-29 21:40:49 -0500
commite0e8acd3db4ba1d50384f26305c6cc9021652840 (patch)
tree2dbea485a392789fc67aa590f8a7afb9f263be3c /src/kernel/NeKit
parent44ad26b648a79503303c596bb20a6995255dc630 (diff)
parentb456c928fecf78157270b052e441a427f06afdda (diff)
Merge pull request #94 from nekernel-org/dev
Vet.h and Ref.h
Diffstat (limited to 'src/kernel/NeKit')
-rw-r--r--src/kernel/NeKit/Array.h5
-rw-r--r--src/kernel/NeKit/ArrayList.h2
-rw-r--r--src/kernel/NeKit/Atom.h2
-rw-r--r--src/kernel/NeKit/Config.h (renamed from src/kernel/NeKit/Defines.h)0
-rw-r--r--src/kernel/NeKit/Crc32.h2
-rw-r--r--src/kernel/NeKit/CxxAbi.h2
-rw-r--r--src/kernel/NeKit/ErrorOr.h2
-rw-r--r--src/kernel/NeKit/Function.h2
-rw-r--r--src/kernel/NeKit/Json.h2
-rw-r--r--src/kernel/NeKit/KString.h2
-rw-r--r--src/kernel/NeKit/KernelPanic.h2
-rw-r--r--src/kernel/NeKit/MutableArray.h2
-rw-r--r--src/kernel/NeKit/OwnPtr.h15
-rw-r--r--src/kernel/NeKit/PageMgr.h2
-rw-r--r--src/kernel/NeKit/Pair.h2
-rw-r--r--src/kernel/NeKit/Ref.h5
-rw-r--r--src/kernel/NeKit/Stream.h2
-rw-r--r--src/kernel/NeKit/Utils.h2
-rw-r--r--src/kernel/NeKit/Variant.h2
-rw-r--r--src/kernel/NeKit/Vet.h34
20 files changed, 61 insertions, 28 deletions
diff --git a/src/kernel/NeKit/Array.h b/src/kernel/NeKit/Array.h
index 5b8371db..f4673b68 100644
--- a/src/kernel/NeKit/Array.h
+++ b/src/kernel/NeKit/Array.h
@@ -7,7 +7,7 @@
#pragma once
#include <KernelKit/DebugOutput.h>
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
#include <NeKit/ErrorOr.h>
namespace Kernel {
@@ -27,8 +27,7 @@ class Array final {
SizeT Capacity() { return N; }
SizeT Count() {
- const static SizeT kArrCnt = N;
- return kArrCnt; // avoid constexpr error.
+ return N; // avoid constexpr error.
}
const T* CData() { return fArray; }
diff --git a/src/kernel/NeKit/ArrayList.h b/src/kernel/NeKit/ArrayList.h
index 54613b67..d3225a50 100644
--- a/src/kernel/NeKit/ArrayList.h
+++ b/src/kernel/NeKit/ArrayList.h
@@ -6,7 +6,7 @@
#pragma once
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
namespace Kernel {
template <typename T>
diff --git a/src/kernel/NeKit/Atom.h b/src/kernel/NeKit/Atom.h
index 0f8eefbc..51808a0a 100644
--- a/src/kernel/NeKit/Atom.h
+++ b/src/kernel/NeKit/Atom.h
@@ -5,7 +5,7 @@
======================================== */
#pragma once
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
namespace Kernel {
template <typename T>
diff --git a/src/kernel/NeKit/Defines.h b/src/kernel/NeKit/Config.h
index e53616a9..e53616a9 100644
--- a/src/kernel/NeKit/Defines.h
+++ b/src/kernel/NeKit/Config.h
diff --git a/src/kernel/NeKit/Crc32.h b/src/kernel/NeKit/Crc32.h
index 125ee5b7..ecec9519 100644
--- a/src/kernel/NeKit/Crc32.h
+++ b/src/kernel/NeKit/Crc32.h
@@ -11,7 +11,7 @@
#ifndef NEKIT_CRC32_H
#define NEKIT_CRC32_H
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
namespace Kernel {
UInt32 ke_calculate_crc32(const VoidPtr crc, Int32 len);
diff --git a/src/kernel/NeKit/CxxAbi.h b/src/kernel/NeKit/CxxAbi.h
index 7b13d6b3..41956d3f 100644
--- a/src/kernel/NeKit/CxxAbi.h
+++ b/src/kernel/NeKit/CxxAbi.h
@@ -5,7 +5,7 @@
======================================== */
#pragma once
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
#ifndef __NECTI__
diff --git a/src/kernel/NeKit/ErrorOr.h b/src/kernel/NeKit/ErrorOr.h
index d930fe17..f0740488 100644
--- a/src/kernel/NeKit/ErrorOr.h
+++ b/src/kernel/NeKit/ErrorOr.h
@@ -9,7 +9,7 @@
#pragma once
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
#include <NeKit/Ref.h>
namespace Kernel {
diff --git a/src/kernel/NeKit/Function.h b/src/kernel/NeKit/Function.h
index 5dea8f85..1ceda345 100644
--- a/src/kernel/NeKit/Function.h
+++ b/src/kernel/NeKit/Function.h
@@ -6,7 +6,7 @@
#pragma once
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
#include <NeKit/ErrorOr.h>
namespace Kernel {
diff --git a/src/kernel/NeKit/Json.h b/src/kernel/NeKit/Json.h
index 82ce3b99..e6106a2b 100644
--- a/src/kernel/NeKit/Json.h
+++ b/src/kernel/NeKit/Json.h
@@ -10,7 +10,7 @@
/// @brief Kernel JSON API.
#include <CompilerKit/CompilerKit.h>
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
#include <NeKit/KString.h>
#include <NeKit/Stream.h>
#include <NeKit/Utils.h>
diff --git a/src/kernel/NeKit/KString.h b/src/kernel/NeKit/KString.h
index fa83fed4..fa0ebcbf 100644
--- a/src/kernel/NeKit/KString.h
+++ b/src/kernel/NeKit/KString.h
@@ -7,7 +7,7 @@
#pragma once
#include <CompilerKit/CompilerKit.h>
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
#include <NeKit/ErrorOr.h>
#include <NeKit/KernelPanic.h>
#include <NeKit/Utils.h>
diff --git a/src/kernel/NeKit/KernelPanic.h b/src/kernel/NeKit/KernelPanic.h
index f716e6de..cba8897c 100644
--- a/src/kernel/NeKit/KernelPanic.h
+++ b/src/kernel/NeKit/KernelPanic.h
@@ -7,7 +7,7 @@
#pragma once
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
namespace Kernel {
void ke_runtime_check(bool expr, const Char* file, const Char* line);
diff --git a/src/kernel/NeKit/MutableArray.h b/src/kernel/NeKit/MutableArray.h
index e14afbfe..6dafa5b9 100644
--- a/src/kernel/NeKit/MutableArray.h
+++ b/src/kernel/NeKit/MutableArray.h
@@ -7,7 +7,7 @@
#include <CompilerKit/CompilerKit.h>
#include <NeKit/Array.h>
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
#define RTL_TRY_FIND_NODE(NAME, NODE) \
auto* NAME = NODE; \
diff --git a/src/kernel/NeKit/OwnPtr.h b/src/kernel/NeKit/OwnPtr.h
index bec2813b..30c8f9eb 100644
--- a/src/kernel/NeKit/OwnPtr.h
+++ b/src/kernel/NeKit/OwnPtr.h
@@ -7,7 +7,7 @@
#pragma once
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
#include <NeKit/KernelPanic.h>
#include <NeKit/Ref.h>
@@ -21,8 +21,8 @@ class NonNullRefPtr;
template <typename T>
class OwnPtr final {
public:
- OwnPtr() {}
- ~OwnPtr() { this->Delete(); }
+ OwnPtr() = default;
+ ~OwnPtr() { this->Reset(); }
OwnPtr& operator=(const OwnPtr&) = default;
OwnPtr(const OwnPtr&) = default;
@@ -38,9 +38,8 @@ class OwnPtr final {
return fCls;
}
- void Delete() {
+ void Reset() {
if (fCls) delete fCls;
-
fCls = nullptr;
}
@@ -50,15 +49,15 @@ class OwnPtr final {
Ref<T> AsRef() { return Ref<T>(fCls); }
- operator bool() { return fCls; }
+ explicit operator bool() { return fCls; }
bool operator!() { return !fCls; }
private:
- T* fCls;
+ T* fCls{nullptr};
};
template <typename T, typename... Args>
-inline OwnPtr<T> mm_make_own_ptr(Args... args) {
+inline OwnPtr<T> make_ptr(Args... args) {
OwnPtr<T> ret;
ret.template New<Args...>(forward(args)...);
diff --git a/src/kernel/NeKit/PageMgr.h b/src/kernel/NeKit/PageMgr.h
index 6cdd5a5c..1bd489af 100644
--- a/src/kernel/NeKit/PageMgr.h
+++ b/src/kernel/NeKit/PageMgr.h
@@ -9,7 +9,7 @@
#pragma once
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
#include <NeKit/Ref.h>
namespace Kernel {
diff --git a/src/kernel/NeKit/Pair.h b/src/kernel/NeKit/Pair.h
index c8914ec6..6c67d508 100644
--- a/src/kernel/NeKit/Pair.h
+++ b/src/kernel/NeKit/Pair.h
@@ -7,7 +7,7 @@
#pragma once
#include <CompilerKit/CompilerKit.h>
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
#include <NeKit/ErrorOr.h>
namespace Kernel {
diff --git a/src/kernel/NeKit/Ref.h b/src/kernel/NeKit/Ref.h
index 59991442..ff8731e3 100644
--- a/src/kernel/NeKit/Ref.h
+++ b/src/kernel/NeKit/Ref.h
@@ -10,8 +10,9 @@
#include <CompilerKit/CompilerKit.h>
#include <KernelKit/HeapMgr.h>
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
#include <NeKit/KernelPanic.h>
+#include <NeKit/Vet.h>
namespace Kernel {
/// =========================================================== ///
@@ -43,7 +44,7 @@ class Ref final {
T operator*() { return fClass; }
- operator bool() { return true; }
+ operator bool() { return Vettable<T>::kValue; }
private:
T fClass;
diff --git a/src/kernel/NeKit/Stream.h b/src/kernel/NeKit/Stream.h
index 1a53e7f0..44b98e35 100644
--- a/src/kernel/NeKit/Stream.h
+++ b/src/kernel/NeKit/Stream.h
@@ -7,7 +7,7 @@
#pragma once
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
#include <NeKit/Ref.h>
namespace Kernel {
diff --git a/src/kernel/NeKit/Utils.h b/src/kernel/NeKit/Utils.h
index caabd2af..28a153af 100644
--- a/src/kernel/NeKit/Utils.h
+++ b/src/kernel/NeKit/Utils.h
@@ -6,7 +6,7 @@
#pragma once
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
namespace Kernel {
/// =========================================================== ///
diff --git a/src/kernel/NeKit/Variant.h b/src/kernel/NeKit/Variant.h
index 1b0fbe5d..a7257805 100644
--- a/src/kernel/NeKit/Variant.h
+++ b/src/kernel/NeKit/Variant.h
@@ -6,7 +6,7 @@
#pragma once
-#include <NeKit/Defines.h>
+#include <NeKit/Config.h>
#include <NeKit/Json.h>
#include <NeKit/KString.h>
#include <NeKit/TOML.h>
diff --git a/src/kernel/NeKit/Vet.h b/src/kernel/NeKit/Vet.h
new file mode 100644
index 00000000..d4c1060f
--- /dev/null
+++ b/src/kernel/NeKit/Vet.h
@@ -0,0 +1,34 @@
+
+/* ========================================
+
+ Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
+
+======================================== */
+
+#pragma once
+
+#include <CompilerKit/CompilerKit.h>
+#include <NeKit/Config.h>
+
+#define NE_VETTABLE : public IVet
+
+namespace Kernel {
+struct IVet {
+ IVet() = default;
+ virtual ~IVet() = default;
+
+ NE_COPY_DEFAULT(IVet)
+
+ operator bool() = delete;
+};
+
+template <typename T>
+struct Vettable final {
+ static constexpr bool kValue = false;
+};
+
+template <>
+struct Vettable<IVet> final {
+ static constexpr bool kValue = true;
+};
+} // namespace Kernel \ No newline at end of file