diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-15 17:24:28 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-15 17:24:28 +0100 |
| commit | 68d7aa8875225e87b81a8b3792ad929281f3689f (patch) | |
| tree | e04accaa65625cbe301fda86fe2f955fcc22aa92 /source/wg01 | |
| parent | 80b92ee2af4790e0f4740f4a185f5de41e3f96c3 (diff) | |
chore: new version of WG01, which improved the Vettable system.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'source/wg01')
| -rw-r--r-- | source/wg01/wg01.tex | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/source/wg01/wg01.tex b/source/wg01/wg01.tex index ea3caf6..4d22f1f 100644 --- a/source/wg01/wg01.tex +++ b/source/wg01/wg01.tex @@ -71,9 +71,9 @@ One example of such implementation may be: \begin{lstlisting} /// Reference Implementation: https://github.com -/// /nekernel-org/nekernel/blob/stable/src/kernel/ +/// /nekernel-org/nekernel/blob/develop/src/kernel/ /// KernelKit/CoreProcessScheduler.h#L51-L76 -/// AND: https://github.com/nekernel-org/nekernel/blob/stable/src/kernel +/// AND: https://github.com/nekernel-org/nekernel/blob/develop/src/kernel /// /KernelKit/CoreProcessScheduler.h#L78-L105 struct FileTree final { @@ -89,7 +89,7 @@ struct MemoryTree final { static constexpr bool is_file = false; /// ... }; -\end{lstlisting} Source: \href{https://github.com/nekernel-org/nekernel/blob/stable/src/kernel/KernelKit/CoreProcessScheduler.h#L78-L105}{https://github.com/nekernel-org/nekernel/blob/stable/src/kernel/KernelKit/CoreProcessScheduler.h} Which is why the `constexpr' keyword is very powerful here for the Compile-Time Evaluation Domain, we avoid the many pitfalls of the Run-Time Evaluation Domain. +\end{lstlisting} Source: \href{https://github.com/nekernel-org/nekernel/blob/develop/src/kernel/KernelKit/CoreProcessScheduler.h#L78-L105}{https://github.com/nekernel-org/nekernel/blob/develop/src/kernel/KernelKit/CoreProcessScheduler.h} Which is why the `constexpr' keyword is very powerful here for the Compile-Time Evaluation Domain, we avoid the many pitfalls of the Run-Time Evaluation Domain. \subsection{Part Three: Memory and C++ Classes.} { @@ -127,23 +127,13 @@ int main() { \end{lstlisting} The following can instead be done to achieve similar results using the Compile-Time Evaluation Domain. \begin{lstlisting} -/// Reference implementation: -/// https://github.com/nekernel-org -/// /nekernel/blob/stable/src/libDDK/DriverKit -/// /c%2B%2B/driver_base.h -/// @brief This concept requires the driver -/// to be IDriverBase compliant. - inline constexpr auto kInvalidType = 0; template <class Driver> concept IsValidDriver = requires(Driver drv) { { drv.IsActive() && drv.Type() > kInvalidType }; }; - -template<IsValidDriver T> -consteval void ce_ddk_is_valid(T) {} -\end{lstlisting} Source: \href{https://github.com/nekernel-org/nekernel/blob/stable/src/libDDK/DriverKit/c%2B%2B/driver_base.h}{https://github.com/nekernel-org/nekernel/blob/stable/src/libDDK/DriverKit/c\%2B\%2B/driver\_base.h} Now, the problem with freestanding development is that such feature may be abused, and it is mitigated by following the TTPI. +\end{lstlisting} Source: \href{https://github.com/nekernel-org/nekernel/blob/develop/src/libDDK/DriverKit/c%2B%2B/driver_base.h}{https://github.com/nekernel-org/nekernel/blob/develop/src/libDDK/DriverKit/c\%2B\%2B/driver\_base.h} Now, the problem with freestanding development is that such feature may be abused, and it is mitigated by following the TTPI. \subsection{The Three Prongs on Inheritance Decision Framework.} @@ -183,14 +173,14 @@ struct Vettable<IVettable> final { static constexpr bool kValue = true; }; -using FallbackType = bool (*)(bool); +using FallbackType = bool (*)(bool type_value); /// @brief Concept version of Vettable. template <typename Type, FallbackType OnFallback> concept IsVettable = requires() { - { Vettable<Type>::kValue ? TrueResult<Type>::kValue : OnFallback(FalseResult<Type>::kValue) }; + { Vettable<Type>::kValue ? TrueResult<Type>::kValue : OnFallback(PropertyResult<Type>::kValue) }; }; -\end{lstlisting} Source: \href{https://github.com/nekernel-org/nekernel/blob/stable/src/kernel/NeKit/Vettable.h}{https://github.com/nekernel-org/nekernel/blob/stable/src/kernel/NeKit/Vettable.h} +\end{lstlisting} Source: \href{https://github.com/nekernel-org/nekernel/blob/develop/src/kernel/NeKit/Vettable.h}{https://github.com/nekernel-org/nekernel/blob/develop/src/kernel/NeKit/Vettable.h} \section{Conclusion} { |
