objc2-application-services 0.3.2

Bindings to the ApplicationServices framework
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
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::*;

/// [Apple's documentation](https://developer.apple.com/documentation/applicationservices/translation?language=objc)
#[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 {}
);

/// [Apple's documentation](https://developer.apple.com/documentation/applicationservices/badtranslationreferr?language=objc)
pub const badTranslationRefErr: c_int = -3031;

/// [Apple's documentation](https://developer.apple.com/documentation/applicationservices/translationflags?language=objc)
pub type TranslationFlags = OptionBits;

/// [Apple's documentation](https://developer.apple.com/documentation/applicationservices/ktranslationdatatranslation?language=objc)
pub const kTranslationDataTranslation: c_uint = 1 << 0;
/// [Apple's documentation](https://developer.apple.com/documentation/applicationservices/ktranslationfiletranslation?language=objc)
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 {
    /// # Safety
    ///
    /// - `in_source_type` might not allow `None`.
    /// - `in_destination_type` might not allow `None`.
    /// - `out_translation` must be a valid pointer.
    #[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,
            )
        }
    }

    /// # Safety
    ///
    /// - `in_source_types` generic must be of the correct type.
    /// - `in_source_types` might not allow `None`.
    /// - `out_destination_types` must be a valid pointer.
    /// - `out_translations` must be a valid pointer.
    #[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,
            )
        }
    }

    /// # Safety
    ///
    /// - `in_source_data` might not allow `None`.
    /// - `out_destination_data` must be a valid pointer.
    #[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) }
    }

    /// # Safety
    ///
    /// - `in_source_url` might not allow `None`.
    /// - `in_destination_url` might not allow `None`.
    /// - `out_translated_url` must be a valid pointer.
    #[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)
        }
    }

    /// # Safety
    ///
    /// `out_source_type` must be a valid pointer.
    #[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) }
    }

    /// # Safety
    ///
    /// `out_destination_type` must be a valid pointer.
    #[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) }
    }

    /// # Safety
    ///
    /// `out_translation_flags` must be a valid pointer.
    #[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;
}