/* * Copyright (c) 2021, Ali Mohammad Pur * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #ifdef KERNEL # include #endif namespace AK::Detail { template struct SubstituteIntrusiveContainerType { using Type = Container; }; template struct SubstituteIntrusiveContainerType> { using Type = RefPtr; }; #ifdef KERNEL template struct SubstituteIntrusiveContainerType> { using Type = LockRefPtr; }; #endif template struct SelfReferenceIfNeeded { Container reference = nullptr; }; template struct SelfReferenceIfNeeded { }; }