objc2-foundation 0.2.2

Bindings to the Foundation framework
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use objc2::__framework_prelude::*;

use crate::*;

// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct NSDateComponentsFormatterUnitsStyle(pub NSInteger);
impl NSDateComponentsFormatterUnitsStyle {
    #[doc(alias = "NSDateComponentsFormatterUnitsStylePositional")]
    pub const Positional: Self = Self(0);
    #[doc(alias = "NSDateComponentsFormatterUnitsStyleAbbreviated")]
    pub const Abbreviated: Self = Self(1);
    #[doc(alias = "NSDateComponentsFormatterUnitsStyleShort")]
    pub const Short: Self = Self(2);
    #[doc(alias = "NSDateComponentsFormatterUnitsStyleFull")]
    pub const Full: Self = Self(3);
    #[doc(alias = "NSDateComponentsFormatterUnitsStyleSpellOut")]
    pub const SpellOut: Self = Self(4);
    #[doc(alias = "NSDateComponentsFormatterUnitsStyleBrief")]
    pub const Brief: Self = Self(5);
}

unsafe impl Encode for NSDateComponentsFormatterUnitsStyle {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for NSDateComponentsFormatterUnitsStyle {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

// NS_OPTIONS
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct NSDateComponentsFormatterZeroFormattingBehavior(pub NSUInteger);
bitflags::bitflags! {
    impl NSDateComponentsFormatterZeroFormattingBehavior: NSUInteger {
        #[doc(alias = "NSDateComponentsFormatterZeroFormattingBehaviorNone")]
        const None = 0;
        #[doc(alias = "NSDateComponentsFormatterZeroFormattingBehaviorDefault")]
        const Default = 1<<0;
        #[doc(alias = "NSDateComponentsFormatterZeroFormattingBehaviorDropLeading")]
        const DropLeading = 1<<1;
        #[doc(alias = "NSDateComponentsFormatterZeroFormattingBehaviorDropMiddle")]
        const DropMiddle = 1<<2;
        #[doc(alias = "NSDateComponentsFormatterZeroFormattingBehaviorDropTrailing")]
        const DropTrailing = 1<<3;
        #[doc(alias = "NSDateComponentsFormatterZeroFormattingBehaviorDropAll")]
        const DropAll = NSDateComponentsFormatterZeroFormattingBehavior::DropLeading.0|NSDateComponentsFormatterZeroFormattingBehavior::DropMiddle.0|NSDateComponentsFormatterZeroFormattingBehavior::DropTrailing.0;
        #[doc(alias = "NSDateComponentsFormatterZeroFormattingBehaviorPad")]
        const Pad = 1<<16;
    }
}

unsafe impl Encode for NSDateComponentsFormatterZeroFormattingBehavior {
    const ENCODING: Encoding = NSUInteger::ENCODING;
}

unsafe impl RefEncode for NSDateComponentsFormatterZeroFormattingBehavior {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    #[cfg(feature = "NSFormatter")]
    pub struct NSDateComponentsFormatter;

