/* ------------------------------------------- Copyright (C) 2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. File: Verify.h Purpose: System Call Interface Verification Layer. ------------------------------------------- */ #pragma once #include namespace LibSystem::Verify { /// @author 0xf00sec, and Amlal El Mahrouss /// @brief safe cast operator. template inline R sys_safe_cast(const T* ptr) { _rtl_assert(ptr, "safe cast failed!"); return static_cast(const_cast(ptr)); } template struct must_cast_traits { constexpr static BOOL value = false; }; template struct must_cast_traits { constexpr static BOOL value = true; }; /// @author Amlal El Mahrouss /// @brief Safe constexpr cast. template inline constexpr R* sys_constexpr_cast(T* ptr) { static_assert(must_cast_traits::value, "constexpr cast failed! types are mismatching!"); return static_cast(ptr); } } // namespace LibSystem::Verify