use crate::array::CFArrayRef;
use crate::base::{CFAllocatorRef, CFIndex, CFTypeID, CFTypeRef, LangCode, RegionCode};
use crate::dictionary::CFDictionaryRef;
use crate::notification_center::CFNotificationName;
use crate::string::CFStringRef;
use std::os::raw::c_void;
#[repr(C)]
pub struct __CFLocale(c_void);
pub type CFLocaleRef = *const __CFLocale;
pub type CFLocaleIdentifier = CFStringRef;
pub type CFLocaleKey = CFStringRef;
pub type CFCalendarIdentifier = CFStringRef;
pub type CFLocaleLanguageDirection = CFIndex;
pub const kCFLocaleLanguageDirectionUnknown: CFLocaleLanguageDirection = 0;
pub const kCFLocaleLanguageDirectionLeftToRight: CFLocaleLanguageDirection = 1;
pub const kCFLocaleLanguageDirectionRightToLeft: CFLocaleLanguageDirection = 2;
pub const kCFLocaleLanguageDirectionTopToBottom: CFLocaleLanguageDirection = 3;
pub const kCFLocaleLanguageDirectionBottomToTop: CFLocaleLanguageDirection = 4;
extern "C" {
pub static kCFLocaleCurrentLocaleDidChangeNotification: CFNotificationName;
pub static kCFLocaleIdentifier: CFLocaleKey;
pub static kCFLocaleLanguageCode: CFLocaleKey;
pub static kCFLocaleCountryCode: CFLocaleKey;
pub static kCFLocaleScriptCode: CFLocaleKey;
pub static kCFLocaleVariantCode: CFLocaleKey;
pub static kCFLocaleExemplarCharacterSet: CFLocaleKey;
pub static kCFLocaleCalendarIdentifier: CFLocaleKey;
pub static kCFLocaleCalendar: CFLocaleKey;
pub static kCFLocaleCollationIdentifier: CFLocaleKey;
pub static kCFLocaleUsesMetricSystem: CFLocaleKey;
pub static kCFLocaleMeasurementSystem: CFLocaleKey;
pub static kCFLocaleDecimalSeparator: CFLocaleKey;
pub static kCFLocaleGroupingSeparator: CFLocaleKey;
pub static kCFLocaleCurrencySymbol: CFLocaleKey;
pub static kCFLocaleCurrencyCode: CFLocaleKey;
pub static kCFLocaleCollatorIdentifier: CFLocaleKey;
pub static kCFLocaleQuotationBeginDelimiterKey: CFLocaleKey;
pub static kCFLocaleQuotationEndDelimiterKey: CFLocaleKey;
pub static kCFLocaleAlternateQuotationBeginDelimiterKey: CFLocaleKey;
pub static kCFLocaleAlternateQuotationEndDelimiterKey: CFLocaleKey;
pub static kCFGregorianCalendar: CFCalendarIdentifier;
pub static kCFBuddhistCalendar: CFCalendarIdentifier;
pub static kCFChineseCalendar: CFCalendarIdentifier;
pub static kCFHebrewCalendar: CFCalendarIdentifier;
pub static kCFIslamicCalendar: CFCalendarIdentifier;
pub static kCFIslamicCivilCalendar: CFCalendarIdentifier;
pub static kCFJapaneseCalendar: CFCalendarIdentifier;
pub static kCFRepublicOfChinaCalendar: CFCalendarIdentifier;
pub static kCFPersianCalendar: CFCalendarIdentifier;
pub static kCFIndianCalendar: CFCalendarIdentifier;
pub static kCFISO8601Calendar: CFCalendarIdentifier;
pub fn CFLocaleCopyCurrent() -> CFLocaleRef;
pub fn CFLocaleCreate(
allocator: CFAllocatorRef,
localeIdentifier: CFLocaleIdentifier,
) -> CFLocaleRef;
pub fn CFLocaleCreateCopy(allocator: CFAllocatorRef, locale: CFLocaleRef) -> CFLocaleRef;
pub fn CFLocaleGetSystem() -> CFLocaleRef;
pub fn CFLocaleCopyAvailableLocaleIdentifiers() -> CFArrayRef;
pub fn CFLocaleCopyISOCountryCodes() -> CFArrayRef;
pub fn CFLocaleCopyISOLanguageCodes() -> CFArrayRef;
pub fn CFLocaleCopyISOCurrencyCodes() -> CFArrayRef;
pub fn CFLocaleCopyCommonISOCurrencyCodes() -> CFArrayRef;
pub fn CFLocaleCopyPreferredLanguages() -> CFArrayRef;
pub fn CFLocaleCopyDisplayNameForPropertyValue(
displayLocale: CFLocaleRef,
key: CFLocaleKey,
value: CFStringRef,
) -> CFStringRef;
pub fn CFLocaleGetValue(locale: CFLocaleRef, key: CFLocaleKey) -> CFTypeRef;
pub fn CFLocaleGetIdentifier(locale: CFLocaleRef) -> CFLocaleIdentifier;
pub fn CFLocaleCreateCanonicalLocaleIdentifierFromScriptManagerCodes(
allocator: CFAllocatorRef,
lcode: LangCode,
rcode: RegionCode,
) -> CFLocaleIdentifier;
pub fn CFLocaleCreateCanonicalLanguageIdentifierFromString(
allocator: CFAllocatorRef,
localeIdentifier: CFStringRef,
) -> CFLocaleIdentifier;
pub fn CFLocaleCreateCanonicalLocaleIdentifierFromString(
allocator: CFAllocatorRef,
localeIdentifier: CFStringRef,
) -> CFLocaleIdentifier;
pub fn CFLocaleCreateComponentsFromLocaleIdentifier(
allocator: CFAllocatorRef,
localeID: CFLocaleIdentifier,
) -> CFDictionaryRef;
pub fn CFLocaleCreateLocaleIdentifierFromComponents(
allocator: CFAllocatorRef,
dictionary: CFDictionaryRef,
) -> CFLocaleIdentifier;
pub fn CFLocaleCreateLocaleIdentifierFromWindowsLocaleCode(
allocator: CFAllocatorRef,
lcid: u32,
) -> CFLocaleIdentifier;
pub fn CFLocaleGetWindowsLocaleCodeFromLocaleIdentifier(
localeIdentifier: CFLocaleIdentifier,
) -> u32;
pub fn CFLocaleGetLanguageCharacterDirection(
isoLangCode: CFStringRef,
) -> CFLocaleLanguageDirection;
pub fn CFLocaleGetLanguageLineDirection(isoLangCode: CFStringRef) -> CFLocaleLanguageDirection;
pub fn CFLocaleGetTypeID() -> CFTypeID;
}