    #[cfg(feature = "NSFormatter")]
    unsafe impl ClassType for NSDateComponentsFormatter {
        #[inherits(NSObject)]
        type Super = NSFormatter;
        type Mutability = InteriorMutable;
    }
);

#[cfg(feature = "NSFormatter")]
unsafe impl Send for NSDateComponentsFormatter {}

#[cfg(feature = "NSFormatter")]
unsafe impl Sync for NSDateComponentsFormatter {}

#[cfg(all(feature = "NSFormatter", feature = "NSObject"))]
unsafe impl NSCoding for NSDateComponentsFormatter {}

#[cfg(all(feature = "NSFormatter", feature = "NSObject"))]
unsafe impl NSCopying for NSDateComponentsFormatter {}

#[cfg(feature = "NSFormatter")]
unsafe impl NSObjectProtocol for NSDateComponentsFormatter {}

extern_methods!(
    #[cfg(feature = "NSFormatter")]
    unsafe impl NSDateComponentsFormatter {
        #[cfg(feature = "NSString")]
        #[method_id(@__retain_semantics Other stringForObjectValue:)]
        pub unsafe fn stringForObjectValue(
            &self,
            obj: Option<&AnyObject>,
        ) -> Option<Retained<NSString>>;

        #[cfg(all(feature = "NSCalendar", feature = "NSString"))]
        #[method_id(@__retain_semantics Other stringFromDateComponents:)]
        pub unsafe fn stringFromDateComponents(
            &self,
            components: &NSDateComponents,
        ) -> Option<Retained<NSString>>;

        #[cfg(all(feature = "NSDate", feature = "NSString"))]
        #[method_id(@__retain_semantics Other stringFromDate:toDate:)]
        pub unsafe fn stringFromDate_toDate(
            &self,
            start_date: &NSDate,
            end_date: &NSDate,
        ) -> Option<Retained<NSString>>;

        #[cfg(all(feature = "NSDate", feature = "NSString"))]
        #[method_id(@__retain_semantics Other stringFromTimeInterval:)]
        pub unsafe fn stringFromTimeInterval(
            &self,
            ti: NSTimeInterval,
        ) -> Option<Retained<NSString>>;

        #[cfg(all(feature = "NSCalendar", feature = "NSString"))]
        #[method_id(@__retain_semantics Other localizedStringFromDateComponents:unitsStyle:)]
        pub unsafe fn localizedStringFromDateComponents_unitsStyle(
            components: &NSDateComponents,
            units_style: NSDateComponentsFormatterUnitsStyle,
        ) -> Option<Retained<NSString>>;

        #[method(unitsStyle)]
        pub unsafe fn unitsStyle(&self) -> NSDateComponentsFormatterUnitsStyle;

        #[method(setUnitsStyle:)]
        pub unsafe fn setUnitsStyle(&self, units_style: NSDateComponentsFormatterUnitsStyle);

        #[cfg(feature = "NSCalendar")]
        #[method(allowedUnits)]
        pub unsafe fn allowedUnits(&self) -> NSCalendarUnit;

        #[cfg(feature = "NSCalendar")]
        #[method(setAllowedUnits:)]
        pub unsafe fn setAllowedUnits(&self, allowed_units: NSCalendarUnit);

        #[method(zeroFormattingBehavior)]
        pub unsafe fn zeroFormattingBehavior(
            &self,
        ) -> NSDateComponentsFormatterZeroFormattingBehavior;

        #[method(setZeroFormattingBehavior:)]
        pub unsafe fn setZeroFormattingBehavior(
            &self,
            zero_formatting_behavior: NSDateComponentsFormatterZeroFormattingBehavior,
        );

        #[cfg(feature = "NSCalendar")]
        #[method_id(@__retain_semantics Other calendar)]
        pub unsafe fn calendar(&self) -> Option<Retained<NSCalendar>>;

        #[cfg(feature = "NSCalendar")]
        #[method(setCalendar:)]
        pub unsafe fn setCalendar(&self, calendar: Option<&NSCalendar>);

        #[cfg(feature = "NSDate")]
        #[method_id(@__retain_semantics Other referenceDate)]
        pub unsafe fn referenceDate(&self) -> Option<Retained<NSDate>>;

        #[cfg(feature = "NSDate")]
        #[method(setReferenceDate:)]
        pub unsafe fn setReferenceDate(&self, reference_date: Option<&NSDate>);

        #[method(allowsFractionalUnits)]
        pub unsafe fn allowsFractionalUnits(&self) -> bool;

        #[method(setAllowsFractionalUnits:)]
        pub unsafe fn setAllowsFractionalUnits(&self, allows_fractional_units: bool);

        #[method(maximumUnitCount)]
        pub unsafe fn maximumUnitCount(&self) -> NSInteger;

        #[method(setMaximumUnitCount:)]
        pub unsafe fn setMaximumUnitCount(&self, maximum_unit_count: NSInteger);

        #[method(collapsesLargestUnit)]
        pub unsafe fn collapsesLargestUnit(&self) -> bool;

        #[method(setCollapsesLargestUnit:)]
        pub unsafe fn setCollapsesLargestUnit(&self, collapses_largest_unit: bool);

        #[method(includesApproximationPhrase)]
        pub unsafe fn includesApproximationPhrase(&self) -> bool;

        #[method(setIncludesApproximationPhrase:)]
        pub unsafe fn setIncludesApproximationPhrase(&self, includes_approximation_phrase: bool);

        #[method(includesTimeRemainingPhrase)]
        pub unsafe fn includesTimeRemainingPhrase(&self) -> bool;

        #[method(setIncludesTimeRemainingPhrase:)]
        pub unsafe fn setIncludesTimeRemainingPhrase(&self, includes_time_remaining_phrase: bool);

        #[method(formattingContext)]
        pub unsafe fn formattingContext(&self) -> NSFormattingContext;

        #[method(setFormattingContext:)]
        pub unsafe fn setFormattingContext(&self, formatting_context: NSFormattingContext);

        #[cfg(feature = "NSString")]
        #[method(getObjectValue:forString:errorDescription:)]
        pub unsafe fn getObjectValue_forString_errorDescription(
            &self,
            obj: Option<&mut Option<Retained<AnyObject>>>,
            string: &NSString,
            error: Option<&mut Option<Retained<NSString>>>,
        ) -> bool;
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    #[cfg(feature = "NSFormatter")]
    unsafe impl NSDateComponentsFormatter {
        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new() -> Retained<Self>;
    }
);