objc2_core_graphics/generated/
CGPSConverter.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/cgpsconverter?language=objc)
14#[doc(alias = "CGPSConverterRef")]
15#[repr(C)]
16pub struct CGPSConverter {
17    inner: [u8; 0],
18    _p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
19}
20
21cf_type!(
22    unsafe impl CGPSConverter {}
23);
24#[cfg(feature = "objc2")]
25cf_objc2_type!(
26    unsafe impl RefEncode<"CGPSConverter"> for CGPSConverter {}
27);
28
29/// [Apple's documentation](https://developer.apple.com/documentation/coregraphics/cgpsconverterbegindocumentcallback?language=objc)
30pub type CGPSConverterBeginDocumentCallback = Option<unsafe extern "C-unwind" fn(*mut c_void)>;
31
32/// [Apple's documentation](https://developer.apple.com/documentation/coregraphics/cgpsconverterenddocumentcallback?language=objc)
33pub type CGPSConverterEndDocumentCallback = Option<unsafe extern "C-unwind" fn(*mut c_void, bool)>;
34
35/// [Apple's documentation](https://developer.apple.com/documentation/coregraphics/cgpsconverterbeginpagecallback?language=objc)
36pub type CGPSConverterBeginPageCallback =
37    Option<unsafe extern "C-unwind" fn(*mut c_void, usize, NonNull<CFDictionary>)>;
38
39/// [Apple's documentation](https://developer.apple.com/documentation/coregraphics/cgpsconverterendpagecallback?language=objc)
40pub type CGPSConverterEndPageCallback =
41    Option<unsafe extern "C-unwind" fn(*mut c_void, usize, NonNull<CFDictionary>)>;
42
43/// [Apple's documentation](https://developer.apple.com/documentation/coregraphics/cgpsconverterprogresscallback?language=objc)
44pub type CGPSConverterProgressCallback = Option<unsafe extern "C-unwind" fn(*mut c_void)>;
45
46/// [Apple's documentation](https://developer.apple.com/documentation/coregraphics/cgpsconvertermessagecallback?language=objc)
47pub type CGPSConverterMessageCallback =
48    Option<unsafe extern "C-unwind" fn(*mut c_void, NonNull<CFString>)>;
49
50/// [Apple's documentation](https://developer.apple.com/documentation/coregraphics/cgpsconverterreleaseinfocallback?language=objc)
51pub type CGPSConverterReleaseInfoCallback = Option<unsafe extern "C-unwind" fn(*mut c_void)>;
52
53/// [Apple's documentation](https://developer.apple.com/documentation/coregraphics/cgpsconvertercallbacks?language=objc)
54#[repr(C)]
55#[allow(unpredictable_function_pointer_comparisons)]
56#[derive(Clone, Copy, Debug, PartialEq)]
57pub struct CGPSConverterCallbacks {
58    pub version: c_uint,
59    pub beginDocument: CGPSConverterBeginDocumentCallback,
60    pub endDocument: CGPSConverterEndDocumentCallback,
61    pub beginPage: CGPSConverterBeginPageCallback,
62    pub endPage: CGPSConverterEndPageCallback,
63    pub noteProgress: CGPSConverterProgressCallback,
64    pub noteMessage: CGPSConverterMessageCallback,
65    pub releaseInfo: CGPSConverterReleaseInfoCallback,
66}
67
68#[cfg(feature = "objc2")]
69unsafe impl Encode for CGPSConverterCallbacks {
70    const ENCODING: Encoding = Encoding::Struct(
71        "CGPSConverterCallbacks",
72        &[
73            <c_uint>::ENCODING,
74            <CGPSConverterBeginDocumentCallback>::ENCODING,
75            Encoding::Pointer(&Encoding::Unknown),
76            <CGPSConverterBeginPageCallback>::ENCODING,
77            <CGPSConverterEndPageCallback>::ENCODING,
78            <CGPSConverterProgressCallback>::ENCODING,
79            <CGPSConverterMessageCallback>::ENCODING,
80            <CGPSConverterReleaseInfoCallback>::ENCODING,
81        ],
82    );
83}
84
85#[cfg(feature = "objc2")]
86unsafe impl RefEncode for CGPSConverterCallbacks {
87    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
88}
89
90impl CGPSConverter {
91    /// # Safety
92    ///
93    /// - `info` must be a valid pointer or null.
94    /// - `callbacks` must be a valid pointer.
95    /// - `options` generics must be of the correct type.
96    #[doc(alias = "CGPSConverterCreate")]
97    #[inline]
98    pub unsafe fn new(
99        info: *mut c_void,
100        callbacks: NonNull<CGPSConverterCallbacks>,
101        options: Option<&CFDictionary>,
102    ) -> Option<CFRetained<CGPSConverter>> {
103        extern "C-unwind" {
104            fn CGPSConverterCreate(
105                info: *mut c_void,
106                callbacks: NonNull<CGPSConverterCallbacks>,
107                options: Option<&CFDictionary>,
108            ) -> Option<NonNull<CGPSConverter>>;
109        }
110        let ret = unsafe { CGPSConverterCreate(info, callbacks, options) };
111        ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
112    }
113
114    /// # Safety
115    ///
116    /// `options` generics must be of the correct type.
117    #[doc(alias = "CGPSConverterConvert")]
118    #[cfg(all(feature = "CGDataConsumer", feature = "CGDataProvider"))]
119    #[inline]
120    pub unsafe fn convert(
121        &self,
122        provider: &CGDataProvider,
123        consumer: &CGDataConsumer,
124        options: Option<&CFDictionary>,
125    ) -> bool {
126        extern "C-unwind" {
127            fn CGPSConverterConvert(
128                converter: &CGPSConverter,
129                provider: &CGDataProvider,
130                consumer: &CGDataConsumer,
131                options: Option<&CFDictionary>,
132            ) -> bool;
133        }
134        unsafe { CGPSConverterConvert(self, provider, consumer, options) }
135    }
136
137    #[doc(alias = "CGPSConverterAbort")]
138    #[inline]
139    pub fn abort(&self) -> bool {
140        extern "C-unwind" {
141            fn CGPSConverterAbort(converter: &CGPSConverter) -> bool;
142        }
143        unsafe { CGPSConverterAbort(self) }
144    }
145
146    #[doc(alias = "CGPSConverterIsConverting")]
147    #[inline]
148    pub fn is_converting(&self) -> bool {
149        extern "C-unwind" {
150            fn CGPSConverterIsConverting(converter: &CGPSConverter) -> bool;
151        }
152        unsafe { CGPSConverterIsConverting(self) }
153    }
154}
155
156unsafe impl ConcreteType for CGPSConverter {
157    #[doc(alias = "CGPSConverterGetTypeID")]
158    #[inline]
159    fn type_id() -> CFTypeID {
160        extern "C-unwind" {
161            fn CGPSConverterGetTypeID() -> CFTypeID;
162        }
163        unsafe { CGPSConverterGetTypeID() }
164    }
165}
166
167#[deprecated = "renamed to `CGPSConverter::new`"]
168#[inline]
169pub unsafe extern "C-unwind" fn CGPSConverterCreate(
170    info: *mut c_void,
171    callbacks: NonNull<CGPSConverterCallbacks>,
172    options: Option<&CFDictionary>,
173) -> Option<CFRetained<CGPSConverter>> {
174    extern "C-unwind" {
175        fn CGPSConverterCreate(
176            info: *mut c_void,
177            callbacks: NonNull<CGPSConverterCallbacks>,
178            options: Option<&CFDictionary>,
179        ) -> Option<NonNull<CGPSConverter>>;
180    }
181    let ret = unsafe { CGPSConverterCreate(info, callbacks, options) };
182    ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
183}
184
185extern "C-unwind" {
186    #[cfg(all(feature = "CGDataConsumer", feature = "CGDataProvider"))]
187    #[deprecated = "renamed to `CGPSConverter::convert`"]
188    pub fn CGPSConverterConvert(
189        converter: &CGPSConverter,
190        provider: &CGDataProvider,
191        consumer: &CGDataConsumer,
192        options: Option<&CFDictionary>,
193    ) -> bool;
194}
195
196#[deprecated = "renamed to `CGPSConverter::abort`"]
197#[inline]
198pub extern "C-unwind" fn CGPSConverterAbort(converter: &CGPSConverter) -> bool {
199    extern "C-unwind" {
200        fn CGPSConverterAbort(converter: &CGPSConverter) -> bool;
201    }
202    unsafe { CGPSConverterAbort(converter) }
203}
204
205#[deprecated = "renamed to `CGPSConverter::is_converting`"]
206#[inline]
207pub extern "C-unwind" fn CGPSConverterIsConverting(converter: &CGPSConverter) -> bool {
208    extern "C-unwind" {
209        fn CGPSConverterIsConverting(converter: &CGPSConverter) -> bool;
210    }
211    unsafe { CGPSConverterIsConverting(converter) }
212}