+#include <bindings.dsl.h>
+#include <CoreFoundation/CFString.h>
+
+module Bindings.CoreFoundation.CFString where
+#strict_import
+import Bindings.CoreFoundation.CFBase
+import Bindings.CoreFoundation.CFArray
+import Bindings.CoreFoundation.CFData
+import Bindings.CoreFoundation.CFDictionary
+import Bindings.CoreFoundation.CFCharacterSet
+import Bindings.CoreFoundation.CFLocale
+
+#integral_t CFStringEncoding
+#num kCFStringEncodingInvalidId
+#num kCFStringEncodingMacRoman
+#num kCFStringEncodingWindowsLatin1
+#num kCFStringEncodingISOLatin1
+#num kCFStringEncodingNextStepLatin
+#num kCFStringEncodingASCII
+#num kCFStringEncodingUnicode
+#num kCFStringEncodingUTF8
+#num kCFStringEncodingNonLossyASCII
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
+# num kCFStringEncodingUTF16
+# num kCFStringEncodingUTF16BE
+# num kCFStringEncodingUTF16LE
+# num kCFStringEncodingUTF32
+# num kCFStringEncodingUTF32BE
+# num kCFStringEncodingUTF32LE
+#endif
+#synonym_t CFStringBuiltInEncodings, <CFStringEncoding>
+
+#ccall CFStringGetTypeID, IO <CFTypeID>
+
+-- NOTE: There's no way to import CFSTR(cStr) macro as it mentions
+-- builtin functions.
+
+#ccall CFStringCreateWithPascalString, <CFAllocatorRef> -> <ConstStr255Param> -> <CFStringEncoding> -> IO <CFStringRef>
+#ccall CFStringCreateWithCString , <CFAllocatorRef> -> Ptr CChar -> <CFStringEncoding> -> IO <CFStringRef>
+#ccall CFStringCreateWithBytes , <CFAllocatorRef> -> Ptr <UInt8> -> <CFIndex> -> <CFStringEncoding> -> <Boolean> -> IO <CFStringRef>
+#ccall CFStringCreateWithCharacters , <CFAllocatorRef> -> Ptr <UniChar> -> <CFIndex> -> IO <CFStringRef>
+
+#ccall CFStringCreateWithPascalStringNoCopy, <CFAllocatorRef> -> <ConstStr255Param> -> <CFStringEncoding> -> <CFAllocatorRef> -> IO <CFStringRef>
+#ccall CFStringCreateWithCStringNoCopy , <CFAllocatorRef> -> Ptr CChar -> <CFStringEncoding> -> <CFAllocatorRef> -> IO <CFStringRef>
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
+# ccall CFStringCreateWithBytesNoCopy, <CFAllocatorRef> -> Ptr <UInt8> -> <CFIndex> -> <CFStringEncoding> -> <Boolean> -> <CFAllocatorRef> -> IO <CFStringRef>
+#endif
+
+#cinline CFStringCreateWithSubstring, <CFAllocatorRef> -> <CFStringRef> -> Ptr <CFRange> -> IO <CFStringRef>
+#ccall CFStringCreateCopy , <CFAllocatorRef> -> <CFStringRef> -> IO <CFStringRef>
+-- NOTE: CFStringCreateWithFormat takes varargs.
+-- NOTE: CFStringCreateWithFormatAndArguments takes va_list.
+#ccall CFStringCreateMutable , <CFAllocatorRef> -> <CFIndex> -> IO <CFMutableStringRef>
+#ccall CFStringCreateMutableCopy , <CFAllocatorRef> -> <CFIndex> -> <CFStringRef> -> IO <CFMutableStringRef>
+#ccall CFStringCreateMutableWithExternalCharactersNoCopy, <CFAllocatorRef> -> Ptr <UniChar> -> <CFIndex> -> <CFIndex> -> <CFAllocatorRef> -> IO <CFMutableStringRef>
+#ccall CFStringGetLength , <CFStringRef> -> IO <CFIndex>
+#ccall CFStringGetCharacterAtIndex, <CFStringRef> -> <CFIndex> -> IO <UniChar>
+#cinline CFStringGetCharacters , <CFStringRef> -> Ptr <CFRange> -> Ptr <UniChar> -> IO ()
+#ccall CFStringGetPascalString , <CFStringRef> -> <StringPtr> -> <CFIndex> -> <CFStringEncoding> -> IO <Boolean>
+#ccall CFStringGetCString , <CFStringRef> -> Ptr CChar -> <CFIndex> -> <CFStringEncoding> -> IO <Boolean>
+#ccall CFStringGetPascalStringPtr , <CFStringRef> -> <CFStringEncoding> -> IO <ConstStringPtr>
+#ccall CFStringGetCStringPtr , <CFStringRef> -> <CFStringEncoding> -> IO (Ptr CChar)
+#ccall CFStringGetCharactersPtr , <CFStringRef> -> IO (Ptr <UniChar>)
+#cinline CFStringGetBytes , <CFStringRef> -> Ptr <CFRange> -> <CFStringEncoding> -> <UInt8> -> <Boolean> -> Ptr <UInt8> -> <CFIndex> -> Ptr <CFIndex> -> IO <CFIndex>
+#ccall CFStringCreateFromExternalRepresentation, <CFAllocatorRef> -> <CFDataRef> -> <CFStringEncoding> -> IO <CFStringRef>
+#ccall CFStringCreateExternalRepresentation , <CFAllocatorRef> -> <CFStringRef> -> <CFStringEncoding> -> <UInt8> -> IO <CFDataRef>
+#ccall CFStringGetSmallestEncoding , <CFStringRef> -> IO <CFStringEncoding>
+#ccall CFStringGetFastestEncoding , <CFStringRef> -> IO <CFStringEncoding>
+#ccall CFStringGetSystemEncoding , IO <CFStringEncoding>
+#ccall CFStringGetMaximumSizeForEncoding , <CFIndex> -> <CFStringEncoding> -> IO <CFIndex>
+#ccall CFStringGetFileSystemRepresentation , <CFStringRef> -> Ptr CChar -> <CFIndex> -> IO <Boolean>
+#ccall CFStringGetMaximumSizeOfFileSystemRepresentation, <CFStringRef> -> IO <CFIndex>
+#ccall CFStringCreateWithFileSystemRepresentation , <CFAllocatorRef> -> Ptr CChar -> IO <CFStringRef>
+
+#num kCFCompareCaseInsensitive
+#num kCFCompareBackwards
+#num kCFCompareAnchored
+#num kCFCompareNonliteral
+#num kCFCompareLocalized
+#num kCFCompareNumerically
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+# num kCFCompareDiacriticInsensitive
+# num kCFCompareWidthInsensitive
+# num kCFCompareForcedOrdering
+#endif
+#synonym_t CFStringCompareFlags, <CFOptionFlags>
+
+#if !defined(__WIN32__)
+# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+# cinline CFStringCompareWithOptionsAndLocale, <CFStringRef> -> <CFStringRef> -> Ptr <CFRange> -> <CFOptionFlags> -> <CFLocaleRef> -> IO <CFComparisonResult>
+# endif
+#endif
+
+#cinline CFStringCompareWithOptions, <CFStringRef> -> <CFStringRef> -> Ptr <CFRange> -> <CFOptionFlags> -> IO <CFComparisonResult>
+#ccall CFStringCompare , <CFStringRef> -> <CFStringRef> -> <CFOptionFlags> -> IO <CFComparisonResult>
+
+#if !defined(__WIN32__)
+# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+# cinline CFStringFindWithOptionsAndLocale, <CFStringRef> -> <CFStringRef> -> Ptr <CFRange> -> <CFOptionFlags> -> <CFLocaleRef> -> Ptr <CFRange> -> IO <Boolean>
+# endif
+#endif
+
+#cinline CFStringFindWithOptions , <CFStringRef> -> <CFStringRef> -> Ptr <CFRange> -> <CFOptionFlags> -> Ptr <CFRange> -> IO <Boolean>
+#cinline CFStringCreateArrayWithFindResults, <CFAllocatorRef> -> <CFStringRef> -> <CFStringRef> -> Ptr <CFRange> -> <CFOptionFlags> -> IO <CFArrayRef>
+#cinline CFStringFind , <CFStringRef> -> <CFStringRef> -> <CFOptionFlags> -> Ptr <CFRange> -> IO ()
+#ccall CFStringHasPrefix, <CFStringRef> -> <CFStringRef> -> IO <Boolean>
+#ccall CFStringHasSuffix, <CFStringRef> -> <CFStringRef> -> IO <Boolean>
+
+#if MAC_OS_X_VERSION_10_2 <= MAC_OS_X_VERSION_MAX_ALLOWED
+# cinline CFStringGetRangeOfComposedCharactersAtIndex, <CFStringRef> -> <CFIndex> -> Ptr <CFRange> -> IO ()
+# cinline CFStringFindCharacterFromSet , <CFStringRef> -> <CFCharacterSetRef> -> Ptr <CFRange> -> <CFOptionFlags> -> Ptr <CFRange> -> IO <Boolean>
+#endif
+
+#cinline CFStringGetLineBounds , <CFStringRef> -> Ptr <CFRange> -> Ptr <CFIndex> -> Ptr <CFIndex> -> Ptr <CFIndex> -> IO ()
+#cinline CFStringGetParagraphBounds, <CFStringRef> -> Ptr <CFRange> -> Ptr <CFIndex> -> Ptr <CFIndex> -> Ptr <CFIndex> -> IO ()
+#ccall CFStringCreateByCombiningStrings , <CFAllocatorRef> -> <CFArrayRef> -> <CFStringRef> -> IO <CFStringRef>
+#ccall CFStringCreateArrayBySeparatingStrings, <CFAllocatorRef> -> <CFStringRef> -> <CFStringRef> -> IO <CFArrayRef>
+#ccall CFStringGetIntValue , <CFStringRef> -> IO <SInt32>
+#ccall CFStringGetDoubleValue , <CFStringRef> -> IO CDouble
+#ccall CFStringAppend , <CFMutableStringRef> -> <CFStringRef> -> IO ()
+#ccall CFStringAppendCharacters , <CFMutableStringRef> -> Ptr <UniChar> -> <CFIndex> -> IO ()
+#ccall CFStringAppendPascalString, <CFMutableStringRef> -> <ConstStr255Param> -> <CFStringEncoding> -> IO ()
+#ccall CFStringAppendCString , <CFMutableStringRef> -> Ptr CChar -> <CFStringEncoding> -> IO ()
+-- NOTE: CFStringAppendFormat takes varargs.
+-- NOTE: CFStringAppendFormatAndArguments takes va_list.
+#ccall CFStringInsert , <CFMutableStringRef> -> <CFIndex> -> <CFStringRef> -> IO ()
+#cinline CFStringDelete , <CFMutableStringRef> -> Ptr <CFRange> -> IO ()
+#cinline CFStringReplace , <CFMutableStringRef> -> Ptr <CFRange> -> <CFStringRef> -> IO ()
+#ccall CFStringReplaceAll , <CFMutableStringRef> -> <CFStringRef> -> IO ()
+
+#if MAC_OS_X_VERSION_10_2 <= MAC_OS_X_VERSION_MAX_ALLOWED
+# cinline CFStringFindAndReplace , <CFMutableStringRef> -> <CFStringRef> -> <CFStringRef> -> Ptr <CFRange> -> <CFOptionFlags> -> IO <CFIndex>
+#endif
+
+#ccall CFStringSetExternalCharactersNoCopy, <CFMutableStringRef> -> Ptr <UniChar> -> <CFIndex> -> <CFIndex> -> IO ()
+#ccall CFStringPad , <CFMutableStringRef> -> <CFStringRef> -> <CFIndex> -> <CFIndex> -> IO ()
+#ccall CFStringTrim , <CFMutableStringRef> -> <CFStringRef> -> IO ()
+#ccall CFStringTrimWhitespace, <CFMutableStringRef> -> IO ()
+
+#ccall CFStringLowercase , <CFMutableStringRef> -> <CFLocaleRef> -> IO ()
+#ccall CFStringUppercase , <CFMutableStringRef> -> <CFLocaleRef> -> IO ()
+#ccall CFStringCapitalize, <CFMutableStringRef> -> <CFLocaleRef> -> IO ()
+
+#if MAC_OS_X_VERSION_10_2 <= MAC_OS_X_VERSION_MAX_ALLOWED
+# num kCFStringNormalizationFormD
+# num kCFStringNormalizationFormKD
+# num kCFStringNormalizationFormC
+# num kCFStringNormalizationFormKC
+# synonym_t CFStringNormalizationForm , <CFIndex>
+# ccall CFStringNormalize , <CFMutableStringRef> -> <CFStringNormalizationForm> -> IO ()
+#endif
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
+# ccall CFStringFold, <CFMutableStringRef> -> <CFOptionFlags> -> <CFLocaleRef> -> IO ()
+#endif
+
+#ccall CFStringTransform, <CFMutableStringRef> -> Ptr <CFRange> -> <CFStringRef> -> <Boolean> -> IO <Boolean>
+