NeKernel dev
Loading...
Searching...
No Matches
Verify.h
Go to the documentation of this file.
1/* ========================================
2
3 Copyright (C) 2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
4
5 File: Verify.h
6 Purpose: System Call Interface Verification Layer.
7
8 ======================================== */
9
10#pragma once
11
13
17template <typename T, typename R = VoidPtr>
18inline R sys_safe_cast(const T* ptr) {
19 _rtl_assert(ptr, "safe cast failed!");
20 return static_cast<R>(const_cast<T*>(ptr));
21}
22
23template <typename T, typename U>
25 constexpr static BOOL value = false;
26};
27
28template <typename T>
29struct must_cast_traits<T, T> {
30 constexpr static BOOL value = true;
31};
32
35template <typename T, typename R>
36constexpr R* sys_constexpr_cast(T* ptr) {
37 static_assert(must_cast_traits<T, R>::value, "constexpr cast failed! types are mismatching!");
38 return static_cast<R*>(ptr);
39}
40} // namespace LibSystem::Verify
#define BOOL
IMPORT_C Void _rtl_assert(Bool expr, const Char *origin)
Definition VerifyCalls.cc:13
Definition Verify.h:14
constexpr R * sys_constexpr_cast(T *ptr)
Safe constexpr cast.
Definition Verify.h:36
R sys_safe_cast(const T *ptr)
safe cast operator.
Definition Verify.h:18
static constexpr BOOL value
Definition Verify.h:30
static constexpr BOOL value
Definition Verify.h:25