X-Git-Url: https://git.saurik.com/apple/cf.git/blobdiff_plain/47a9ab1f151d80a00a045f81937ddac81c51a463..bd5b749cf7786ae858ab372fc8f64179736c6515:/StringEncodings.subproj/CFStringEncodingConverterExt.h diff --git a/StringEncodings.subproj/CFStringEncodingConverterExt.h b/StringEncodings.subproj/CFStringEncodingConverterExt.h deleted file mode 100644 index 6f6a18f..0000000 --- a/StringEncodings.subproj/CFStringEncodingConverterExt.h +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright (c) 2005 Apple Computer, Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ - * - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apple Public Source License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this - * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and - * limitations under the License. - * - * @APPLE_LICENSE_HEADER_END@ - */ -/* CFStringEncodingConverterExt.h - Copyright (c) 1998-2005, Apple, Inc. All rights reserved. -*/ - -#ifndef __CFSTRINGENCODINGCONVERETEREXT_H__ -#define __CFSTRINGENCODINGCONVERETEREXT_H__ 1 - -#include - -#if defined(__cplusplus) -extern "C" { -#endif - -#define MAX_DECOMPOSED_LENGTH (10) - -enum { - kCFStringEncodingConverterStandard = 0, - kCFStringEncodingConverterCheapEightBit = 1, - kCFStringEncodingConverterStandardEightBit = 2, - kCFStringEncodingConverterCheapMultiByte = 3, - kCFStringEncodingConverterPlatformSpecific = 4 // Other fields are ignored -}; - -/* kCFStringEncodingConverterStandard */ -typedef UInt32 (*CFStringEncodingToBytesProc)(UInt32 flags, const UniChar *characters, UInt32 numChars, UInt8 *bytes, UInt32 maxByteLen, UInt32 *usedByteLen); -typedef UInt32 (*CFStringEncodingToUnicodeProc)(UInt32 flags, const UInt8 *bytes, UInt32 numBytes, UniChar *characters, UInt32 maxCharLen, UInt32 *usedCharLen); -/* kCFStringEncodingConverterCheapEightBit */ -typedef Boolean (*CFStringEncodingCheapEightBitToBytesProc)(UInt32 flags, UniChar character, UInt8 *byte); -typedef Boolean (*CFStringEncodingCheapEightBitToUnicodeProc)(UInt32 flags, UInt8 byte, UniChar *character); -/* kCFStringEncodingConverterStandardEightBit */ -typedef UInt16 (*CFStringEncodingStandardEightBitToBytesProc)(UInt32 flags, const UniChar *characters, UInt32 numChars, UInt8 *byte); -typedef UInt16 (*CFStringEncodingStandardEightBitToUnicodeProc)(UInt32 flags, UInt8 byte, UniChar *characters); -/* kCFStringEncodingConverterCheapMultiByte */ -typedef UInt16 (*CFStringEncodingCheapMultiByteToBytesProc)(UInt32 flags, UniChar character, UInt8 *bytes); -typedef UInt16 (*CFStringEncodingCheapMultiByteToUnicodeProc)(UInt32 flags, const UInt8 *bytes, UInt32 numBytes, UniChar *character); - -typedef UInt32 (*CFStringEncodingToBytesLenProc)(UInt32 flags, const UniChar *characters, UInt32 numChars); -typedef UInt32 (*CFStringEncodingToUnicodeLenProc)(UInt32 flags, const UInt8 *bytes, UInt32 numBytes); - -typedef UInt32 (*CFStringEncodingToBytesPrecomposeProc)(UInt32 flags, const UniChar *character, UInt32 numChars, UInt8 *bytes, UInt32 maxByteLen, UInt32 *usedByteLen); -typedef Boolean (*CFStringEncodingIsValidCombiningCharacterProc)(UniChar character); - -typedef struct { - void *toBytes; - void *toUnicode; - UInt16 maxBytesPerChar; - UInt16 maxDecomposedCharLen; - UInt8 encodingClass; - UInt32 :24; - CFStringEncodingToBytesLenProc toBytesLen; - CFStringEncodingToUnicodeLenProc toUnicodeLen; - CFStringEncodingToBytesFallbackProc toBytesFallback; - CFStringEncodingToUnicodeFallbackProc toUnicodeFallback; - CFStringEncodingToBytesPrecomposeProc toBytesPrecompose; - CFStringEncodingIsValidCombiningCharacterProc isValidCombiningChar; -} CFStringEncodingConverter; - - -extern const CFStringEncodingConverter *CFStringEncodingGetConverter(UInt32 encoding); - -enum { - kCFStringEncodingGetConverterSelector = 0, - kCFStringEncodingIsDecomposableCharacterSelector = 1, - kCFStringEncodingDecomposeCharacterSelector = 2, - kCFStringEncodingIsValidLatin1CombiningCharacterSelector = 3, - kCFStringEncodingPrecomposeLatin1CharacterSelector = 4 -}; - -extern const void *CFStringEncodingGetAddressForSelector(UInt32 selector); - -#define BOOTSTRAPFUNC_NAME CFStringEncodingBootstrap -typedef const CFStringEncodingConverter* (*CFStringEncodingBootstrapProc)(UInt32 encoding, const void *getSelector); - -extern UInt32 CFStringEncodingGetScriptCodeForEncoding(CFStringEncoding encoding); - -/* Latin precomposition */ -/* This function does not precompose recursively nor to U+01E0 and U+01E1. -*/ -extern Boolean CFStringEncodingIsValidCombiningCharacterForLatin1(UniChar character); -extern UniChar CFStringEncodingPrecomposeLatinCharacter(const UniChar *character, UInt32 numChars, UInt32 *usedChars); - -/* Convenience functions for converter development */ -typedef struct _CFStringEncodingUnicodeTo8BitCharMap { - UniChar _u; - UInt8 _c; - UInt8 :8; -} CFStringEncodingUnicodeTo8BitCharMap; - -/* Binary searches CFStringEncodingUnicodeTo8BitCharMap */ -CF_INLINE Boolean CFStringEncodingUnicodeTo8BitEncoding(const CFStringEncodingUnicodeTo8BitCharMap *theTable, UInt32 numElem, UniChar character, UInt8 *ch) { - const CFStringEncodingUnicodeTo8BitCharMap *p, *q, *divider; - - if ((character < theTable[0]._u) || (character > theTable[numElem-1]._u)) { - return 0; - } - p = theTable; - q = p + (numElem-1); - while (p <= q) { - divider = p + ((q - p) >> 1); /* divide by 2 */ - if (character < divider->_u) { q = divider - 1; } - else if (character > divider->_u) { p = divider + 1; } - else { *ch = divider->_c; return 1; } - } - return 0; -} - - -#if defined(__cplusplus) -} -#endif - -#endif /* __CFSTRINGENCODINGCONVERETEREXT_H__ */