use std::os::raw::c_void;
use crate::base::{Boolean, CFAllocatorRef, CFIndex, CFOptionFlags, CFRange, CFTypeID, CFTypeRef};
use crate::date::{CFAbsoluteTime, CFDateRef};
use crate::locale::CFLocaleRef;
use crate::string::CFStringRef;
#[repr(C)]
pub struct __CFDateFormatter(c_void);
pub type CFDateFormatterRef = *mut __CFDateFormatter;
pub type CFDateFormatterKey = CFStringRef;
pub type CFDateFormatterStyle = CFIndex;
pub type CFISO8601DateFormatOptions = CFOptionFlags;
pub const kCFDateFormatterNoStyle: CFDateFormatterStyle = 0;
pub const kCFDateFormatterShortStyle: CFDateFormatterStyle = 1;
pub const kCFDateFormatterMediumStyle: CFDateFormatterStyle = 2;
pub const kCFDateFormatterLongStyle: CFDateFormatterStyle = 3;
pub const kCFDateFormatterFullStyle: CFDateFormatterStyle = 4;
extern "C" {
pub static kCFDateFormatterIsLenient: CFDateFormatterKey; pub static kCFDateFormatterTimeZone: CFDateFormatterKey; pub static kCFDateFormatterCalendarName: CFDateFormatterKey; pub static kCFDateFormatterDefaultFormat: CFDateFormatterKey; pub static kCFDateFormatterTwoDigitStartDate: CFDateFormatterKey; pub static kCFDateFormatterDefaultDate: CFDateFormatterKey; pub static kCFDateFormatterCalendar: CFDateFormatterKey; pub static kCFDateFormatterEraSymbols: CFDateFormatterKey; pub static kCFDateFormatterMonthSymbols: CFDateFormatterKey; pub static kCFDateFormatterShortMonthSymbols: CFDateFormatterKey; pub static kCFDateFormatterWeekdaySymbols: CFDateFormatterKey; pub static kCFDateFormatterShortWeekdaySymbols: CFDateFormatterKey; pub static kCFDateFormatterAMSymbol: CFDateFormatterKey; pub static kCFDateFormatterPMSymbol: CFDateFormatterKey; pub static kCFDateFormatterLongEraSymbols: CFDateFormatterKey; pub static kCFDateFormatterVeryShortMonthSymbols: CFDateFormatterKey; pub static kCFDateFormatterStandaloneMonthSymbols: CFDateFormatterKey; pub static kCFDateFormatterShortStandaloneMonthSymbols: CFDateFormatterKey; pub static kCFDateFormatterVeryShortStandaloneMonthSymbols: CFDateFormatterKey; pub static kCFDateFormatterVeryShortWeekdaySymbols: CFDateFormatterKey; pub static kCFDateFormatterStandaloneWeekdaySymbols: CFDateFormatterKey; pub static kCFDateFormatterShortStandaloneWeekdaySymbols: CFDateFormatterKey; pub static kCFDateFormatterVeryShortStandaloneWeekdaySymbols: CFDateFormatterKey; pub static kCFDateFormatterQuarterSymbols: CFDateFormatterKey; pub static kCFDateFormatterShortQuarterSymbols: CFDateFormatterKey; pub static kCFDateFormatterStandaloneQuarterSymbols: CFDateFormatterKey; pub static kCFDateFormatterShortStandaloneQuarterSymbols: CFDateFormatterKey; pub static kCFDateFormatterGregorianStartDate: CFDateFormatterKey; pub static kCFDateFormatterDoesRelativeDateFormattingKey: CFDateFormatterKey; pub fn CFDateFormatterCreate(
allocator: CFAllocatorRef,
locale: CFLocaleRef,
dateStyle: CFDateFormatterStyle,
timeStyle: CFDateFormatterStyle,
) -> CFDateFormatterRef;
pub fn CFDateFormatterSetFormat(formatter: CFDateFormatterRef, formatString: CFStringRef);
pub fn CFDateFormatterSetProperty(
formatter: CFDateFormatterRef,
key: CFStringRef,
value: CFTypeRef,
);
pub fn CFDateFormatterCreateDateFromString(
allocator: CFAllocatorRef,
formatter: CFDateFormatterRef,
string: CFStringRef,
rangep: *mut CFRange,
) -> CFDateRef;
pub fn CFDateFormatterGetAbsoluteTimeFromString(
formatter: CFDateFormatterRef,
string: CFStringRef,
rangep: *mut CFRange,
atp: *mut CFAbsoluteTime,
) -> Boolean;
pub fn CFDateFormatterCreateStringWithAbsoluteTime(
allocator: CFAllocatorRef,
formatter: CFDateFormatterRef,
at: CFAbsoluteTime,
) -> CFStringRef;
pub fn CFDateFormatterCreateStringWithDate(
allocator: CFAllocatorRef,
formatter: CFDateFormatterRef,
date: CFDateRef,
) -> CFStringRef;
pub fn CFDateFormatterCreateDateFormatFromTemplate(
allocator: CFAllocatorRef,
tmplate: CFStringRef,
options: CFOptionFlags,
locale: CFLocaleRef,
) -> CFStringRef;
pub fn CFDateFormatterCopyProperty(
formatter: CFDateFormatterRef,
key: CFDateFormatterKey,
) -> CFTypeRef;
pub fn CFDateFormatterGetDateStyle(formatter: CFDateFormatterRef) -> CFDateFormatterStyle;
pub fn CFDateFormatterGetFormat(formatter: CFDateFormatterRef) -> CFStringRef;
pub fn CFDateFormatterGetLocale(formatter: CFDateFormatterRef) -> CFLocaleRef;
pub fn CFDateFormatterGetTimeStyle(formatter: CFDateFormatterRef) -> CFDateFormatterStyle;
pub fn CFDateFormatterGetTypeID() -> CFTypeID;
}