Skip to content

Repository files navigation

CXXCFRef

A simple RAII wrapper for Core Foundation objects.

Note

C++17 is required.

Installation

Swift Package Manager

Add a package dependency to https://github.com/sbooth/CXXCFRef in Xcode.

Manual or Custom Build

  1. Clone the CXXCFRef repository.
  2. swift build.

Alternatives

If you prefer a minimalist std::unique_ptr-based approach:

struct cf_deleter {
    void operator()(CFTypeRef cf CF_RELEASES_ARGUMENT) noexcept { CFRelease(cf); }
};

template <typename T>
using cf_ptr = std::unique_ptr<std::remove_pointer_t<T>, cf_deleter>;

Or a C-based approach:

static void CleanupCFString(CFStringRef *cf_ptr) { if(*cf_ptr) CFRelease(*cf_ptr); }
__attribute__((cleanup(CleanupCFString))) CFStringRef str = /* ... */

License

Released under the MIT License.

About

A simple RAII wrapper for Core Foundation objects.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages