blob: 0145855dbb41166cefab2f72fbddb56ebdfd11fa [file] [log] [blame]
/* CFArray.h
Copyright (C) 2010 Free Software Foundation, Inc.
Written by: Stefan Bidigaray
Date: January, 2010
This file is part of CoreBase.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef __COREFOUNDATION_CFARRAY_H__
#define __COREFOUNDATION_CFARRAY_H__
#include "CFBase.h"
CF_EXTERN_C_BEGIN
/** \ingroup CFArrayRef
\brief Reference to an immutable array object.
*/
typedef const struct __CFArray *CFArrayRef;
/**
\ingroup CFMutableArrayRef
\brief Reference to a mutable array object.
*/
typedef struct __CFArray *CFMutableArrayRef;
/** \defgroup CFArrayRef CFArray Reference
\brief A CFArray and its mutable type, \ref CFMutableArrayRef
"CFMutableArray", are simple, low overhead, ordered containers for
objects.
\details
<code>\#include <CoreFoundation/CFArray.h></code>
\{
*/
/** \name Callbacks
\{
*/
typedef void (*CFArrayApplierFunction) (const void *value, void *context);
typedef CFStringRef (*CFArrayCopyDescriptionCallBack) (const void *value);
typedef void (*CFArrayReleaseCallBack) (CFAllocatorRef allocator,
const void *value);
typedef const void *(*CFArrayRetainCallBack) (CFAllocatorRef allocator,
const void *value);
typedef Boolean (*CFArrayEqualCallBack) (const void *value1,
const void *value2);
/** \} */
/** \brief Structure with CFArray callbacks.
*/
typedef struct _CFArrayCallBacks CFArrayCallBacks;
struct _CFArrayCallBacks
{
CFIndex version; /**< Structure's version number. Current version is 0. */
CFArrayRetainCallBack retain;
/**< The callback used to retain values added to the array. If NULL,
values are not retained. */
CFArrayReleaseCallBack release;
CFArrayCopyDescriptionCallBack copyDescription;
CFArrayEqualCallBack equal;
};
/** \name Predefined Callback Structures
\{
*/
CF_EXPORT const CFArrayCallBacks kCFTypeArrayCallBacks;
/** \} */
/** \name Creating an Array
\{
*/
CF_EXPORT CFArrayRef
CFArrayCreate (CFAllocatorRef allocator, const void **values,
CFIndex numValues, const CFArrayCallBacks * callBacks);
CF_EXPORT CFArrayRef
CFArrayCreateCopy (CFAllocatorRef allocator, CFArrayRef theArray);
/** \} */
/** \name Examining an Array
\{
*/
CF_EXPORT CFIndex
CFArrayBSearchValues (CFArrayRef theArray, CFRange range, const void *value,
CFComparatorFunction comparator, void *context);
CF_EXPORT Boolean
CFArrayContainsValue (CFArrayRef theArray, CFRange range, const void *value);
CF_EXPORT CFIndex CFArrayGetCount (CFArrayRef theArray);
CF_EXPORT CFIndex
CFArrayGetCountOfValue (CFArrayRef theArray, CFRange range, const void *value);
CF_EXPORT CFIndex
CFArrayGetFirstIndexOfValue (CFArrayRef theArray, CFRange range,
const void *value);
CF_EXPORT CFIndex
CFArrayGetLastIndexOfValue (CFArrayRef theArray, CFRange range,
const void *value);
CF_EXPORT void
CFArrayGetValues (CFArrayRef theArray, CFRange range, const void **values);
CF_EXPORT const void *CFArrayGetValueAtIndex (CFArrayRef theArray, CFIndex idx);
/** \} */
/** \name Applying a Function to Elements
\{
*/
CF_EXPORT void
CFArrayApplyFunction (CFArrayRef theArray, CFRange range,
CFArrayApplierFunction applier, void *context);
/** \} */
/** \name Getting the CFArray Type ID
\{
*/
CF_EXPORT CFTypeID CFArrayGetTypeID (void);
/** \} */
/** \} */
/** \defgroup CFMutableArrayRef CFMutableArray Reference
\details <code>\#include <CoreFoundation/CFArray.h></code>
\{
*/
CF_EXPORT void
CFArrayAppendArray (CFMutableArrayRef theArray, CFArrayRef otherArray,
CFRange otherRange);
CF_EXPORT void
CFArrayAppendValue (CFMutableArrayRef theArray, const void *value);
CF_EXPORT CFMutableArrayRef
CFArrayCreateMutable (CFAllocatorRef allocator, CFIndex capacity,
const CFArrayCallBacks * callBacks);
CF_EXPORT CFMutableArrayRef
CFArrayCreateMutableCopy (CFAllocatorRef allocator, CFIndex capacity,
CFArrayRef theArray);
CF_EXPORT void
CFArrayExchangeValuesAtIndices (CFMutableArrayRef theArray, CFIndex idx1,
CFIndex idx2);
CF_EXPORT void
CFArrayInsertValueAtIndex (CFMutableArrayRef theArray, CFIndex idx,
const void *value);
CF_EXPORT void CFArrayRemoveAllValues (CFMutableArrayRef theArray);
CF_EXPORT void
CFArrayRemoveValueAtIndex (CFMutableArrayRef theArray, CFIndex idx);
CF_EXPORT void
CFArrayReplaceValues (CFMutableArrayRef theArray, CFRange range,
const void **newValues, CFIndex newCount);
CF_EXPORT void
CFArraySetValueAtIndex (CFMutableArrayRef theArray, CFIndex idx,
const void *value);
CF_EXPORT void
CFArraySortValues (CFMutableArrayRef theArray, CFRange range,
CFComparatorFunction comparator, void *context);
/** \} */
CF_EXTERN_C_END
#endif /* __COREFOUNDATION_CFARRAY_H__ */