File indexing completed on 2024-05-12 16:59:21
0001 /* 0002 * SPDX-FileCopyrightText: 2012-2016 Ivan Cukic <ivan.cukic@kde.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #ifndef D_PTR_H 0008 #define D_PTR_H 0009 0010 #include <memory> 0011 0012 namespace kamd 0013 { 0014 namespace utils 0015 { 0016 template<typename T> 0017 class d_ptr 0018 { 0019 private: 0020 std::unique_ptr<T> d; 0021 0022 public: 0023 d_ptr(); 0024 0025 template<typename... Args> 0026 d_ptr(Args &&...); 0027 0028 ~d_ptr(); 0029 0030 T *operator->() const; 0031 }; 0032 0033 #define D_PTR \ 0034 class Private; \ 0035 friend class Private; \ 0036 const ::kamd::utils::d_ptr<Private> d 0037 0038 } // namespace utils 0039 } // namespace kamd 0040 0041 #endif