27#ifndef __COREFOUNDATION_CFSTRING_H__
28#define __COREFOUNDATION_CFSTRING_H__
30#include <CoreFoundation/CFBase.h>
31#include <CoreFoundation/CFArray.h>
32#include <CoreFoundation/CFCharacterSet.h>
33#include <CoreFoundation/CFData.h>
34#include <CoreFoundation/CFDictionary.h>
35#include <CoreFoundation/CFLocale.h>
52typedef UInt32 CFStringEncoding;
59 kCFCompareCaseInsensitive = 1,
60 kCFCompareBackwards = 4,
61 kCFCompareAnchored = 8,
62 kCFCompareNonliteral = 16,
63 kCFCompareLocalized = 32,
64 kCFCompareNumerically = 64,
65#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
66 kCFCompareDiacriticInsensitive = 128,
67 kCFCompareWidthInsensitive = 256,
68 kCFCompareForcedOrdering = 512
70} CFStringCompareFlags;
72enum CFStringBuiltInEncodings
74 kCFStringEncodingMacRoman = 0,
75 kCFStringEncodingWindowsLatin1 = 0x0500,
76 kCFStringEncodingISOLatin1 = 0x0201,
77 kCFStringEncodingNextStepLatin = 0x0B01,
78 kCFStringEncodingASCII = 0x0600,
79 kCFStringEncodingUnicode = 0x0100,
80 kCFStringEncodingUTF8 = 0x08000100,
81 kCFStringEncodingNonLossyASCII = 0x0BFF,
82#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
83 kCFStringEncodingUTF16 = 0x0100,
84 kCFStringEncodingUTF16BE = 0x10000100,
85 kCFStringEncodingUTF16LE = 0x14000100,
86 kCFStringEncodingUTF32 = 0x0c000100,
87 kCFStringEncodingUTF32BE = 0x18000100,
88 kCFStringEncodingUTF32LE = 0x1c000100
92#if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST)
93# define kCFStringEncodingInvalidId (0xffffffffU)
106__CFStringMakeConstantString (
const char *str) GS_PURE_FUNCTION;
107#define CFSTR(x) __CFStringMakeConstantString("" x "")
114 CFStringRef theString, CFStringRef separatorString);
118 CFStringRef separatorString);
124CFStringCreateFromExternalRepresentation (
CFAllocatorRef alloc, CFDataRef data,
125 CFStringEncoding encoding);
129 CFIndex numBytes, CFStringEncoding encoding, Boolean isExternalRepresentation);
132CFStringCreateWithCharacters (
CFAllocatorRef alloc,
const UniChar *chars,
136CFStringCreateWithCharactersNoCopy (
CFAllocatorRef alloc,
const UniChar *chars,
141 CFStringEncoding encoding);
144CFStringCreateWithCStringNoCopy (
CFAllocatorRef alloc,
const char *cStr,
148CFStringCreateWithFormat (
CFAllocatorRef alloc, CFDictionaryRef formatOptions,
149 CFStringRef format, ...);
153 CFDictionaryRef formatOptions, CFStringRef format, va_list arguments);
156CFStringCreateWithSubstring (
CFAllocatorRef alloc, CFStringRef str,
159#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
165#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
167CFStringCreateWithBytesNoCopy (
CFAllocatorRef alloc,
const UInt8 *bytes,
168 CFIndex numBytes, CFStringEncoding encoding, Boolean isExternalReprentation,
177CFStringCreateArrayWithFindResults (
CFAllocatorRef alloc, CFStringRef theString,
178 CFStringRef stringToFind,
CFRange rangeToSearch,
179 CFStringCompareFlags compareOptions);
182CFStringFind (CFStringRef theString, CFStringRef stringToFind,
183 CFStringCompareFlags compareOptions);
186CFStringFindWithOptions (CFStringRef theString, CFStringRef stringToFind,
187 CFRange rangeToSearch, CFStringCompareFlags searchOptions,
CFRange *result);
190CFStringFindWithOptionsAndLocale (CFStringRef theString,CFStringRef stringToFind,
191 CFRange rangeToSearch, CFStringCompareFlags searchOptions,
192 CFLocaleRef locale,
CFRange *result);
195CFStringGetLineBounds (CFStringRef theString,
CFRange range,
198#if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST)
200CFStringFindCharacterFromSet (CFStringRef theString, CFCharacterSetRef theSet,
201 CFRange rangeToSearch, CFStringCompareFlags searchOptions,
CFRange *result);
204#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
206CFStringGetParagraphBounds (CFStringRef
string,
CFRange range,
214CF_EXPORT CFComparisonResult
215CFStringCompare (CFStringRef theString1, CFStringRef theString2,
216 CFStringCompareFlags compareOptions);
218CF_EXPORT CFComparisonResult
219CFStringCompareWithOptions (CFStringRef theString1, CFStringRef theString2,
220 CFRange rangeToCOmpare, CFStringCompareFlags compareOptions);
223CFStringHasPrefix (CFStringRef theString, CFStringRef prefix);
226CFStringHasSuffix (CFStringRef theString, CFStringRef suffix);
228#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
229CF_EXPORT CFComparisonResult
230CFStringCompareWithOptionsAndLocale (CFStringRef theString1,
231 CFStringRef theString2,
CFRange rangeToCOmpare,
232 CFStringCompareFlags compareOptions, CFLocaleRef locale);
241 CFStringRef theString, CFStringEncoding encoding, UInt8 lossByte);
244CFStringGetBytes (CFStringRef theString,
CFRange range,
245 CFStringEncoding encoding, UInt8 lossByte, Boolean isExternalRepresentation,
249CFStringGetCharacterAtIndex (CFStringRef theString,
CFIndex idx);
252CFStringGetCharacters (CFStringRef theString,
CFRange range, UniChar *buffer);
254CF_EXPORT
const UniChar *
255CFStringGetCharactersPtr (CFStringRef theString);
258CFStringGetCString (CFStringRef theString,
char *buffer,
CFIndex bufferSize,
259 CFStringEncoding encoding);
261CF_EXPORT
const char *
262CFStringGetCStringPtr (CFStringRef theString, CFStringEncoding encoding);
265CFStringGetLength (CFStringRef str);
268CFStringGetRangeOfComposedCharactersAtIndex (CFStringRef theString,
271#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
273CFStringGetLongCharacterForSurrogatePair (UniChar surrogateHigh,
274 UniChar surrogateLow);
277CFStringGetSurrogatePairForLongCharacter (UTF32Char character,
278 UniChar *surrogates);
281CFStringIsSurrogateHighCharacter (UniChar character);
284CFStringIsSurrogateLowCharacter (UniChar character);
292CFStringConvertEncodingToIANACharSetName (CFStringEncoding encoding);
294CF_EXPORT
unsigned long
295CFStringConvertEncodingToNSStringEncoding (CFStringEncoding encoding);
298CFStringConvertEncodingToWindowsCodepage (CFStringEncoding encoding);
300CF_EXPORT CFStringEncoding
301CFStringConvertIANACharSetNameToEncoding (CFStringRef theString);
303CF_EXPORT CFStringEncoding
304CFStringConvertNSStringEncodingToEncoding (
unsigned long encoding);
306CF_EXPORT CFStringEncoding
307CFStringConvertWindowsCodepageToEncoding (UInt32 codepage);
309CF_EXPORT CFStringEncoding
310CFStringGetFastestEncoding (CFStringRef theString);
312CF_EXPORT
const CFStringEncoding *
313CFStringGetListOfAvailableEncodings (
void);
316CFStringGetMaximumSizeForEncoding (
CFIndex length, CFStringEncoding encoding);
318CF_EXPORT CFStringEncoding
319CFStringGetMostCompatibleMacStringEncoding (CFStringEncoding encoding);
322CFStringGetNameOfEncoding (CFStringEncoding encoding);
324CF_EXPORT CFStringEncoding
325CFStringGetSmallestEncoding (CFStringRef theString);
327CF_EXPORT CFStringEncoding
328CFStringGetSystemEncoding (
void);
331CFStringIsEncodingAvailable (CFStringEncoding encoding);
333#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
335CFStringGetFileSystemRepresentation (CFStringRef
string,
char *buffer,
339CFStringGetMaximumSizeOfFileSystemRepresentation (CFStringRef
string);
347CFStringGetDoubleValue (CFStringRef str);
350CFStringGetIntValue (CFStringRef str);
357CFShow (CFTypeRef obj);
360CFShowStr (CFStringRef str);
363CFStringGetTypeID (
void);
372CFStringCreateWithPascalString (
CFAllocatorRef alloc, ConstStr255Param pStr,
373 CFStringEncoding encoding);
377 ConstStr255Param pStr, CFStringEncoding encoding,
381CFStringGetPascalString (CFStringRef theString, StringPtr buffer,
382 CFIndex bufferSize, CFStringEncoding encoding);
384CF_EXPORT ConstStringPtr
385CFStringGetPascalStringPtr (CFStringRef theString, CFStringEncoding encoding);
394#if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST)
397 kCFStringNormalizationFormD = 0,
398 kCFStringNormalizationFormKD = 1,
399 kCFStringNormalizationFormC = 2,
400 kCFStringNormalizationFormKC = 3
401} CFStringNormalizationForm;
404#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
405CF_EXPORT
const CFStringRef kCFStringTransformStripCombiningMarks;
406CF_EXPORT
const CFStringRef kCFStringTransformToLatin;
407CF_EXPORT
const CFStringRef kCFStringTransformFullwidthHalfwidth;
408CF_EXPORT
const CFStringRef kCFStringTransformLatinKatakana;
409CF_EXPORT
const CFStringRef kCFStringTransformLatinHiragana;
410CF_EXPORT
const CFStringRef kCFStringTransformHiraganaKatakana;
411CF_EXPORT
const CFStringRef kCFStringTransformMandarinLatin;
412CF_EXPORT
const CFStringRef kCFStringTransformLatinHangul;
413CF_EXPORT
const CFStringRef kCFStringTransformLatinArabic;
414CF_EXPORT
const CFStringRef kCFStringTransformLatinHebrew;
415CF_EXPORT
const CFStringRef kCFStringTransformLatinThai;
416CF_EXPORT
const CFStringRef kCFStringTransformLatinCyrillic;
417CF_EXPORT
const CFStringRef kCFStringTransformLatinGreek;
418CF_EXPORT
const CFStringRef kCFStringTransformToXMLHex;
419CF_EXPORT
const CFStringRef kCFStringTransformToUnicodeName;
421#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
422CF_EXPORT
const CFStringRef kCFStringTransformStripDiacritics;
426CFStringAppend (CFMutableStringRef theString, CFStringRef appendedString);
429CFStringAppendCharacters (CFMutableStringRef theString,
430 const UniChar *chars,
CFIndex numChars);
433CFStringAppendCString (CFMutableStringRef theString,
const char *cStr,
434 CFStringEncoding encoding);
437CFStringAppendFormat (CFMutableStringRef theString,
438 CFDictionaryRef formatOptions, CFStringRef format, ...);
441CFStringAppendFormatAndArguments (CFMutableStringRef theString,
442 CFDictionaryRef formatOptions, CFStringRef format, va_list arguments);
445CFStringAppendPascalString (CFMutableStringRef theString,
446 ConstStr255Param pStr, CFStringEncoding encoding);
449CFStringCapitalize (CFMutableStringRef theString, CFLocaleRef locale);
451CF_EXPORT CFMutableStringRef
454CF_EXPORT CFMutableStringRef
456 CFStringRef theString);
458CF_EXPORT CFMutableStringRef
459CFStringCreateMutableWithExternalCharactersNoCopy (
CFAllocatorRef alloc,
464CFStringDelete (CFMutableStringRef theString,
CFRange range);
467CFStringInsert (CFMutableStringRef str,
CFIndex idx, CFStringRef insertedStr);
470CFStringLowercase (CFMutableStringRef theString, CFLocaleRef locale);
473CFStringPad (CFMutableStringRef theString, CFStringRef padString,
477CFStringReplace (CFMutableStringRef theString,
CFRange range,
478 CFStringRef replacement);
481CFStringReplaceAll (CFMutableStringRef theString, CFStringRef replacement);
484CFStringSetExternalCharactersNoCopy (CFMutableStringRef theString,
488CFStringTrim (CFMutableStringRef theString, CFStringRef trimString);
491CFStringTrimWhitespace (CFMutableStringRef theString);
494CFStringUppercase (CFMutableStringRef theString, CFLocaleRef locale);
496#if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST)
498CFStringFindAndReplace (CFMutableStringRef theString,
499 CFStringRef stringToFind, CFStringRef replacementString,
503CFStringNormalize (CFMutableStringRef theString,
504 CFStringNormalizationForm theForm);
507#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST)
509CFStringTransform (CFMutableStringRef
string,
CFRange *range,
510 CFStringRef transform, Boolean reverse);
513#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
515CFStringFold (CFMutableStringRef theString,
CFOptionFlags theFlags,
516 CFLocaleRef theLocale);
526#define __kCFStringInlineBufferLength 64
529 UniChar buffer[__kCFStringInlineBufferLength];
530 CFStringRef theString;
531 const UniChar *directBuffer;
542 buf->theString = str;
543 buf->rangeToBuffer = range;
544 buf->directBuffer = CFStringGetCharactersPtr (str);
545 buf->bufferedRangeStart = 0;
546 buf->bufferedRangeEnd = 0;
552 if (buf->directBuffer)
554 if (idx < 0 || idx >= buf->rangeToBuffer.
length)
556 return buf->directBuffer[idx + buf->rangeToBuffer.
location];
558 else if (idx >= buf->bufferedRangeEnd || idx < buf->bufferedRangeStart)
562 if (idx < 0 || idx >= buf->rangeToBuffer.
length)
566 buf->bufferedRangeStart = idx - 16;
567 if (buf->bufferedRangeStart < 0)
568 buf->bufferedRangeStart = 0;
569 buf->bufferedRangeEnd =
570 buf->bufferedRangeStart + __kCFStringInlineBufferLength;
571 if (buf->bufferedRangeEnd > buf->rangeToBuffer.
length)
572 buf->bufferedRangeEnd = buf->rangeToBuffer.
length;
575 buf->bufferedRangeEnd - buf->bufferedRangeStart);
577 CFStringGetCharacters (buf->theString, range, buf->buffer);
580 return buf->buffer[(idx - buf->bufferedRangeStart)];
CFIndex location
Definition CFBase.h:173
CFIndex length
Definition CFBase.h:175
unsigned long CFOptionFlags
Definition CFBase.h:163
signed long CFIndex
Definition CFBase.h:165
CFRange CFRangeMake(CFIndex location, CFIndex length)
Definition CFBase.h:185
const struct __CFAllocator * CFAllocatorRef
A reference to a CFAllocator object.
Definition CFBase.h:301
const struct __CFArray * CFArrayRef
Reference to an immutable array object.
Definition CFArray.h:37
Definition CFString.h:528