(root)/
gcc-13.2.0/
gcc/
testsuite/
objc-obj-c++-shared/
GNUStep/
CoreFoundation/
CFArray.h
       1  /* CFArray.h
       2     
       3     Copyright (C) 2010 Free Software Foundation, Inc.
       4     
       5     Written by: Stefan Bidigaray
       6     Date: January, 2010
       7     
       8     This file is part of CoreBase.
       9     
      10     This library is free software; you can redistribute it and/or
      11     modify it under the terms of the GNU Lesser General Public
      12     License as published by the Free Software Foundation; either
      13     version 2.1 of the License, or (at your option) any later version.
      14  
      15     This library is distributed in the hope that it will be useful,
      16     but WITHOUT ANY WARRANTY; without even the implied warranty of
      17     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
      18     Lesser General Public License for more details.
      19  
      20     You should have received a copy of the GNU Lesser General Public
      21     License along with this library; see the file COPYING.LIB.
      22     If not, see <http://www.gnu.org/licenses/> or write to the 
      23     Free Software Foundation, 51 Franklin Street, Fifth Floor, 
      24     Boston, MA 02110-1301, USA.
      25  */
      26  
      27  
      28  #ifndef __COREFOUNDATION_CFARRAY_H__
      29  #define __COREFOUNDATION_CFARRAY_H__
      30  
      31  #include "CFBase.h"
      32  
      33  CF_EXTERN_C_BEGIN
      34  /** \ingroup CFArrayRef
      35      \brief Reference to an immutable array object.
      36   */
      37  typedef const struct __CFArray *CFArrayRef;
      38  /**
      39      \ingroup CFMutableArrayRef
      40      \brief Reference to a mutable array object.
      41   */
      42  typedef struct __CFArray *CFMutableArrayRef;
      43  
      44  /** \defgroup CFArrayRef CFArray Reference
      45      \brief A CFArray and its mutable type, \ref CFMutableArrayRef
      46        "CFMutableArray", are simple, low overhead, ordered containers for
      47        objects.
      48      \details
      49        <code>\#include <CoreFoundation/CFArray.h></code>
      50      \{
      51   */
      52  
      53  /** \name Callbacks
      54      \{
      55   */
      56  typedef void (*CFArrayApplierFunction) (const void *value, void *context);
      57  typedef CFStringRef (*CFArrayCopyDescriptionCallBack) (const void *value);
      58  typedef void (*CFArrayReleaseCallBack) (CFAllocatorRef allocator,
      59                                          const void *value);
      60  typedef const void *(*CFArrayRetainCallBack) (CFAllocatorRef allocator,
      61                                                const void *value);
      62  typedef Boolean (*CFArrayEqualCallBack) (const void *value1,
      63                                           const void *value2);
      64  /** \} */
      65  
      66  /** \brief Structure with CFArray callbacks.
      67   */
      68  typedef struct _CFArrayCallBacks CFArrayCallBacks;
      69  struct _CFArrayCallBacks
      70  {
      71    CFIndex version; /**< Structure's version number.  Current version is 0. */
      72    CFArrayRetainCallBack retain;
      73      /**< The callback used to retain values added to the array.  If NULL,
      74  	 values are not retained. */
      75    CFArrayReleaseCallBack release;
      76    CFArrayCopyDescriptionCallBack copyDescription;
      77    CFArrayEqualCallBack equal;
      78  };
      79  
      80  /** \name Predefined Callback Structures
      81      \{
      82   */
      83  CF_EXPORT const CFArrayCallBacks kCFTypeArrayCallBacks;
      84  /** \} */
      85  
      86  
      87  
      88  /** \name Creating an Array
      89      \{
      90   */
      91  CF_EXPORT CFArrayRef
      92  CFArrayCreate (CFAllocatorRef allocator, const void **values,
      93                 CFIndex numValues, const CFArrayCallBacks * callBacks);
      94  
      95  CF_EXPORT CFArrayRef
      96  CFArrayCreateCopy (CFAllocatorRef allocator, CFArrayRef theArray);
      97  /** \} */
      98  
      99  /** \name Examining an Array
     100      \{
     101   */
     102  CF_EXPORT CFIndex
     103  CFArrayBSearchValues (CFArrayRef theArray, CFRange range, const void *value,
     104                        CFComparatorFunction comparator, void *context);
     105  
     106  CF_EXPORT Boolean
     107  CFArrayContainsValue (CFArrayRef theArray, CFRange range, const void *value);
     108  
     109  CF_EXPORT CFIndex CFArrayGetCount (CFArrayRef theArray);
     110  
     111  CF_EXPORT CFIndex
     112  CFArrayGetCountOfValue (CFArrayRef theArray, CFRange range, const void *value);
     113  
     114  CF_EXPORT CFIndex
     115  CFArrayGetFirstIndexOfValue (CFArrayRef theArray, CFRange range,
     116                               const void *value);
     117  
     118  CF_EXPORT CFIndex
     119  CFArrayGetLastIndexOfValue (CFArrayRef theArray, CFRange range,
     120                              const void *value);
     121  
     122  CF_EXPORT void
     123  CFArrayGetValues (CFArrayRef theArray, CFRange range, const void **values);
     124  
     125  CF_EXPORT const void *CFArrayGetValueAtIndex (CFArrayRef theArray, CFIndex idx);
     126  /** \} */
     127  
     128  /** \name Applying a Function to Elements
     129      \{
     130   */
     131  CF_EXPORT void
     132  CFArrayApplyFunction (CFArrayRef theArray, CFRange range,
     133                        CFArrayApplierFunction applier, void *context);
     134  /** \} */
     135  
     136  /** \name Getting the CFArray Type ID
     137      \{
     138   */
     139  CF_EXPORT CFTypeID CFArrayGetTypeID (void);
     140  /** \} */
     141  
     142  /** \} */
     143  
     144  /** \defgroup CFMutableArrayRef CFMutableArray Reference
     145      \details <code>\#include <CoreFoundation/CFArray.h></code>
     146      \{
     147   */
     148  CF_EXPORT void
     149  CFArrayAppendArray (CFMutableArrayRef theArray, CFArrayRef otherArray,
     150                      CFRange otherRange);
     151  
     152  CF_EXPORT void
     153  CFArrayAppendValue (CFMutableArrayRef theArray, const void *value);
     154  
     155  CF_EXPORT CFMutableArrayRef
     156  CFArrayCreateMutable (CFAllocatorRef allocator, CFIndex capacity,
     157                        const CFArrayCallBacks * callBacks);
     158  
     159  CF_EXPORT CFMutableArrayRef
     160  CFArrayCreateMutableCopy (CFAllocatorRef allocator, CFIndex capacity,
     161                            CFArrayRef theArray);
     162  
     163  CF_EXPORT void
     164  CFArrayExchangeValuesAtIndices (CFMutableArrayRef theArray, CFIndex idx1,
     165                                  CFIndex idx2);
     166  
     167  CF_EXPORT void
     168  CFArrayInsertValueAtIndex (CFMutableArrayRef theArray, CFIndex idx,
     169                             const void *value);
     170  
     171  CF_EXPORT void CFArrayRemoveAllValues (CFMutableArrayRef theArray);
     172  
     173  CF_EXPORT void
     174  CFArrayRemoveValueAtIndex (CFMutableArrayRef theArray, CFIndex idx);
     175  
     176  CF_EXPORT void
     177  CFArrayReplaceValues (CFMutableArrayRef theArray, CFRange range,
     178                        const void **newValues, CFIndex newCount);
     179  
     180  CF_EXPORT void
     181  CFArraySetValueAtIndex (CFMutableArrayRef theArray, CFIndex idx,
     182                          const void *value);
     183  
     184  CF_EXPORT void
     185  CFArraySortValues (CFMutableArrayRef theArray, CFRange range,
     186                     CFComparatorFunction comparator, void *context);
     187  
     188  /** \} */
     189  
     190  CF_EXTERN_C_END
     191  #endif /* __COREFOUNDATION_CFARRAY_H__ */