//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ffi::*;
use objc2::__framework_prelude::*;

use crate::*;

/// [Apple's documentation](https://developer.apple.com/documentation/quartzcore/caframeraterange?language=objc)
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct CAFrameRateRange {
    pub minimum: c_float,
    pub maximum: c_float,
    pub preferred: c_float,
}

unsafe impl Encode for CAFrameRateRange {
    const ENCODING: Encoding = Encoding::Struct(
        "CAFrameRateRange",
        &[
            <c_float>::ENCODING,
            <c_float>::ENCODING,
            <c_float>::ENCODING,
        ],
    );
}

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

extern "C" {
    /// [Apple's documentation](https://developer.apple.com/documentation/quartzcore/caframeraterangedefault?language=objc)
    pub static CAFrameRateRangeDefault: CAFrameRateRange;
}

impl CAFrameRateRange {
    #[doc(alias = "CAFrameRateRangeMake")]
    #[inline]
    pub fn new(minimum: c_float, maximum: c_float, preferred: c_float) -> CAFrameRateRange {
        extern "C-unwind" {
            fn CAFrameRateRangeMake(
                minimum: c_float,
                maximum: c_float,
                preferred: c_float,
            ) -> CAFrameRateRange;
        }
        unsafe { CAFrameRateRangeMake(minimum, maximum, preferred) }
    }

    #[doc(alias = "CAFrameRateRangeIsEqualToRange")]
    #[inline]
    pub fn is_equal_to_range(self, other: CAFrameRateRange) -> bool {
        extern "C-unwind" {
            fn CAFrameRateRangeIsEqualToRange(
                range: CAFrameRateRange,
                other: CAFrameRateRange,
            ) -> bool;
        }
        unsafe { CAFrameRateRangeIsEqualToRange(self, other) }
    }
}

#[deprecated = "renamed to `CAFrameRateRange::new`"]
#[inline]
pub extern "C-unwind" fn CAFrameRateRangeMake(
    minimum: c_float,
    maximum: c_float,
    preferred: c_float,
) -> CAFrameRateRange {
    extern "C-unwind" {
        fn CAFrameRateRangeMake(
            minimum: c_float,
            maximum: c_float,
            preferred: c_float,
        ) -> CAFrameRateRange;
    }
    unsafe { CAFrameRateRangeMake(minimum, maximum, preferred) }
}

#[deprecated = "renamed to `CAFrameRateRange::is_equal_to_range`"]
#[inline]
pub extern "C-unwind" fn CAFrameRateRangeIsEqualToRange(
    range: CAFrameRateRange,
    other: CAFrameRateRange,
) -> bool {
    extern "C-unwind" {
        fn CAFrameRateRangeIsEqualToRange(range: CAFrameRateRange, other: CAFrameRateRange)
            -> bool;
    }
    unsafe { CAFrameRateRangeIsEqualToRange(range, other) }
}
