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
12
#include <
libSystem/SystemKit/System.h
>
13
14
namespace
LibSystem::Verify
{
17
template
<
typename
T,
typename
R = Vo
id
Ptr>
18
inline
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
23
template
<
typename
T,
typename
U>
24
struct
must_cast_traits
{
25
constexpr
static
BOOL
value
=
false
;
26
};
27
28
template
<
typename
T>
29
struct
must_cast_traits
<T, T> {
30
constexpr
static
BOOL
value
=
true
;
31
};
32
35
template
<
typename
T,
typename
R>
36
constexpr
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
BOOL
#define BOOL
System.h
_rtl_assert
IMPORT_C Void _rtl_assert(Bool expr, const Char *origin)
Definition
VerifyCalls.cc:13
LibSystem::Verify
Definition
Verify.h:14
LibSystem::Verify::sys_constexpr_cast
constexpr R * sys_constexpr_cast(T *ptr)
Safe constexpr cast.
Definition
Verify.h:36
LibSystem::Verify::sys_safe_cast
R sys_safe_cast(const T *ptr)
safe cast operator.
Definition
Verify.h:18
LibSystem::Verify::must_cast_traits< T, T >::value
static constexpr BOOL value
Definition
Verify.h:30
LibSystem::Verify::must_cast_traits
Definition
Verify.h:24
LibSystem::Verify::must_cast_traits::value
static constexpr BOOL value
Definition
Verify.h:25
src
libSystem
SystemKit
Verify.h
Generated by
1.15.0