]> git.saurik.com Git - apple/cf.git/blobdiff - Collections.subproj/CFSet.h
CF-476.10.tar.gz
[apple/cf.git] / Collections.subproj / CFSet.h
diff --git a/Collections.subproj/CFSet.h b/Collections.subproj/CFSet.h
deleted file mode 100644 (file)
index cfeb293..0000000
+++ /dev/null
@@ -1,511 +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@
- */
-/*     CFSet.h
-       Copyright (c) 1998-2005, Apple, Inc. All rights reserved.
-*/
-/*!
-        @header CFSet
-        CFSet implements a container which stores unique values.
-*/
-
-#if !defined(__COREFOUNDATION_CFSET__)
-#define __COREFOUNDATION_CFSET__ 1
-
-#include <CoreFoundation/CFBase.h>
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/*!
-       @typedef CFSetRetainCallBack
-       Type of the callback function used by CFSets for retaining values.
-        @param allocator The allocator of the CFSet.
-       @param value The value to retain.
-        @result The value to store in the set, which is usually the value
-               parameter passed to this callback, but may be a different
-               value if a different value should be stored in the set.
-*/
-typedef const void *   (*CFSetRetainCallBack)(CFAllocatorRef allocator, const void *value);
-
-/*!
-       @typedef CFSetReleaseCallBack
-       Type of the callback function used by CFSets for releasing a retain on values.
-        @param allocator The allocator of the CFSet.
-       @param value The value to release.
-*/
-typedef void           (*CFSetReleaseCallBack)(CFAllocatorRef allocator, const void *value);
-
-/*!
-       @typedef CFSetCopyDescriptionCallBack
-       Type of the callback function used by CFSets for describing values.
-       @param value The value to describe.
-        @result A description of the specified value.
-*/
-typedef CFStringRef    (*CFSetCopyDescriptionCallBack)(const void *value);
-
-/*!
-       @typedef CFSetEqualCallBack
-       Type of the callback function used by CFSets for comparing values.
-       @param value1 The first value to compare.
-       @param value2 The second value to compare.
-        @result True if the values are equal, otherwise false.
-*/
-typedef Boolean                (*CFSetEqualCallBack)(const void *value1, const void *value2);
-
-/*!
-       @typedef CFSetHashCallBack
-       Type of the callback function used by CFSets for hashing values.
-       @param value The value to hash.
-        @result The hash of the value.
-*/
-typedef CFHashCode     (*CFSetHashCallBack)(const void *value);
-
-/*!
-       @typedef CFSetCallBacks
-       Structure containing the callbacks of a CFSet.
-       @field version The version number of the structure type being passed
-               in as a parameter to the CFSet creation functions. This
-               structure is version 0.
-       @field retain The callback used to add a retain for the set on
-               values as they are put into the set. This callback returns
-               the value to store in the set, which is usually the value
-               parameter passed to this callback, but may be a different
-               value if a different value should be stored in the set.
-               The set's allocator is passed as the first argument.
-       @field release The callback used to remove a retain previously added
-               for the set from values as they are removed from the
-               set. The set's allocator is passed as the first
-               argument.
-       @field copyDescription The callback used to create a descriptive
-               string representation of each value in the set. This is
-               used by the CFCopyDescription() function.
-       @field equal The callback used to compare values in the set for
-               equality for some operations.
-       @field hash The callback used to compare values in the set for
-               uniqueness for some operations.
-*/
-typedef struct {
-    CFIndex                            version;
-    CFSetRetainCallBack                        retain;
-    CFSetReleaseCallBack               release;
-    CFSetCopyDescriptionCallBack       copyDescription;
-    CFSetEqualCallBack                 equal;
-    CFSetHashCallBack                  hash;
-} CFSetCallBacks;
-
-/*!
-       @constant kCFTypeSetCallBacks
-       Predefined CFSetCallBacks structure containing a set of callbacks
-       appropriate for use when the values in a CFSet are all CFTypes.
-*/
-CF_EXPORT
-const CFSetCallBacks kCFTypeSetCallBacks;
-
-/*!
-       @constant kCFCopyStringSetCallBacks
-       Predefined CFSetCallBacks structure containing a set of callbacks
-       appropriate for use when the values in a CFSet should be copies
-        of a CFString.
-*/
-CF_EXPORT
-const CFSetCallBacks kCFCopyStringSetCallBacks;
-
-/*!
-       @typedef CFSetApplierFunction
-       Type of the callback function used by the apply functions of
-               CFSets.
-       @param value The current value from the set.
-       @param context The user-defined context parameter given to the apply
-               function.
-*/
-typedef void (*CFSetApplierFunction)(const void *value, void *context);
-
-/*!
-        @typedef CFSetRef
-       This is the type of a reference to immutable CFSets.
-*/
-typedef const struct __CFSet * CFSetRef;
-
-/*!
-        @typedef CFMutableSetRef
-       This is the type of a reference to mutable CFSets.
-*/
-typedef struct __CFSet * CFMutableSetRef;
-
-/*!
-        @function CFSetGetTypeID
-        Returns the type identifier of all CFSet instances.
-*/
-CF_EXPORT
-CFTypeID CFSetGetTypeID(void);
-
-/*!
-        @function CFSetCreate
-        Creates a new immutable set with the given values.
-       @param allocator The CFAllocator which should be used to allocate
-               memory for the set 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 values A C array of the pointer-sized values to be in the
-               set.  This C array is not changed or freed by this function. 
-                If this parameter is not a valid pointer to a C array of at
-                least numValues pointers, the behavior is undefined.
-       @param numValues The number of values to copy from the values C
-               array into the CFSet. This number will be the count of the
-               set.  If this parameter is zero, negative, or greater than 
-                the number of values actually in the values C array, the 
-                behavior is undefined.
-       @param callBacks A C pointer to a CFSetCallBacks structure
-               initialized with the callbacks for the set to use on each
-               value in the set. A copy of the contents of the
-               callbacks structure is made, so that a pointer to a
-               structure on the stack can be passed in, or can be reused
-               for multiple set creations. If the version field of this
-               callbacks structure is not one of the defined ones for
-               CFSet, the behavior is undefined. The retain field may be
-               NULL, in which case the CFSet will do nothing to add a
-               retain to the contained values for the set. The release
-               field may be NULL, in which case the CFSet will do nothing
-               to remove the set's retain (if any) on the values when the
-               set is destroyed. If the copyDescription field is NULL,
-               the set will create a simple description for the value. If
-               the equal field is NULL, the set will use pointer equality
-               to test for equality of values. The hash field may be NULL,
-                in which case the CFSet will determine uniqueness by pointer
-                equality. This callbacks parameter
-               itself may be NULL, which is treated as if a valid structure
-               of version 0 with all fields NULL had been passed in.
-               Otherwise, if any of the fields are not valid pointers to
-               functions of the correct type, or this parameter is not a
-               valid pointer to a  CFSetCallBacks callbacks structure,
-               the behavior is undefined. If any of the values put into the
-               set is not one understood by one of the callback functions
-               the behavior when that callback function is used is
-               undefined.
-       @result A reference to the new immutable CFSet.
-*/
-CF_EXPORT
-CFSetRef CFSetCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFSetCallBacks *callBacks);
-
-/*!
-       @function CFSetCreateCopy
-       Creates a new immutable set with the values from the given set.
-       @param allocator The CFAllocator which should be used to allocate
-               memory for the set 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 set which is to be copied. The values from the
-               set are copied as pointers into the new set (that is,
-               the values themselves are copied, not that which the values
-               point to, if anything). However, the values are also
-               retained by the new set. The count of the new set will
-               be the same as the copied set. The new set uses the same
-               callbacks as the set to be copied. If this parameter is
-               not a valid CFSet, the behavior is undefined.
-       @result A reference to the new immutable CFSet.
-*/
-CF_EXPORT
-CFSetRef CFSetCreateCopy(CFAllocatorRef allocator, CFSetRef theSet);
-
-/*!
-       @function CFSetCreateMutable
-       Creates a new empty mutable set.
-       @param allocator The CFAllocator which should be used to allocate
-               memory for the set 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 capacity The maximum number of values that can be contained
-               by the CFSet. The set starts empty, and can grow to this
-               number of values (and it can have less). If this parameter
-               is 0, the set's maximum capacity is unlimited (or rather,
-               only limited by address space and available memory
-               constraints). If this parameter is negative, the behavior is
-               undefined.
-       @param callBacks A C pointer to a CFSetCallBacks structure
-               initialized with the callbacks for the set to use on each
-               value in the set. A copy of the contents of the
-               callbacks structure is made, so that a pointer to a
-               structure on the stack can be passed in, or can be reused
-               for multiple set creations. If the version field of this
-               callbacks structure is not one of the defined ones for
-               CFSet, the behavior is undefined. The retain field may be
-               NULL, in which case the CFSet will do nothing to add a
-               retain to the contained values for the set. The release
-               field may be NULL, in which case the CFSet will do nothing
-               to remove the set's retain (if any) on the values when the
-               set is destroyed. If the copyDescription field is NULL,
-               the set will create a simple description for the value. If
-               the equal field is NULL, the set will use pointer equality
-               to test for equality of values. The hash field may be NULL,
-                in which case the CFSet will determine uniqueness by pointer
-                equality. This callbacks parameter
-               itself may be NULL, which is treated as if a valid structure
-               of version 0 with all fields NULL had been passed in.
-               Otherwise, if any of the fields are not valid pointers to
-               functions of the correct type, or this parameter is not a
-               valid pointer to a  CFSetCallBacks callbacks structure,
-               the behavior is undefined. If any of the values put into the
-               set is not one understood by one of the callback functions
-               the behavior when that callback function is used is
-               undefined.
-       @result A reference to the new mutable CFSet.
-*/
-CF_EXPORT
-CFMutableSetRef CFSetCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFSetCallBacks *callBacks);
-
-/*!
-       @function CFSetCreateMutableCopy
-       Creates a new immutable set with the values from the given set.
-       @param allocator The CFAllocator which should be used to allocate
-               memory for the set 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 capacity The maximum number of values that can be contained
-               by the CFSet. The set starts with the same values as the
-                set to be copied, and can grow to this number of values.
-                If this parameter is 0, the set's maximum capacity is 
-                unlimited (or rather, only limited by address space and 
-                available memory constraints). This parameter must be 
-                greater than or equal to the count of the set which is to
-                be copied, or the behavior is undefined.
-       @param theSet The set which is to be copied. The values from the
-               set are copied as pointers into the new set (that is,
-               the values themselves are copied, not that which the values
-               point to, if anything). However, the values are also
-               retained by the new set. The count of the new set will
-               be the same as the copied set. The new set uses the same
-               callbacks as the set to be copied. If this parameter is
-               not a valid CFSet, the behavior is undefined.
-       @result A reference to the new mutable CFSet.
-*/
-CF_EXPORT
-CFMutableSetRef CFSetCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFSetRef theSet);
-
-/*!
-       @function CFSetGetCount
-       Returns the number of values currently in the set.
-       @param theSet The set to be queried. If this parameter is not a valid
-               CFSet, the behavior is undefined.
-       @result The number of values in the set.
-*/
-CF_EXPORT
-CFIndex CFSetGetCount(CFSetRef theSet);
-
-/*!
-       @function CFSetGetCountOfValue
-       Counts the number of times the given value occurs in the set. Since 
-        sets by definition contain only one instance of a value, this function
-        is synomous to SFSetContainsValue.
-       @param theSet The set to be searched. If this parameter is not a
-               valid CFSet, the behavior is undefined.
-       @param value The value for which to find matches in the set. The
-               equal() callback provided when the set was created is
-               used to compare. If the equal() callback was NULL, pointer
-               equality (in C, ==) is used. If value, or any of the values
-               in the set, are not understood by the equal() callback,
-               the behavior is undefined.
-       @result The number of times the given value occurs in the set.
-*/
-CF_EXPORT
-CFIndex CFSetGetCountOfValue(CFSetRef theSet, const void *value);
-
-/*!
-       @function CFSetContainsValue
-       Reports whether or not the value is in the set.
-       @param theSet The set to be searched. If this parameter is not a
-               valid CFSet, the behavior is undefined.
-       @param value The value for which to find matches in the set. The
-               equal() callback provided when the set was created is
-               used to compare. If the equal() callback was NULL, pointer
-               equality (in C, ==) is used. If value, or any of the values
-               in the set, are not understood by the equal() callback,
-               the behavior is undefined.
-       @result true, if the value is in the set, otherwise false.
-*/
-CF_EXPORT
-Boolean CFSetContainsValue(CFSetRef theSet, const void *value);
-
-/*!
-       @function CFSetGetValue
-       Retrieves a value in the set which hashes the same as the specified value.
-       @param theSet The set to be queried. If this parameter is not a
-               valid CFSet, the behavior is undefined.
-       @param value The value to retrieve. The equal() callback provided when
-                the set was created is used to compare. If the equal() callback
-                was NULL, pointer equality (in C, ==) is used. If a value, or
-                any of the values in the set, are not understood by the equal()
-                callback, the behavior is undefined.
-        @result The value in the set with the given hash.
-*/
-CF_EXPORT
-const void *CFSetGetValue(CFSetRef theSet, const void *value);
-
-/*!
-       @function CFSetGetValue
-       Retrieves a value in the set which hashes the same as the specified value,
-        if present.
-       @param theSet The set to be queried. If this parameter is not a
-               valid CFSet, the behavior is undefined.
-       @param candidate This value is hashed and compared with values in the
-                set to determine which value to retrieve. The equal() callback provided when
-                the set was created is used to compare. If the equal() callback
-                was NULL, pointer equality (in C, ==) is used. If a value, or
-                any of the values in the set, are not understood by the equal()
-                callback, the behavior is undefined.
-       @param value A pointer to memory which should be filled with the
-               pointer-sized value if a matching value is found. If no
-               match is found, the contents of the storage pointed to by
-               this parameter are undefined. This parameter may be NULL,
-               in which case the value from the dictionary is not returned
-               (but the return value of this function still indicates
-               whether or not the value was present).
-        @result True if the value was present in the set, otherwise false.
-*/
-CF_EXPORT
-Boolean CFSetGetValueIfPresent(CFSetRef theSet, const void *candidate, const void **value);
-
-/*!
-       @function CFSetGetValues
-       Fills the buffer with values from the set.
-       @param theSet The set to be queried. If this parameter is not a
-               valid CFSet, the behavior is undefined.
-       @param values A C array of pointer-sized values to be filled with
-               values from the set. The values in the C array are ordered
-               in the same order in which they appear in the set. If this
-               parameter is not a valid pointer to a C array of at least
-               CFSetGetCount() pointers, the behavior is undefined.
-*/
-CF_EXPORT
-void CFSetGetValues(CFSetRef theSet, const void **values);
-
-/*!
-       @function CFSetApplyFunction
-       Calls a function once for each value in the set.
-       @param theSet The set to be operated upon. If this parameter is not
-               a valid CFSet, the behavior is undefined.
-       @param applier The callback function to call once for each value in
-               the given set. If this parameter is not a
-               pointer to a function of the correct prototype, the behavior
-               is undefined. If there are values in the set which the
-               applier function does not expect or cannot properly apply
-               to, the behavior is undefined. 
-       @param context A pointer-sized user-defined value, which is passed
-               as the second parameter to the applier function, but is
-               otherwise unused by this function. If the context is not
-               what is expected by the applier function, the behavior is
-               undefined.
-*/
-CF_EXPORT
-void CFSetApplyFunction(CFSetRef theSet, CFSetApplierFunction applier, void *context);
-
-/*!
-       @function CFSetAddValue
-       Adds the value to the set if it is not already present.
-       @param theSet The set to which the value is to be added. If this
-               parameter is not a valid mutable CFSet, the behavior is
-               undefined. If the set is a fixed-capacity set and it
-               is full before this operation, the behavior is undefined.
-       @param value The value to add to the set. The value is retained by
-               the set using the retain callback provided when the set
-               was created. If the value is not of the sort expected by the
-               retain callback, the behavior is undefined. The count of the 
-                set is increased by one.
-*/
-CF_EXPORT
-void CFSetAddValue(CFMutableSetRef theSet, const void *value);
-
-/*!
-       @function CFSetReplaceValue
-       Replaces the value in the set if it is present.
-       @param theSet The set to which the value is to be replaced. If this
-               parameter is not a valid mutable CFSet, the behavior is
-               undefined.
-        @param value The value to replace in the set. The equal() callback provided when
-                the set was created is used to compare. If the equal() callback
-                was NULL, pointer equality (in C, ==) is used. If a value, or
-                any of the values in the set, are not understood by the equal()
-                callback, the behavior is undefined. The value is retained by
-               the set using the retain callback provided when the set
-               was created. If the value is not of the sort expected by the
-               retain callback, the behavior is undefined. The count of the 
-                set is increased by one.
-*/
-CF_EXPORT
-void CFSetReplaceValue(CFMutableSetRef theSet, const void *value);
-
-/*!
-       @function CFSetSetValue
-       Replaces the value in the set if it is present, or adds the value to 
-        the set if it is absent.
-       @param theSet The set to which the value is to be replaced. If this
-               parameter is not a valid mutable CFSet, the behavior is
-               undefined.
-        @param value The value to set in the CFSet. The equal() callback provided when
-                the set was created is used to compare. If the equal() callback
-                was NULL, pointer equality (in C, ==) is used. If a value, or
-                any of the values in the set, are not understood by the equal()
-                callback, the behavior is undefined. The value is retained by
-               the set using the retain callback provided when the set
-               was created. If the value is not of the sort expected by the
-               retain callback, the behavior is undefined. The count of the 
-                set is increased by one.
-*/
-CF_EXPORT
-void CFSetSetValue(CFMutableSetRef theSet, const void *value);
-
-/*!
-       @function CFSetRemoveValue
-       Removes the specified value from the set.
-       @param theSet The set from which the value is to be removed.
-                If this parameter is not a valid mutable CFSet,
-               the behavior is undefined.
-        @param value The value to remove. The equal() callback provided when
-                the set was created is used to compare. If the equal() callback
-                was NULL, pointer equality (in C, ==) is used. If a value, or
-                any of the values in the set, are not understood by the equal()
-                callback, the behavior is undefined.
-*/
-CF_EXPORT
-void CFSetRemoveValue(CFMutableSetRef theSet, const void *value);
-
-/*!
-       @function CFSetRemoveAllValues
-       Removes all the values from the set, making it empty.
-       @param theSet The set from which all of the values are to be
-               removed. If this parameter is not a valid mutable CFSet,
-               the behavior is undefined.
-*/
-CF_EXPORT
-void CFSetRemoveAllValues(CFMutableSetRef theSet);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* ! __COREFOUNDATION_CFSET__ */
-