]> git.saurik.com Git - apple/cf.git/blobdiff - CFCharacterSet.h
CF-476.10.tar.gz
[apple/cf.git] / CFCharacterSet.h
diff --git a/CFCharacterSet.h b/CFCharacterSet.h
new file mode 100644 (file)
index 0000000..5b38c50
--- /dev/null
@@ -0,0 +1,415 @@
+/*
+ * Copyright (c) 2008 Apple 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@
+ */
+/*     CFCharacterSet.h
+       Copyright (c) 1999-2007, Apple Inc. All rights reserved.
+*/
+
+/*!
+       @header CFCharacterSet
+        CFCharacterSet represents a set, or a bag, of Unicode characters.
+        The API consists of 3 groups:
+        1) creation/manipulation of CFCharacterSet instances,
+        2) query of a single Unicode character membership,
+        and 3) bitmap representation related (reading/writing).
+        Conceptually, CFCharacterSet is a 136K byte bitmap array of
+        which each bit represents a Unicode code point.  It could
+        contain the Unicode characters in ISO 10646 Basic Multilingual
+        Plane (BMP) and characters in Plane 1 through Plane 16
+        accessible via surrogate paris in the Unicode Transformation
+        Format, 16-bit encoding form (UTF-16).  In other words, it can
+        store values from 0x00000 to 0x10FFFF in the Unicode
+        Transformation Format, 32-bit encoding form (UTF-32).  However,
+        in general, how CFCharacterSet stores the information is an
+        implementation detail.  Note even CFData used for the external
+        bitmap representation rarely has 136K byte.  For detailed
+        discussion of the external bitmap representation, refer to the
+        comments for CFCharacterSetCreateWithBitmapRepresentation below.
+        Note that the existance of non-BMP characters in a character set
+        does not imply the membership of the corresponding surrogate
+        characters.  For example, a character set with U+10000 does not
+        match with U+D800.
+*/
+
+#if !defined(__COREFOUNDATION_CFCHARACTERSET__)
+#define __COREFOUNDATION_CFCHARACTERSET__ 1
+
+#include <CoreFoundation/CFBase.h>
+#include <CoreFoundation/CFData.h>
+
+CF_EXTERN_C_BEGIN
+
+/*!
+       @typedef CFCharacterSetRef
+       This is the type of a reference to immutable CFCharacterSets.
+*/
+typedef const struct __CFCharacterSet * CFCharacterSetRef;
+
+/*!
+       @typedef CFMutableCharacterSetRef
+       This is the type of a reference to mutable CFMutableCharacterSets.
+*/
+typedef struct __CFCharacterSet * CFMutableCharacterSetRef;
+
+/*!
+       @typedef CFCharacterSetPredefinedSet
+        Type of the predefined CFCharacterSet selector values.
+*/
+   
+enum {
+    kCFCharacterSetControl = 1, /* Control character set (Unicode General Category Cc and Cf) */
+    kCFCharacterSetWhitespace, /* Whitespace character set (Unicode General Category Zs and U0009 CHARACTER TABULATION) */
+    kCFCharacterSetWhitespaceAndNewline,  /* Whitespace and Newline character set (Unicode General Category Z*, U000A ~ U000D, and U0085) */
+    kCFCharacterSetDecimalDigit, /* Decimal digit character set */
+    kCFCharacterSetLetter, /* Letter character set (Unicode General Category L* & M*) */
+    kCFCharacterSetLowercaseLetter, /* Lowercase character set (Unicode General Category Ll) */
+    kCFCharacterSetUppercaseLetter, /* Uppercase character set (Unicode General Category Lu and Lt) */
+    kCFCharacterSetNonBase, /* Non-base character set (Unicode General Category M*) */
+    kCFCharacterSetDecomposable, /* Canonically decomposable character set */
+    kCFCharacterSetAlphaNumeric, /* Alpha Numeric character set (Unicode General Category L*, M*, & N*) */
+    kCFCharacterSetPunctuation, /* Punctuation character set (Unicode General Category P*) */
+#if MAC_OS_X_VERSION_10_2 <= MAC_OS_X_VERSION_MAX_ALLOWED
+    kCFCharacterSetCapitalizedLetter = 13, /* Titlecase character set (Unicode General Category Lt) */
+#endif
+#if MAC_OS_X_VERSION_10_3 <= MAC_OS_X_VERSION_MAX_ALLOWED
+    kCFCharacterSetSymbol = 14, /* Symbol character set (Unicode General Category S*) */
+#endif
+#if MAC_OS_X_VERSION_10_5 <= MAC_OS_X_VERSION_MAX_ALLOWED
+    kCFCharacterSetNewline = 15, /* Newline character set (U000A ~ U000D, U0085, U2028, and U2029) */
+#endif
+    kCFCharacterSetIllegal = 12/* Illegal character set */
+};
+typedef CFIndex CFCharacterSetPredefinedSet;
+
+/*!
+       @function CFCharacterSetGetTypeID
+       Returns the type identifier of all CFCharacterSet instances.
+*/
+CF_EXPORT
+CFTypeID CFCharacterSetGetTypeID(void);
+
+/*!
+       @function CFCharacterSetGetPredefined
+       Returns a predefined CFCharacterSet instance.
+       @param theSetIdentifier The CFCharacterSetPredefinedSet selector
+                which specifies the predefined character set.  If the
+                value is not in CFCharacterSetPredefinedSet, the behavior
+                is undefined.
+       @result A reference to the predefined immutable CFCharacterSet.
+                This instance is owned by CF.
+*/
+CF_EXPORT
+CFCharacterSetRef CFCharacterSetGetPredefined(CFCharacterSetPredefinedSet theSetIdentifier);
+
+/*!
+       @function CFCharacterSetCreateWithCharactersInRange
+       Creates a new immutable character set with the values from the given range.
+       @param alloc The CFAllocator which should be used to allocate
+               memory for the array and its storage for values. This
+               parameter may be NULL in which case the current default
+               CFAllocator is used. If this reference is not a valid
+               CFAllocator, the behavior is undefined.
+       @param theRange The CFRange which should be used to specify the
+                Unicode range the character set is filled with.  It
+                accepts the range in 32-bit in the UTF-32 format.  The
+                valid character point range is from 0x00000 to 0x10FFFF.
+                If the range is outside of the valid Unicode character
+                point, the behavior is undefined.
+       @result A reference to the new immutable CFCharacterSet.
+*/
+CF_EXPORT
+CFCharacterSetRef CFCharacterSetCreateWithCharactersInRange(CFAllocatorRef alloc, CFRange theRange);
+
+/*!
+       @function CFCharacterSetCreateWithCharactersInString
+       Creates a new immutable character set with the values in the given string.
+       @param alloc The CFAllocator which should be used to allocate
+               memory for the array and its storage for values. This
+               parameter may be NULL in which case the current default
+               CFAllocator is used. If this reference is not a valid
+               CFAllocator, the behavior is undefined.
+       @param theString The CFString which should be used to specify
+                the Unicode characters the character set is filled with.
+                If this parameter is not a valid CFString, the behavior
+                is undefined.
+        @result A reference to the new immutable CFCharacterSet.
+*/
+CF_EXPORT
+CFCharacterSetRef CFCharacterSetCreateWithCharactersInString(CFAllocatorRef alloc, CFStringRef theString);
+
+/*!
+       @function CFCharacterSetCreateWithBitmapRepresentation
+       Creates a new immutable character set with the bitmap representtion in the given data.
+       @param alloc The CFAllocator which should be used to allocate
+               memory for the array and its storage for values. This
+               parameter may be NULL in which case the current default
+               CFAllocator is used. If this reference is not a valid
+               CFAllocator, the behavior is undefined.
+       @param theData The CFData which should be used to specify the
+                bitmap representation of the Unicode character points
+                the character set is filled with.  The bitmap
+                representation could contain all the Unicode character
+                range starting from BMP to Plane 16.  The first 8192 bytes
+                of the data represent the BMP range.  The BMP range 8192
+                bytes can be followed by zero to sixteen 8192 byte
+                bitmaps, each one with the plane index byte prepended.
+                For example, the bitmap representing the BMP and Plane 2
+                has the size of 16385 bytes (8192 bytes for BMP, 1 byte
+                index + 8192 bytes bitmap for Plane 2).  The plane index
+                byte, in this case, contains the integer value two.  If
+                this parameter is not a valid CFData or it contains a
+                Plane index byte outside of the valid Plane range
+                (1 to 16), the behavior is undefined.
+        @result A reference to the new immutable CFCharacterSet.
+*/
+CF_EXPORT
+CFCharacterSetRef CFCharacterSetCreateWithBitmapRepresentation(CFAllocatorRef alloc, CFDataRef theData);
+
+#if MAC_OS_X_VERSION_10_2 <= MAC_OS_X_VERSION_MAX_ALLOWED
+/*!
+       @function CFCharacterSetCreateInvertedSet
+       Creates a new immutable character set that is the invert of the specified character set.
+       @param alloc The CFAllocator which should be used to allocate
+                       memory for the array and its storage for values. This
+                       parameter may be NULL in which case the current default
+                       CFAllocator is used. If this reference is not a valid
+                       CFAllocator, the behavior is undefined.
+       @param theSet The CFCharacterSet which is to be inverted.  If this
+                               parameter is not a valid CFCharacterSet, the behavior is
+                       undefined.
+       @result A reference to the new immutable CFCharacterSet.
+*/
+CF_EXPORT CFCharacterSetRef CFCharacterSetCreateInvertedSet(CFAllocatorRef alloc, CFCharacterSetRef theSet);
+
+/*!
+       @function CFCharacterSetIsSupersetOfSet
+       Reports whether or not the character set is a superset of the character set specified as the second parameter.
+       @param theSet  The character set to be checked for the membership of theOtherSet.
+               If this parameter is not a valid CFCharacterSet, the behavior is undefined.
+       @param theOtherset  The character set to be checked whether or not it is a subset of theSet.
+               If this parameter is not a valid CFCharacterSet, the behavior is undefined.
+*/
+CF_EXPORT Boolean CFCharacterSetIsSupersetOfSet(CFCharacterSetRef theSet, CFCharacterSetRef theOtherset);
+
+/*!
+       @function CFCharacterSetHasMemberInPlane
+       Reports whether or not the character set contains at least one member character in the specified plane.
+       @param theSet  The character set to be checked for the membership.  If this
+               parameter is not a valid CFCharacterSet, the behavior is undefined.
+       @param thePlane  The plane number to be checked for the membership.
+               The valid value range is from 0 to 16.  If the value is outside of the valid
+               plane number range, the behavior is undefined.
+*/
+CF_EXPORT Boolean CFCharacterSetHasMemberInPlane(CFCharacterSetRef theSet, CFIndex thePlane);
+#endif
+
+/*!
+       @function CFCharacterSetCreateMutable
+       Creates a new empty mutable character set.
+       @param allocator The CFAllocator which should be used to allocate
+               memory for the array and its storage for values. This
+               parameter may be NULL in which case the current default
+               CFAllocator is used. If this reference is not a valid
+               CFAllocator, the behavior is undefined.
+       @result A reference to the new mutable CFCharacterSet.
+*/
+CF_EXPORT
+CFMutableCharacterSetRef CFCharacterSetCreateMutable(CFAllocatorRef alloc);
+
+#if MAC_OS_X_VERSION_10_3 <= MAC_OS_X_VERSION_MAX_ALLOWED
+/*!
+       @function CFCharacterSetCreateCopy
+       Creates a new character set with the values from the given character set.  This function tries to compact the backing store where applicable.
+       @param allocator The CFAllocator which should be used to allocate
+               memory for the array and its storage for values. This
+               parameter may be NULL in which case the current default
+               CFAllocator is used. If this reference is not a valid
+               CFAllocator, the behavior is undefined.
+       @param theSet The CFCharacterSet which is to be copied.  If this
+                parameter is not a valid CFCharacterSet, the behavior is
+                undefined.
+       @result A reference to the new CFCharacterSet.
+*/
+CF_EXPORT
+CFCharacterSetRef CFCharacterSetCreateCopy(CFAllocatorRef alloc, CFCharacterSetRef theSet) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER;
+#endif
+
+/*!
+       @function CFCharacterSetCreateMutableCopy
+       Creates a new mutable character set with the values from the given character set.
+       @param allocator The CFAllocator which should be used to allocate
+               memory for the array and its storage for values. This
+               parameter may be NULL in which case the current default
+               CFAllocator is used. If this reference is not a valid
+               CFAllocator, the behavior is undefined.
+       @param theSet The CFCharacterSet which is to be copied.  If this
+                parameter is not a valid CFCharacterSet, the behavior is
+                undefined.
+       @result A reference to the new mutable CFCharacterSet.
+*/
+CF_EXPORT
+CFMutableCharacterSetRef CFCharacterSetCreateMutableCopy(CFAllocatorRef alloc, CFCharacterSetRef theSet);
+
+/*!
+       @function CFCharacterSetIsCharacterMember
+       Reports whether or not the Unicode character is in the character set.
+       @param theSet The character set to be searched. If this parameter
+                is not a valid CFCharacterSet, the behavior is undefined.
+       @param theChar The Unicode character for which to test against the
+                character set.  Note that this function takes 16-bit Unicode
+                character value; hence, it does not support access to the
+                non-BMP planes.  
+        @result true, if the value is in the character set, otherwise false.
+*/
+CF_EXPORT
+Boolean CFCharacterSetIsCharacterMember(CFCharacterSetRef theSet, UniChar theChar);
+
+#if MAC_OS_X_VERSION_10_2 <= MAC_OS_X_VERSION_MAX_ALLOWED
+/*!
+       @function CFCharacterSetIsLongCharacterMember
+       Reports whether or not the UTF-32 character is in the character set.
+       @param theSet The character set to be searched. If this parameter
+                                is not a valid CFCharacterSet, the behavior is undefined.
+       @param theChar The UTF-32 character for which to test against the
+                       character set.
+        @result true, if the value is in the character set, otherwise false.
+*/
+CF_EXPORT Boolean CFCharacterSetIsLongCharacterMember(CFCharacterSetRef theSet, UTF32Char theChar);
+#endif
+
+/*!
+       @function CFCharacterSetCreateBitmapRepresentation
+       Creates a new immutable data with the bitmap representation from the given character set.
+       @param allocator The CFAllocator which should be used to allocate
+               memory for the array and its storage for values. This
+               parameter may be NULL in which case the current default
+               CFAllocator is used. If this reference is not a valid
+               CFAllocator, the behavior is undefined.
+       @param theSet The CFCharacterSet which is to be used create the
+                bitmap representation from.  Refer to the comments for
+                CFCharacterSetCreateWithBitmapRepresentation for the
+                detailed discussion of the bitmap representation format.
+                If this parameter is not a valid CFCharacterSet, the
+                behavior is undefined.
+       @result A reference to the new immutable CFData.
+*/
+CF_EXPORT
+CFDataRef CFCharacterSetCreateBitmapRepresentation(CFAllocatorRef alloc, CFCharacterSetRef theSet);
+
+/*!
+       @function CFCharacterSetAddCharactersInRange
+       Adds the given range to the charaacter set.
+       @param theSet The character set to which the range is to be added.
+                If this parameter is not a valid mutable CFCharacterSet,
+                the behavior is undefined.
+        @param theRange The range to add to the character set.  It accepts
+                the range in 32-bit in the UTF-32 format.  The valid
+                character point range is from 0x00000 to 0x10FFFF.  If the
+                range is outside of the valid Unicode character point,
+                the behavior is undefined.
+*/
+CF_EXPORT
+void CFCharacterSetAddCharactersInRange(CFMutableCharacterSetRef theSet, CFRange theRange);
+
+/*!
+       @function CFCharacterSetRemoveCharactersInRange
+       Removes the given range from the charaacter set.
+       @param theSet The character set from which the range is to be
+                removed.  If this parameter is not a valid mutable
+                CFCharacterSet, the behavior is undefined.
+        @param theRange The range to remove from the character set.
+                It accepts the range in 32-bit in the UTF-32 format.
+                The valid character point range is from 0x00000 to 0x10FFFF.
+                If the range is outside of the valid Unicode character point,
+                the behavior is undefined.
+*/
+CF_EXPORT
+void CFCharacterSetRemoveCharactersInRange(CFMutableCharacterSetRef theSet, CFRange theRange);
+
+/*!
+       @function CFCharacterSetAddCharactersInString
+       Adds the characters in the given string to the charaacter set.
+       @param theSet The character set to which the characters in the
+                string are to be added.  If this parameter is not a
+                valid mutable CFCharacterSet, the behavior is undefined.
+        @param theString The string to add to the character set.
+                If this parameter is not a valid CFString, the behavior
+                is undefined.
+*/
+CF_EXPORT
+void CFCharacterSetAddCharactersInString(CFMutableCharacterSetRef theSet,  CFStringRef theString);
+
+/*!
+       @function CFCharacterSetRemoveCharactersInString
+       Removes the characters in the given string from the charaacter set.
+       @param theSet The character set from which the characters in the
+                string are to be remove.  If this parameter is not a
+                valid mutable CFCharacterSet, the behavior is undefined.
+        @param theString The string to remove from the character set.
+                If this parameter is not a valid CFString, the behavior
+                is undefined.
+*/
+CF_EXPORT
+void CFCharacterSetRemoveCharactersInString(CFMutableCharacterSetRef theSet, CFStringRef theString);
+
+/*!
+       @function CFCharacterSetUnion
+       Forms the union with the given character set.
+       @param theSet The destination character set into which the
+                union of the two character sets is stored.  If this
+                parameter is not a valid mutable CFCharacterSet, the
+                behavior is undefined.
+       @param theOtherSet The character set with which the union is
+                formed.  If this parameter is not a valid CFCharacterSet,
+                the behavior is undefined.
+*/
+CF_EXPORT
+void CFCharacterSetUnion(CFMutableCharacterSetRef theSet, CFCharacterSetRef theOtherSet);
+
+/*!
+       @function CFCharacterSetIntersect
+       Forms the intersection with the given character set.
+       @param theSet The destination character set into which the
+                intersection of the two character sets is stored.
+                If this parameter is not a valid mutable CFCharacterSet,
+                the behavior is undefined.
+       @param theOtherSet The character set with which the intersection
+                is formed.  If this parameter is not a valid CFCharacterSet,
+                the behavior is undefined.
+*/
+CF_EXPORT
+void CFCharacterSetIntersect(CFMutableCharacterSetRef theSet, CFCharacterSetRef theOtherSet);
+
+/*!
+       @function CFCharacterSetInvert
+       Inverts the content of the given character set.
+       @param theSet The character set to be inverted.
+                If this parameter is not a valid mutable CFCharacterSet,
+                the behavior is undefined.
+*/
+CF_EXPORT
+void CFCharacterSetInvert(CFMutableCharacterSetRef theSet);
+
+CF_EXTERN_C_END
+
+#endif /* ! __COREFOUNDATION_CFCHARACTERSET__ */
+