/* * Copyright (c) 2018-2021, Andreas Kling * Copyright (c) 2021, Leon Albrecht * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include namespace AK { template class Ptr32 { public: Ptr32() = default; Ptr32(T* ptr) : m_ptr((u32) reinterpret_cast(ptr)) { VERIFY((reinterpret_cast(ptr) & 0xFFFFFFFF) == m_ptr); } // inline T* operator*() { return (T*)m_ptr; } // inline const T* operator*() const { return (T*)m_ptr; } inline T* operator->() { VERIFY(m_ptr); return m_ptr; } inline operator T*() { return (T*)static_cast(m_ptr); } inline operator const T*() const { return (T*)static_cast(m_ptr); } private: u32 m_ptr { 0 }; }; } using AK::Ptr32;