diff --git a/include/MacStd/Foundation.hpp b/include/MacStd/Foundation.hpp new file mode 100644 index 0000000..a2bab01 --- /dev/null +++ b/include/MacStd/Foundation.hpp @@ -0,0 +1,41 @@ +/* + SPDX-License-Identifier: MIT + Copyright © 2023-2024 Amebis +*/ + +#pragma once + +#include "common.hpp" +#import +#include + +namespace macstd { + /// + /// Deleter for unique_ptr using CFRelease + /// + struct CFRelease_delete + { + /// + /// Default constructor + /// + CFRelease_delete() noexcept {} + + /// + /// Delete a pointer + /// + /// \sa [CFRelease function](https://developer.apple.com/documentation/corefoundation/1521153-cfrelease) + /// + template + void operator()(_T *_Ptr) const + { + CFRelease(_Ptr); + } + }; + + /// + /// CFType helper + /// + /// \sa [CFType](https://developer.apple.com/documentation/corefoundation/cftype) + template + using CFType = std::unique_ptr; +} \ No newline at end of file