use core::cell::UnsafeCell;
use core::ffi::*;
use core::marker::{PhantomData, PhantomPinned};
use core::ptr::NonNull;
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
use objc2_core_foundation::*;
use crate::*;
#[doc(alias = "TranslationRef")]
#[repr(C)]
pub struct Translation {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
cf_type!(
unsafe impl Translation {}
);
#[cfg(feature = "objc2")]
cf_objc2_type!(
unsafe impl RefEncode<"OpaqueTranslationRef"> for Translation {}
);
pub const badTranslationRefErr: c_int = -3031;
pub type TranslationFlags = OptionBits;
pub const kTranslationDataTranslation: c_uint = 1 << 0;
pub const kTranslationFileTranslation: c_uint = 1 << 1;
unsafe impl ConcreteType for Translation {
#[doc(alias = "TranslationGetTypeID")]
#[inline]
fn type_id() -> CFTypeID {
extern "C-unwind" {
fn TranslationGetTypeID() -> CFTypeID;
}
unsafe { TranslationGetTypeID() }
}
}
impl Translation {
#[doc(alias = "TranslationCreate")]
#[inline]
pub unsafe fn create(
in_source_type: Option<&CFString>,
in_destination_type: Option<&CFString>,
in_translation_flags: TranslationFlags,
out_translation: *mut *mut Translation,
) -> OSStatus {
extern "C-unwind" {
fn TranslationCreate(
in_source_type: Option<&CFString>,
in_destination_type: Option<&CFString>,
in_translation_flags: TranslationFlags,
out_translation: *mut *mut Translation,
) -> OSStatus;
}
unsafe {
TranslationCreate(
in_source_type,
in_destination_type,
in_translation_flags,
out_translation,
)
}
}
#[doc(alias = "TranslationCreateWithSourceArray")]
#[inline]
pub unsafe fn create_with_source_array(
in_source_types: Option<&CFArray>,
in_translation_flags: TranslationFlags,
out_destination_types: *mut *const CFArray,
out_translations: *mut *const CFDictionary,
) -> OSStatus {
extern "C-unwind" {
fn TranslationCreateWithSourceArray(
in_source_types: Option<&CFArray>,
in_translation_flags: TranslationFlags,
out_destination_types: *mut *const CFArray,
out_translations: *mut *const CFDictionary,
) -> OSStatus;
}
unsafe {
TranslationCreateWithSourceArray(
in_source_types,
in_translation_flags,
out_destination_types,
out_translations,
)
}
}
#[doc(alias = "TranslationPerformForData")]
#[inline]
pub unsafe fn perform_for_data(
&self,
in_source_data: Option<&CFData>,
out_destination_data: *mut *const CFData,
) -> OSStatus {
extern "C-unwind" {
fn TranslationPerformForData(
in_translation: &Translation,
in_source_data: Option<&CFData>,
out_destination_data: *mut *const CFData,
) -> OSStatus;
}
unsafe { TranslationPerformForData(self, in_source_data, out_destination_data) }
}
#[doc(alias = "TranslationPerformForURL")]
#[inline]
pub unsafe fn perform_for_url(
&self,
in_source_url: Option<&CFURL>,
in_destination_url: Option<&CFURL>,
out_translated_url: *mut *const CFURL,
) -> OSStatus {
extern "C-unwind" {
fn TranslationPerformForURL(
in_translation: &Translation,
in_source_url: Option<&CFURL>,
in_destination_url: Option<&CFURL>,
out_translated_url: *mut *const CFURL,
) -> OSStatus;
}
unsafe {
TranslationPerformForURL(self, in_source_url, in_destination_url, out_translated_url)
}
}
#[doc(alias = "TranslationCopySourceType")]
#[inline]
pub unsafe fn copy_source_type(&self, out_source_type: *mut *const CFString) -> OSStatus {
extern "C-unwind" {
fn TranslationCopySourceType(
in_translation: &Translation,
out_source_type: *mut *const CFString,
) -> OSStatus;
}
unsafe { TranslationCopySourceType(self, out_source_type) }
}
#[doc(alias = "TranslationCopyDestinationType")]
#[inline]
pub unsafe fn copy_destination_type(
&self,
out_destination_type: *mut *const CFString,
) -> OSStatus {
extern "C-unwind" {
fn TranslationCopyDestinationType(
in_translation: &Translation,
out_destination_type: *mut *const CFString,
) -> OSStatus;
}
unsafe { TranslationCopyDestinationType(self, out_destination_type) }
}
#[doc(alias = "TranslationGetTranslationFlags")]
#[inline]
pub unsafe fn translation_flags(
&self,
out_translation_flags: *mut TranslationFlags,
) -> OSStatus {
extern "C-unwind" {
fn TranslationGetTranslationFlags(
in_translation: &Translation,
out_translation_flags: *mut TranslationFlags,
) -> OSStatus;
}
unsafe { TranslationGetTranslationFlags(self, out_translation_flags) }
}
}
extern "C-unwind" {
#[deprecated = "renamed to `Translation::create`"]
pub fn TranslationCreate(
in_source_type: Option<&CFString>,
in_destination_type: Option<&CFString>,
in_translation_flags: TranslationFlags,
out_translation: *mut *mut Translation,
) -> OSStatus;
}
extern "C-unwind" {
#[deprecated = "renamed to `Translation::create_with_source_array`"]
pub fn TranslationCreateWithSourceArray(
in_source_types: Option<&CFArray>,
in_translation_flags: TranslationFlags,
out_destination_types: *mut *const CFArray,
out_translations: *mut *const CFDictionary,
) -> OSStatus;
}
extern "C-unwind" {
#[deprecated = "renamed to `Translation::perform_for_data`"]
pub fn TranslationPerformForData(
in_translation: &Translation,
in_source_data: Option<&CFData>,
out_destination_data: *mut *const CFData,
) -> OSStatus;
}
extern "C-unwind" {
#[deprecated = "renamed to `Translation::perform_for_url`"]
pub fn TranslationPerformForURL(
in_translation: &Translation,
in_source_url: Option<&CFURL>,
in_destination_url: Option<&CFURL>,
out_translated_url: *mut *const CFURL,
) -> OSStatus;
}
extern "C-unwind" {
#[deprecated = "renamed to `Translation::copy_source_type`"]
pub fn TranslationCopySourceType(
in_translation: &Translation,
out_source_type: *mut *const CFString,
) -> OSStatus;
}
extern "C-unwind" {
#[deprecated = "renamed to `Translation::copy_destination_type`"]
pub fn TranslationCopyDestinationType(
in_translation: &Translation,
out_destination_type: *mut *const CFString,
) -> OSStatus;
}
extern "C-unwind" {
#[deprecated = "renamed to `Translation::translation_flags`"]
pub fn TranslationGetTranslationFlags(
in_translation: &Translation,
out_translation_flags: *mut TranslationFlags,
) -> OSStatus;
}