dispatch: add dispatch_source, dispatch_queue

Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
Simon Rozman 2025-06-20 10:24:20 +02:00
parent ac9ba6919a
commit 1a8ab33ecc

View File

@ -0,0 +1,42 @@
/*
SPDX-License-Identifier: MIT
Copyright © 2025 Amebis
*/
#pragma once
#include "common.hpp"
#include <dispatch/dispatch.h>
namespace macstd {
///
/// Dispatch object traits
///
struct dispatch_traits
{
static inline constexpr dispatch_source_t invalid = static_cast<dispatch_source_t>(NULL);
///
/// Decrements the reference count (the retain count) of a dispatch object
///
/// \sa [dispatch_release function](https://developer.apple.com/documentation/dispatch/1496328-dispatch_release)
///
static void free(dispatch_source_t h) noexcept
{
dispatch_release(h);
}
private:
static dispatch_source_t duplicate(dispatch_source_t h);
};
///
/// Dispatch event source
///
using dispatch_source = handle<dispatch_source_t, dispatch_traits>;
///
/// Dispatch event source
///
using dispatch_queue = handle<dispatch_queue_t, dispatch_traits>;
}