objc2_core_graphics/generated/
CGDataConsumer.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::cell::UnsafeCell;
4use core::ffi::*;
5use core::marker::{PhantomData, PhantomPinned};
6use core::ptr::NonNull;
7#[cfg(feature = "objc2")]
8use objc2::__framework_prelude::*;
9use objc2_core_foundation::*;
10
11use crate::*;
12
13/// [Apple's documentation](https://developer.apple.com/documentation/coregraphics/cgdataconsumer?language=objc)
14#[doc(alias = "CGDataConsumerRef")]
15#[repr(C)]
16pub struct CGDataConsumer {
17    inner: [u8; 0],
18    _p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
19}
20
21cf_type!(
22    unsafe impl CGDataConsumer {}
23);
24#[cfg(feature = "objc2")]
25cf_objc2_type!(
26    unsafe impl RefEncode<"CGDataConsumer"> for CGDataConsumer {}
27);
28
29/// [Apple's documentation](https://developer.apple.com/documentation/coregraphics/cgdataconsumerputbytescallback?language=objc)
30pub type CGDataConsumerPutBytesCallback =
31    Option<unsafe extern "C-unwind" fn(*mut c_void, NonNull<c_void>, usize) -> usize>;
32
33/// [Apple's documentation](https://developer.apple.com/documentation/coregraphics/cgdataconsumerreleaseinfocallback?language=objc)
34pub type CGDataConsumerReleaseInfoCallback = Option<unsafe extern "C-unwind" fn(*mut c_void)>;
35
36/// [Apple's documentation](https://developer.apple.com/documentation/coregraphics/cgdataconsumercallbacks?language=objc)
37#[repr(C)]
38#[allow(unpredictable_function_pointer_comparisons)]
39#[derive(Clone, Copy, Debug, PartialEq)]
40pub struct CGDataConsumerCallbacks {
41    pub putBytes: CGDataConsumerPutBytesCallback,
42    pub releaseConsumer: CGDataConsumerReleaseInfoCallback,
43}
44
45#[cfg(feature = "objc2")]
46unsafe impl Encode for CGDataConsumerCallbacks {
47    const ENCODING: Encoding = Encoding::Struct(
48        "CGDataConsumerCallbacks",
49        &[
50            <CGDataConsumerPutBytesCallback>::ENCODING,
51            <CGDataConsumerReleaseInfoCallback>::ENCODING,
52        ],
53    );
54}
55
56#[cfg(feature = "objc2")]
57unsafe impl RefEncode for CGDataConsumerCallbacks {
58    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
59}
60
61unsafe impl ConcreteType for CGDataConsumer {
62    #[doc(alias = "CGDataConsumerGetTypeID")]
63    #[inline]
64    fn type_id() -> CFTypeID {
65        extern "C-unwind" {
66            fn CGDataConsumerGetTypeID() -> CFTypeID;
67        }
68        unsafe { CGDataConsumerGetTypeID() }
69    }
70}
71
72impl CGDataConsumer {
73    /// # Safety
74    ///
75    /// - `info` must be a valid pointer or null.
76    /// - `cbks` must be a valid pointer or null.
77    #[doc(alias = "CGDataConsumerCreate")]
78    #[inline]
79    pub unsafe fn new(
80        info: *mut c_void,
81        cbks: *const CGDataConsumerCallbacks,
82    ) -> Option<CFRetained<CGDataConsumer>> {
83        extern "C-unwind" {
84            fn CGDataConsumerCreate(
85                info: *mut c_void,
86                cbks: *const CGDataConsumerCallbacks,
87            ) -> Option<NonNull<CGDataConsumer>>;
88        }
89        let ret = unsafe { CGDataConsumerCreate(info, cbks) };
90        ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
91    }
92
93    #[doc(alias = "CGDataConsumerCreateWithURL")]
94    #[inline]
95    pub fn with_url(url: Option<&CFURL>) -> Option<CFRetained<CGDataConsumer>> {
96        extern "C-unwind" {
97            fn CGDataConsumerCreateWithURL(url: Option<&CFURL>) -> Option<NonNull<CGDataConsumer>>;
98        }
99        let ret = unsafe { CGDataConsumerCreateWithURL(url) };
100        ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
101    }
102
103    #[doc(alias = "CGDataConsumerCreateWithCFData")]
104    #[inline]
105    pub fn with_cf_data(data: Option<&CFMutableData>) -> Option<CFRetained<CGDataConsumer>> {
106        extern "C-unwind" {
107            fn CGDataConsumerCreateWithCFData(
108                data: Option<&CFMutableData>,
109            ) -> Option<NonNull<CGDataConsumer>>;
110        }
111        let ret = unsafe { CGDataConsumerCreateWithCFData(data) };
112        ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
113    }
114}
115
116#[deprecated = "renamed to `CGDataConsumer::new`"]
117#[inline]
118pub unsafe extern "C-unwind" fn CGDataConsumerCreate(
119    info: *mut c_void,
120    cbks: *const CGDataConsumerCallbacks,
121) -> Option<CFRetained<CGDataConsumer>> {
122    extern "C-unwind" {
123        fn CGDataConsumerCreate(
124            info: *mut c_void,
125            cbks: *const CGDataConsumerCallbacks,
126        ) -> Option<NonNull<CGDataConsumer>>;
127    }
128    let ret = unsafe { CGDataConsumerCreate(info, cbks) };
129    ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
130}
131
132#[deprecated = "renamed to `CGDataConsumer::with_url`"]
133#[inline]
134pub extern "C-unwind" fn CGDataConsumerCreateWithURL(
135    url: Option<&CFURL>,
136) -> Option<CFRetained<CGDataConsumer>> {
137    extern "C-unwind" {
138        fn CGDataConsumerCreateWithURL(url: Option<&CFURL>) -> Option<NonNull<CGDataConsumer>>;
139    }
140    let ret = unsafe { CGDataConsumerCreateWithURL(url) };
141    ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
142}
143
144#[deprecated = "renamed to `CGDataConsumer::with_cf_data`"]
145#[inline]
146pub extern "C-unwind" fn CGDataConsumerCreateWithCFData(
147    data: Option<&CFMutableData>,
148) -> Option<CFRetained<CGDataConsumer>> {
149    extern "C-unwind" {
150        fn CGDataConsumerCreateWithCFData(
151            data: Option<&CFMutableData>,
152        ) -> Option<NonNull<CGDataConsumer>>;
153    }
154    let ret = unsafe { CGDataConsumerCreateWithCFData(data) };
155    ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
156}