core_foundation_sys/
string.rs

1// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
2// file at the top-level directory of this distribution.
3//
4// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
5// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
6// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
7// option. This file may not be copied, modified, or distributed
8// except according to those terms.
9
10use crate::array::CFArrayRef;
11use crate::base::{
12    Boolean, CFAllocatorRef, CFComparisonResult, CFIndex, CFOptionFlags, CFRange, CFTypeID,
13    ConstStr255Param, ConstStringPtr, SInt32, StringPtr, UInt32, UInt8, UTF32Char,
14};
15use crate::characterset::CFCharacterSetRef;
16use crate::data::CFDataRef;
17use crate::dictionary::CFDictionaryRef;
18use crate::locale::CFLocaleRef;
19use std::os::raw::{c_char, c_double, c_ulong, c_ushort, c_void};
20
21pub type CFStringCompareFlags = CFOptionFlags;
22pub const kCFCompareCaseInsensitive: CFStringCompareFlags = 1;
23pub const kCFCompareBackwards: CFStringCompareFlags = 4;
24pub const kCFCompareAnchored: CFStringCompareFlags = 8;
25pub const kCFCompareNonliteral: CFStringCompareFlags = 16;
26pub const kCFCompareLocalized: CFStringCompareFlags = 32;
27pub const kCFCompareNumerically: CFStringCompareFlags = 64;
28pub const kCFCompareDiacriticInsensitive: CFStringCompareFlags = 128;
29pub const kCFCompareWidthInsensitive: CFStringCompareFlags = 256;
30pub const kCFCompareForcedOrdering: CFStringCompareFlags = 512;
31
32pub type CFStringEncoding = UInt32;
33pub type UniChar = c_ushort;
34
35// macOS built-in encodings.
36
37pub const kCFStringEncodingMacRoman: CFStringEncoding = 0;
38pub const kCFStringEncodingWindowsLatin1: CFStringEncoding = 0x0500;
39pub const kCFStringEncodingISOLatin1: CFStringEncoding = 0x0201;
40pub const kCFStringEncodingNextStepLatin: CFStringEncoding = 0x0B01;
41pub const kCFStringEncodingASCII: CFStringEncoding = 0x0600;
42pub const kCFStringEncodingUnicode: CFStringEncoding = 0x0100;
43pub const kCFStringEncodingUTF8: CFStringEncoding = 0x08000100;
44pub const kCFStringEncodingNonLossyASCII: CFStringEncoding = 0x0BFF;
45
46pub const kCFStringEncodingUTF16: CFStringEncoding = 0x0100;
47pub const kCFStringEncodingUTF16BE: CFStringEncoding = 0x10000100;
48pub const kCFStringEncodingUTF16LE: CFStringEncoding = 0x14000100;
49pub const kCFStringEncodingUTF32: CFStringEncoding = 0x0c000100;
50pub const kCFStringEncodingUTF32BE: CFStringEncoding = 0x18000100;
51pub const kCFStringEncodingUTF32LE: CFStringEncoding = 0x1c000100;
52
53// CFStringEncodingExt.h
54// External encodings, except those defined above.
55pub const kCFStringEncodingMacJapanese: CFStringEncoding = 1;
56pub const kCFStringEncodingMacChineseTrad: CFStringEncoding = 2;
57pub const kCFStringEncodingMacKorean: CFStringEncoding = 3;
58pub const kCFStringEncodingMacArabic: CFStringEncoding = 4;
59pub const kCFStringEncodingMacHebrew: CFStringEncoding = 5;
60pub const kCFStringEncodingMacGreek: CFStringEncoding = 6;
61pub const kCFStringEncodingMacCyrillic: CFStringEncoding = 7;
62pub const kCFStringEncodingMacDevanagari: CFStringEncoding = 9;
63pub const kCFStringEncodingMacGurmukhi: CFStringEncoding = 10;
64pub const kCFStringEncodingMacGujarati: CFStringEncoding = 11;
65pub const kCFStringEncodingMacOriya: CFStringEncoding = 12;
66pub const kCFStringEncodingMacBengali: CFStringEncoding = 13;
67pub const kCFStringEncodingMacTamil: CFStringEncoding = 14;
68pub const kCFStringEncodingMacTelugu: CFStringEncoding = 15;
69pub const kCFStringEncodingMacKannada: CFStringEncoding = 16;
70pub const kCFStringEncodingMacMalayalam: CFStringEncoding = 17;
71pub const kCFStringEncodingMacSinhalese: CFStringEncoding = 18;
72pub const kCFStringEncodingMacBurmese: CFStringEncoding = 19;
73pub const kCFStringEncodingMacKhmer: CFStringEncoding = 20;
74pub const kCFStringEncodingMacThai: CFStringEncoding = 21;
75pub const kCFStringEncodingMacLaotian: CFStringEncoding = 22;
76pub const kCFStringEncodingMacGeorgian: CFStringEncoding = 23;
77pub const kCFStringEncodingMacArmenian: CFStringEncoding = 24;
78pub const kCFStringEncodingMacChineseSimp: CFStringEncoding = 25;
79pub const kCFStringEncodingMacTibetan: CFStringEncoding = 26;
80pub const kCFStringEncodingMacMongolian: CFStringEncoding = 27;
81pub const kCFStringEncodingMacEthiopic: CFStringEncoding = 28;
82pub const kCFStringEncodingMacCentralEurRoman: CFStringEncoding = 29;
83pub const kCFStringEncodingMacVietnamese: CFStringEncoding = 30;
84pub const kCFStringEncodingMacExtArabic: CFStringEncoding = 31;
85pub const kCFStringEncodingMacSymbol: CFStringEncoding = 33;
86pub const kCFStringEncodingMacDingbats: CFStringEncoding = 34;
87pub const kCFStringEncodingMacTurkish: CFStringEncoding = 35;
88pub const kCFStringEncodingMacCroatian: CFStringEncoding = 36;
89pub const kCFStringEncodingMacIcelandic: CFStringEncoding = 37;
90pub const kCFStringEncodingMacRomanian: CFStringEncoding = 38;
91pub const kCFStringEncodingMacCeltic: CFStringEncoding = 39;
92pub const kCFStringEncodingMacGaelic: CFStringEncoding = 40;
93pub const kCFStringEncodingMacFarsi: CFStringEncoding = 0x8C;
94pub const kCFStringEncodingMacUkrainian: CFStringEncoding = 0x98;
95pub const kCFStringEncodingMacInuit: CFStringEncoding = 0xEC;
96pub const kCFStringEncodingMacVT100: CFStringEncoding = 0xFC;
97pub const kCFStringEncodingMacHFS: CFStringEncoding = 0xFF;
98pub const kCFStringEncodingISOLatin2: CFStringEncoding = 0x0202;
99pub const kCFStringEncodingISOLatin3: CFStringEncoding = 0x0203;
100pub const kCFStringEncodingISOLatin4: CFStringEncoding = 0x0204;
101pub const kCFStringEncodingISOLatinCyrillic: CFStringEncoding = 0x0205;
102pub const kCFStringEncodingISOLatinArabic: CFStringEncoding = 0x0206;
103pub const kCFStringEncodingISOLatinGreek: CFStringEncoding = 0x0207;
104pub const kCFStringEncodingISOLatinHebrew: CFStringEncoding = 0x0208;
105pub const kCFStringEncodingISOLatin5: CFStringEncoding = 0x0209;
106pub const kCFStringEncodingISOLatin6: CFStringEncoding = 0x020A;
107pub const kCFStringEncodingISOLatinThai: CFStringEncoding = 0x020B;
108pub const kCFStringEncodingISOLatin7: CFStringEncoding = 0x020D;
109pub const kCFStringEncodingISOLatin8: CFStringEncoding = 0x020E;
110pub const kCFStringEncodingISOLatin9: CFStringEncoding = 0x020F;
111pub const kCFStringEncodingISOLatin10: CFStringEncoding = 0x0210;
112pub const kCFStringEncodingDOSLatinUS: CFStringEncoding = 0x0400;
113pub const kCFStringEncodingDOSGreek: CFStringEncoding = 0x0405;
114pub const kCFStringEncodingDOSBalticRim: CFStringEncoding = 0x0406;
115pub const kCFStringEncodingDOSLatin1: CFStringEncoding = 0x0410;
116pub const kCFStringEncodingDOSGreek1: CFStringEncoding = 0x0411;
117pub const kCFStringEncodingDOSLatin2: CFStringEncoding = 0x0412;
118pub const kCFStringEncodingDOSCyrillic: CFStringEncoding = 0x0413;
119pub const kCFStringEncodingDOSTurkish: CFStringEncoding = 0x0414;
120pub const kCFStringEncodingDOSPortuguese: CFStringEncoding = 0x0415;
121pub const kCFStringEncodingDOSIcelandic: CFStringEncoding = 0x0416;
122pub const kCFStringEncodingDOSHebrew: CFStringEncoding = 0x0417;
123pub const kCFStringEncodingDOSCanadianFrench: CFStringEncoding = 0x0418;
124pub const kCFStringEncodingDOSArabic: CFStringEncoding = 0x0419;
125pub const kCFStringEncodingDOSNordic: CFStringEncoding = 0x041A;
126pub const kCFStringEncodingDOSRussian: CFStringEncoding = 0x041B;
127pub const kCFStringEncodingDOSGreek2: CFStringEncoding = 0x041C;
128pub const kCFStringEncodingDOSThai: CFStringEncoding = 0x041D;
129pub const kCFStringEncodingDOSJapanese: CFStringEncoding = 0x0420;
130pub const kCFStringEncodingDOSChineseSimplif: CFStringEncoding = 0x0421;
131pub const kCFStringEncodingDOSKorean: CFStringEncoding = 0x0422;
132pub const kCFStringEncodingDOSChineseTrad: CFStringEncoding = 0x0423;
133pub const kCFStringEncodingWindowsLatin2: CFStringEncoding = 0x0501;
134pub const kCFStringEncodingWindowsCyrillic: CFStringEncoding = 0x0502;
135pub const kCFStringEncodingWindowsGreek: CFStringEncoding = 0x0503;
136pub const kCFStringEncodingWindowsLatin5: CFStringEncoding = 0x0504;
137pub const kCFStringEncodingWindowsHebrew: CFStringEncoding = 0x0505;
138pub const kCFStringEncodingWindowsArabic: CFStringEncoding = 0x0506;
139pub const kCFStringEncodingWindowsBalticRim: CFStringEncoding = 0x0507;
140pub const kCFStringEncodingWindowsVietnamese: CFStringEncoding = 0x0508;
141pub const kCFStringEncodingWindowsKoreanJohab: CFStringEncoding = 0x0510;
142pub const kCFStringEncodingANSEL: CFStringEncoding = 0x0601;
143pub const kCFStringEncodingJIS_X0201_76: CFStringEncoding = 0x0620;
144pub const kCFStringEncodingJIS_X0208_83: CFStringEncoding = 0x0621;
145pub const kCFStringEncodingJIS_X0208_90: CFStringEncoding = 0x0622;
146pub const kCFStringEncodingJIS_X0212_90: CFStringEncoding = 0x0623;
147pub const kCFStringEncodingJIS_C6226_78: CFStringEncoding = 0x0624;
148pub const kCFStringEncodingShiftJIS_X0213: CFStringEncoding = 0x0628;
149pub const kCFStringEncodingShiftJIS_X0213_MenKuTen: CFStringEncoding = 0x0629;
150pub const kCFStringEncodingGB_2312_80: CFStringEncoding = 0x0630;
151pub const kCFStringEncodingGBK_95: CFStringEncoding = 0x0631;
152pub const kCFStringEncodingGB_18030_2000: CFStringEncoding = 0x0632;
153pub const kCFStringEncodingKSC_5601_87: CFStringEncoding = 0x0640;
154pub const kCFStringEncodingKSC_5601_92_Johab: CFStringEncoding = 0x0641;
155pub const kCFStringEncodingCNS_11643_92_P1: CFStringEncoding = 0x0651;
156pub const kCFStringEncodingCNS_11643_92_P2: CFStringEncoding = 0x0652;
157pub const kCFStringEncodingCNS_11643_92_P3: CFStringEncoding = 0x0653;
158pub const kCFStringEncodingISO_2022_JP: CFStringEncoding = 0x0820;
159pub const kCFStringEncodingISO_2022_JP_2: CFStringEncoding = 0x0821;
160pub const kCFStringEncodingISO_2022_JP_1: CFStringEncoding = 0x0822;
161pub const kCFStringEncodingISO_2022_JP_3: CFStringEncoding = 0x0823;
162pub const kCFStringEncodingISO_2022_CN: CFStringEncoding = 0x0830;
163pub const kCFStringEncodingISO_2022_CN_EXT: CFStringEncoding = 0x0831;
164pub const kCFStringEncodingISO_2022_KR: CFStringEncoding = 0x0840;
165pub const kCFStringEncodingEUC_JP: CFStringEncoding = 0x0920;
166pub const kCFStringEncodingEUC_CN: CFStringEncoding = 0x0930;
167pub const kCFStringEncodingEUC_TW: CFStringEncoding = 0x0931;
168pub const kCFStringEncodingEUC_KR: CFStringEncoding = 0x0940;
169pub const kCFStringEncodingShiftJIS: CFStringEncoding = 0x0A01;
170pub const kCFStringEncodingKOI8_R: CFStringEncoding = 0x0A02;
171pub const kCFStringEncodingBig5: CFStringEncoding = 0x0A03;
172pub const kCFStringEncodingMacRomanLatin1: CFStringEncoding = 0x0A04;
173pub const kCFStringEncodingHZ_GB_2312: CFStringEncoding = 0x0A05;
174pub const kCFStringEncodingBig5_HKSCS_1999: CFStringEncoding = 0x0A06;
175pub const kCFStringEncodingVISCII: CFStringEncoding = 0x0A07;
176pub const kCFStringEncodingKOI8_U: CFStringEncoding = 0x0A08;
177pub const kCFStringEncodingBig5_E: CFStringEncoding = 0x0A09;
178pub const kCFStringEncodingNextStepJapanese: CFStringEncoding = 0x0B02;
179pub const kCFStringEncodingEBCDIC_US: CFStringEncoding = 0x0C01;
180pub const kCFStringEncodingEBCDIC_CP037: CFStringEncoding = 0x0C02;
181pub const kCFStringEncodingUTF7: CFStringEncoding = 0x04000100;
182pub const kCFStringEncodingUTF7_IMAP: CFStringEncoding = 0x0A10;
183pub const kCFStringEncodingShiftJIS_X0213_00: CFStringEncoding = 0x0628; /* Deprecated */
184
185pub const kCFStringEncodingInvalidId: u32 = 0xffffffff;
186
187pub type CFStringNormalizationForm = CFIndex;
188pub const kCFStringNormalizationFormD: CFStringNormalizationForm = 0;
189pub const kCFStringNormalizationFormKD: CFStringNormalizationForm = 1;
190pub const kCFStringNormalizationFormC: CFStringNormalizationForm = 2;
191pub const kCFStringNormalizationFormKC: CFStringNormalizationForm = 3;
192
193#[repr(C)]
194pub struct __CFString(c_void);
195
196pub type CFStringRef = *const __CFString;
197pub type CFMutableStringRef = *mut __CFString;
198
199/* todo: The source code of the following functions is right in CFString.h */
200/*
201pub fn CFStringGetLongCharacterForSurrogatePair(surrogateHigh: UniChar, surrogateLow: UniChar) -> UTF32Char;
202pub fn CFStringGetSurrogatePairForLongCharacter(character: UTF32Char, surrogates: *mut UniChar) -> Boolean;
203pub fn CFStringIsSurrogateHighCharacter(character: UniChar) -> Boolean;
204pub fn CFStringIsSurrogateLowCharacter(character: UniChar) -> Boolean;
205pub fn CFStringInitInlineBuffer(str: CFStringRef, buf: *mut CFStringInlineBuffer, range: CFRange);
206pub fn CFStringGetCharacterFromInlineBuffer(buf: *mut CFStringInlineBuffer, idx: CFIndex) -> UniChar;
207*/
208
209extern "C" {
210    /*
211     * CFString.h
212     */
213
214    // N.B. organized according to "Functions by task" in docs
215
216    /* CFString */
217    /* Creating a CFString */
218    //fn CFSTR
219    pub fn CFStringCreateArrayBySeparatingStrings(
220        alloc: CFAllocatorRef,
221        theString: CFStringRef,
222        separatorString: CFStringRef,
223    ) -> CFArrayRef;
224    pub fn CFStringCreateByCombiningStrings(
225        alloc: CFAllocatorRef,
226        theArray: CFArrayRef,
227        separatorString: CFStringRef,
228    ) -> CFStringRef;
229    pub fn CFStringCreateCopy(alloc: CFAllocatorRef, theString: CFStringRef) -> CFStringRef;
230    pub fn CFStringCreateFromExternalRepresentation(
231        alloc: CFAllocatorRef,
232        data: CFDataRef,
233        encoding: CFStringEncoding,
234    ) -> CFStringRef;
235    pub fn CFStringCreateWithBytes(
236        alloc: CFAllocatorRef,
237        bytes: *const UInt8,
238        numBytes: CFIndex,
239        encoding: CFStringEncoding,
240        isExternalRepresentation: Boolean,
241    ) -> CFStringRef;
242    pub fn CFStringCreateWithBytesNoCopy(
243        alloc: CFAllocatorRef,
244        bytes: *const UInt8,
245        numBytes: CFIndex,
246        encoding: CFStringEncoding,
247        isExternalRepresentation: Boolean,
248        contentsDeallocator: CFAllocatorRef,
249    ) -> CFStringRef;
250    pub fn CFStringCreateWithCharacters(
251        alloc: CFAllocatorRef,
252        chars: *const UniChar,
253        numChars: CFIndex,
254    ) -> CFStringRef;
255    pub fn CFStringCreateWithCharactersNoCopy(
256        alloc: CFAllocatorRef,
257        chars: *const UniChar,
258        numChars: CFIndex,
259        contentsDeallocator: CFAllocatorRef,
260    ) -> CFStringRef;
261    pub fn CFStringCreateWithCString(
262        alloc: CFAllocatorRef,
263        cStr: *const c_char,
264        encoding: CFStringEncoding,
265    ) -> CFStringRef;
266    pub fn CFStringCreateWithCStringNoCopy(
267        alloc: CFAllocatorRef,
268        cStr: *const c_char,
269        encoding: CFStringEncoding,
270        contentsDeallocator: CFAllocatorRef,
271    ) -> CFStringRef;
272    pub fn CFStringCreateWithFormat(
273        alloc: CFAllocatorRef,
274        formatOptions: CFDictionaryRef,
275        format: CFStringRef,
276        ...
277    ) -> CFStringRef;
278    //pub fn CFStringCreateWithFormatAndArguments(alloc: CFAllocatorRef, formatOptions: CFDictionaryRef, format: CFStringRef, arguments: va_list) -> CFStringRef;
279    pub fn CFStringCreateWithPascalString(
280        alloc: CFAllocatorRef,
281        pStr: ConstStr255Param,
282        encoding: CFStringEncoding,
283    ) -> CFStringRef;
284    pub fn CFStringCreateWithPascalStringNoCopy(
285        alloc: CFAllocatorRef,
286        pStr: ConstStr255Param,
287        encoding: CFStringEncoding,
288        contentsDeallocator: CFAllocatorRef,
289    ) -> CFStringRef;
290    pub fn CFStringCreateWithSubstring(
291        alloc: CFAllocatorRef,
292        str: CFStringRef,
293        range: CFRange,
294    ) -> CFStringRef;
295
296    /* Searching Strings */
297    pub fn CFStringCreateArrayWithFindResults(
298        alloc: CFAllocatorRef,
299        theString: CFStringRef,
300        stringToFind: CFStringRef,
301        rangeToSearch: CFRange,
302        compareOptions: CFStringCompareFlags,
303    ) -> CFArrayRef;
304    pub fn CFStringFind(
305        theString: CFStringRef,
306        stringToFind: CFStringRef,
307        compareOptions: CFStringCompareFlags,
308    ) -> CFRange;
309    pub fn CFStringFindCharacterFromSet(
310        theString: CFStringRef,
311        theSet: CFCharacterSetRef,
312        rangeToSearch: CFRange,
313        searchOptions: CFStringCompareFlags,
314        result: *mut CFRange,
315    ) -> Boolean;
316    pub fn CFStringFindWithOptions(
317        theString: CFStringRef,
318        stringToFind: CFStringRef,
319        rangeToSearch: CFRange,
320        searchOptions: CFStringCompareFlags,
321        result: *mut CFRange,
322    ) -> Boolean;
323    pub fn CFStringFindWithOptionsAndLocale(
324        theString: CFStringRef,
325        stringToFind: CFStringRef,
326        rangeToSearch: CFRange,
327        searchOptions: CFStringCompareFlags,
328        locale: CFLocaleRef,
329        result: *mut CFRange,
330    ) -> Boolean;
331    pub fn CFStringGetLineBounds(
332        theString: CFStringRef,
333        range: CFRange,
334        lineBeginIndex: *mut CFIndex,
335        lineEndIndex: *mut CFIndex,
336        contentsEndIndex: *mut CFIndex,
337    );
338
339    /* Comparing Strings */
340    pub fn CFStringCompare(
341        theString1: CFStringRef,
342        theString2: CFStringRef,
343        compareOptions: CFStringCompareFlags,
344    ) -> CFComparisonResult;
345    pub fn CFStringCompareWithOptions(
346        theString1: CFStringRef,
347        theString2: CFStringRef,
348        rangeToCompare: CFRange,
349        compareOptions: CFStringCompareFlags,
350    ) -> CFComparisonResult;
351    pub fn CFStringCompareWithOptionsAndLocale(
352        theString1: CFStringRef,
353        theString2: CFStringRef,
354        rangeToCompare: CFRange,
355        compareOptions: CFStringCompareFlags,
356        locale: CFLocaleRef,
357    ) -> CFComparisonResult;
358    pub fn CFStringHasPrefix(theString: CFStringRef, prefix: CFStringRef) -> Boolean;
359    pub fn CFStringHasSuffix(theString: CFStringRef, suffix: CFStringRef) -> Boolean;
360
361    /* Accessing Characters */
362    pub fn CFStringCreateExternalRepresentation(
363        alloc: CFAllocatorRef,
364        theString: CFStringRef,
365        encoding: CFStringEncoding,
366        lossByte: UInt8,
367    ) -> CFDataRef;
368    pub fn CFStringGetBytes(
369        theString: CFStringRef,
370        range: CFRange,
371        encoding: CFStringEncoding,
372        lossByte: UInt8,
373        isExternalRepresentation: Boolean,
374        buffer: *mut UInt8,
375        maxBufLen: CFIndex,
376        usedBufLen: *mut CFIndex,
377    ) -> CFIndex;
378    pub fn CFStringGetCharacterAtIndex(theString: CFStringRef, idx: CFIndex) -> UniChar;
379    pub fn CFStringGetCharacters(theString: CFStringRef, range: CFRange, buffer: *mut UniChar);
380    pub fn CFStringGetCharactersPtr(theString: CFStringRef) -> *const UniChar;
381    pub fn CFStringGetCString(
382        theString: CFStringRef,
383        buffer: *mut c_char,
384        bufferSize: CFIndex,
385        encoding: CFStringEncoding,
386    ) -> Boolean;
387    pub fn CFStringGetCStringPtr(
388        theString: CFStringRef,
389        encoding: CFStringEncoding,
390    ) -> *const c_char;
391    pub fn CFStringGetLength(theString: CFStringRef) -> CFIndex;
392    pub fn CFStringGetPascalString(
393        theString: CFStringRef,
394        buffer: StringPtr,
395        bufferSize: CFIndex,
396        encoding: CFStringEncoding,
397    ) -> Boolean;
398    pub fn CFStringGetPascalStringPtr(
399        theString: CFStringRef,
400        encoding: CFStringEncoding,
401    ) -> ConstStringPtr;
402    pub fn CFStringGetRangeOfComposedCharactersAtIndex(
403        theString: CFStringRef,
404        theIndex: CFIndex,
405    ) -> CFRange;
406
407    /* Working With Hyphenation */
408    pub fn CFStringGetHyphenationLocationBeforeIndex(
409        string: CFStringRef,
410        location: CFIndex,
411        limitRange: CFRange,
412        options: CFOptionFlags,
413        locale: CFLocaleRef,
414        character: *mut UTF32Char,
415    ) -> CFIndex;
416    pub fn CFStringIsHyphenationAvailableForLocale(locale: CFLocaleRef) -> Boolean;
417
418    /* Working With Encodings */
419    pub fn CFStringConvertEncodingToIANACharSetName(encoding: CFStringEncoding) -> CFStringRef;
420    pub fn CFStringConvertEncodingToNSStringEncoding(encoding: CFStringEncoding) -> c_ulong;
421    pub fn CFStringConvertEncodingToWindowsCodepage(encoding: CFStringEncoding) -> UInt32;
422    pub fn CFStringConvertIANACharSetNameToEncoding(theString: CFStringRef) -> CFStringEncoding;
423    pub fn CFStringConvertNSStringEncodingToEncoding(encoding: c_ulong) -> CFStringEncoding;
424    pub fn CFStringConvertWindowsCodepageToEncoding(codepage: UInt32) -> CFStringEncoding;
425    pub fn CFStringGetFastestEncoding(theString: CFStringRef) -> CFStringEncoding;
426    pub fn CFStringGetListOfAvailableEncodings() -> *const CFStringEncoding;
427    pub fn CFStringGetMaximumSizeForEncoding(
428        length: CFIndex,
429        encoding: CFStringEncoding,
430    ) -> CFIndex;
431    pub fn CFStringGetMostCompatibleMacStringEncoding(
432        encoding: CFStringEncoding,
433    ) -> CFStringEncoding;
434    pub fn CFStringGetNameOfEncoding(encoding: CFStringEncoding) -> CFStringRef;
435    pub fn CFStringGetSmallestEncoding(theString: CFStringRef) -> CFStringEncoding;
436    pub fn CFStringGetSystemEncoding() -> CFStringEncoding;
437    pub fn CFStringIsEncodingAvailable(encoding: CFStringEncoding) -> Boolean;
438
439    /* Getting Numeric Values */
440    pub fn CFStringGetDoubleValue(str: CFStringRef) -> c_double;
441    pub fn CFStringGetIntValue(str: CFStringRef) -> SInt32;
442
443    /* Getting String Properties */
444    pub fn CFShowStr(str: CFStringRef);
445    pub fn CFStringGetTypeID() -> CFTypeID;
446
447    /* String File System Representations */
448    pub fn CFStringCreateWithFileSystemRepresentation(
449        alloc: CFAllocatorRef,
450        buffer: *const c_char,
451    ) -> CFStringRef;
452    pub fn CFStringGetFileSystemRepresentation(
453        string: CFStringRef,
454        buffer: *mut c_char,
455        maxBufLen: CFIndex,
456    ) -> Boolean;
457    pub fn CFStringGetMaximumSizeOfFileSystemRepresentation(string: CFStringRef) -> CFIndex;
458
459    /* Getting Paragraph Bounds */
460    pub fn CFStringGetParagraphBounds(
461        string: CFStringRef,
462        range: CFRange,
463        parBeginIndex: *mut CFIndex,
464        parEndIndex: *mut CFIndex,
465        contentsEndIndex: *mut CFIndex,
466    );
467
468    /* CFMutableString */
469    /* CFMutableString Miscellaneous Functions */
470    pub fn CFStringAppend(theString: CFMutableStringRef, appendedString: CFStringRef);
471    pub fn CFStringAppendCharacters(
472        theString: CFMutableStringRef,
473        chars: *const UniChar,
474        numChars: CFIndex,
475    );
476    pub fn CFStringAppendCString(
477        theString: CFMutableStringRef,
478        cStr: *const c_char,
479        encoding: CFStringEncoding,
480    );
481    pub fn CFStringAppendFormat(
482        theString: CFMutableStringRef,
483        formatOptions: CFDictionaryRef,
484        format: CFStringRef,
485        ...
486    );
487    //pub fn CFStringAppendFormatAndArguments(theString: CFMutableStringRef, formatOptions: CFDictionaryRef, format: CFStringRef, arguments: va_list);
488    pub fn CFStringAppendPascalString(
489        theString: CFMutableStringRef,
490        pStr: ConstStr255Param,
491        encoding: CFStringEncoding,
492    );
493    pub fn CFStringCapitalize(theString: CFMutableStringRef, locale: CFLocaleRef);
494    pub fn CFStringCreateMutable(alloc: CFAllocatorRef, maxLength: CFIndex) -> CFMutableStringRef;
495    pub fn CFStringCreateMutableCopy(
496        alloc: CFAllocatorRef,
497        maxLength: CFIndex,
498        theString: CFStringRef,
499    ) -> CFMutableStringRef;
500    pub fn CFStringCreateMutableWithExternalCharactersNoCopy(
501        alloc: CFAllocatorRef,
502        chars: *mut UniChar,
503        numChars: CFIndex,
504        capacity: CFIndex,
505        externalCharactersAllocator: CFAllocatorRef,
506    ) -> CFMutableStringRef;
507    pub fn CFStringDelete(theString: CFMutableStringRef, range: CFRange);
508    pub fn CFStringFindAndReplace(
509        theString: CFMutableStringRef,
510        stringToFind: CFStringRef,
511        replacementString: CFStringRef,
512        rangeToSearch: CFRange,
513        compareOptions: CFStringCompareFlags,
514    ) -> CFIndex;
515    pub fn CFStringFold(
516        theString: CFMutableStringRef,
517        theFlags: CFStringCompareFlags,
518        theLocale: CFLocaleRef,
519    );
520    pub fn CFStringInsert(str: CFMutableStringRef, idx: CFIndex, insertedStr: CFStringRef);
521    pub fn CFStringLowercase(theString: CFMutableStringRef, locale: CFLocaleRef);
522    pub fn CFStringNormalize(theString: CFMutableStringRef, theForm: CFStringNormalizationForm);
523    pub fn CFStringPad(
524        theString: CFMutableStringRef,
525        padString: CFStringRef,
526        length: CFIndex,
527        indexIntoPad: CFIndex,
528    );
529    pub fn CFStringReplace(theString: CFMutableStringRef, range: CFRange, replacement: CFStringRef);
530    pub fn CFStringReplaceAll(theString: CFMutableStringRef, replacement: CFStringRef);
531    pub fn CFStringSetExternalCharactersNoCopy(
532        theString: CFMutableStringRef,
533        chars: *mut UniChar,
534        length: CFIndex,
535        capacity: CFIndex,
536    );
537    pub fn CFStringTransform(
538        string: CFMutableStringRef,
539        range: *mut CFRange,
540        transform: CFStringRef,
541        reverse: Boolean,
542    ) -> Boolean;
543    pub fn CFStringTrim(theString: CFMutableStringRef, trimString: CFStringRef);
544    pub fn CFStringTrimWhitespace(theString: CFMutableStringRef);
545    pub fn CFStringUppercase(theString: CFMutableStringRef, locale: CFLocaleRef);
546}