use std::os::raw::c_void;
use base::{CFIndex, CFOptionFlags, CFAllocatorRef, CFTypeID, CFTypeRef, CFRange, Boolean};
use string::CFStringRef;
use locale::CFLocaleRef;
use date::{CFDateRef, CFAbsoluteTime};
#[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 {
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;
}