1/* 2 * Copyright (c) 2014 Apple Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24/* CFCharacterSetPriv.h 25 Copyright (c) 1998-2013, Apple Inc. All rights reserved. 26*/ 27 28#if !defined(__COREFOUNDATION_CFCHARACTERSETPRIV__) 29#define __COREFOUNDATION_CFCHARACTERSETPRIV__ 1 30 31#include <CoreFoundation/CFCharacterSet.h> 32 33CF_EXTERN_C_BEGIN 34 35/*! 36 @function CFCharacterSetIsSurrogateHighCharacter 37 Reports whether or not the character is a high surrogate. 38 @param character The character to be checked. 39 @result true, if character is a high surrogate, otherwise false. 40*/ 41CF_INLINE Boolean CFCharacterSetIsSurrogateHighCharacter(UniChar character) { 42 return ((character >= 0xD800UL) && (character <= 0xDBFFUL) ? true : false); 43} 44 45/*! 46 @function CFCharacterSetIsSurrogateLowCharacter 47 Reports whether or not the character is a low surrogate. 48 @param character The character to be checked. 49 @result true, if character is a low surrogate, otherwise false. 50*/ 51CF_INLINE Boolean CFCharacterSetIsSurrogateLowCharacter(UniChar character) { 52 return ((character >= 0xDC00UL) && (character <= 0xDFFFUL) ? true : false); 53} 54 55/*! 56 @function CFCharacterSetGetLongCharacterForSurrogatePair 57 Returns the UTF-32 value corresponding to the surrogate pair passed in. 58 @param surrogateHigh The high surrogate character. If this parameter 59 is not a valid high surrogate character, the behavior is undefined. 60 @param surrogateLow The low surrogate character. If this parameter 61 is not a valid low surrogate character, the behavior is undefined. 62 @result The UTF-32 value for the surrogate pair. 63*/ 64CF_INLINE UTF32Char CFCharacterSetGetLongCharacterForSurrogatePair(UniChar surrogateHigh, UniChar surrogateLow) { 65 return (UTF32Char)(((surrogateHigh - 0xD800UL) << 10) + (surrogateLow - 0xDC00UL) + 0x0010000UL); 66} 67 68/* Check to see if the character represented by the surrogate pair surrogateHigh & surrogateLow is in the chraracter set */ 69CF_EXPORT Boolean CFCharacterSetIsSurrogatePairMember(CFCharacterSetRef theSet, UniChar surrogateHigh, UniChar surrogateLow) ; 70 71/* Keyed-coding support 72*/ 73typedef CF_ENUM(CFIndex, CFCharacterSetKeyedCodingType) { 74 kCFCharacterSetKeyedCodingTypeBitmap = 1, 75 kCFCharacterSetKeyedCodingTypeBuiltin = 2, 76 kCFCharacterSetKeyedCodingTypeRange = 3, 77 kCFCharacterSetKeyedCodingTypeString = 4, 78 kCFCharacterSetKeyedCodingTypeBuiltinAndBitmap = 5 79}; 80 81CF_EXPORT CFCharacterSetKeyedCodingType _CFCharacterSetGetKeyedCodingType(CFCharacterSetRef cset); 82CF_EXPORT CFCharacterSetPredefinedSet _CFCharacterSetGetKeyedCodingBuiltinType(CFCharacterSetRef cset); 83CF_EXPORT CFRange _CFCharacterSetGetKeyedCodingRange(CFCharacterSetRef cset); 84CF_EXPORT CFStringRef _CFCharacterSetCreateKeyedCodingString(CFCharacterSetRef cset); 85CF_EXPORT bool _CFCharacterSetIsInverted(CFCharacterSetRef cset); 86CF_EXPORT void _CFCharacterSetSetIsInverted(CFCharacterSetRef cset, bool flag); 87 88CF_EXTERN_C_END 89 90#endif /* ! __COREFOUNDATION_CFCHARACTERSETPRIV__ */ 91 92