Home | History | Annotate | Download | only in cups
      1 /*
      2  * Sorted array definitions for CUPS.
      3  *
      4  * Copyright 2007-2010 by Apple Inc.
      5  * Copyright 1997-2007 by Easy Software Products.
      6  *
      7  * These coded instructions, statements, and computer programs are the
      8  * property of Apple Inc. and are protected by Federal copyright
      9  * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
     10  * which should have been included with this file.  If this file is
     11  * missing or damaged, see the license at "http://www.cups.org/".
     12  *
     13  * This file is subject to the Apple OS-Developed Software exception.
     14  */
     15 
     16 #ifndef _CUPS_ARRAY_H_
     17 #  define _CUPS_ARRAY_H_
     18 
     19 /*
     20  * Include necessary headers...
     21  */
     22 
     23 #  include "versioning.h"
     24 #  include <stdlib.h>
     25 
     26 
     27 /*
     28  * C++ magic...
     29  */
     30 
     31 #  ifdef __cplusplus
     32 extern "C" {
     33 #  endif /* __cplusplus */
     34 
     35 
     36 /*
     37  * Types and structures...
     38  */
     39 
     40 typedef struct _cups_array_s cups_array_t;
     41 					/**** CUPS array type ****/
     42 typedef int (*cups_array_func_t)(void *first, void *second, void *data);
     43 					/**** Array comparison function ****/
     44 typedef int (*cups_ahash_func_t)(void *element, void *data);
     45 					/**** Array hash function ****/
     46 typedef void *(*cups_acopy_func_t)(void *element, void *data);
     47 					/**** Array element copy function ****/
     48 typedef void (*cups_afree_func_t)(void *element, void *data);
     49 					/**** Array element free function ****/
     50 
     51 
     52 /*
     53  * Functions...
     54  */
     55 
     56 extern int		cupsArrayAdd(cups_array_t *a, void *e) _CUPS_API_1_2;
     57 extern void		cupsArrayClear(cups_array_t *a) _CUPS_API_1_2;
     58 extern int		cupsArrayCount(cups_array_t *a) _CUPS_API_1_2;
     59 extern void		*cupsArrayCurrent(cups_array_t *a) _CUPS_API_1_2;
     60 extern void		cupsArrayDelete(cups_array_t *a) _CUPS_API_1_2;
     61 extern cups_array_t	*cupsArrayDup(cups_array_t *a) _CUPS_API_1_2;
     62 extern void		*cupsArrayFind(cups_array_t *a, void *e) _CUPS_API_1_2;
     63 extern void		*cupsArrayFirst(cups_array_t *a) _CUPS_API_1_2;
     64 extern int		cupsArrayGetIndex(cups_array_t *a) _CUPS_API_1_3;
     65 extern int		cupsArrayGetInsert(cups_array_t *a) _CUPS_API_1_3;
     66 extern void		*cupsArrayIndex(cups_array_t *a, int n) _CUPS_API_1_2;
     67 extern int		cupsArrayInsert(cups_array_t *a, void *e) _CUPS_API_1_2;
     68 extern void		*cupsArrayLast(cups_array_t *a) _CUPS_API_1_2;
     69 extern cups_array_t	*cupsArrayNew(cups_array_func_t f, void *d) _CUPS_API_1_2;
     70 extern cups_array_t	*cupsArrayNew2(cups_array_func_t f, void *d,
     71 			               cups_ahash_func_t h, int hsize) _CUPS_API_1_3;
     72 extern cups_array_t	*cupsArrayNew3(cups_array_func_t f, void *d,
     73 			               cups_ahash_func_t h, int hsize,
     74 				       cups_acopy_func_t cf,
     75 				       cups_afree_func_t ff) _CUPS_API_1_5;
     76 extern void		*cupsArrayNext(cups_array_t *a) _CUPS_API_1_2;
     77 extern void		*cupsArrayPrev(cups_array_t *a) _CUPS_API_1_2;
     78 extern int		cupsArrayRemove(cups_array_t *a, void *e) _CUPS_API_1_2;
     79 extern void		*cupsArrayRestore(cups_array_t *a) _CUPS_API_1_2;
     80 extern int		cupsArraySave(cups_array_t *a) _CUPS_API_1_2;
     81 extern void		*cupsArrayUserData(cups_array_t *a) _CUPS_API_1_2;
     82 
     83 #  ifdef __cplusplus
     84 }
     85 #  endif /* __cplusplus */
     86 #endif /* !_CUPS_ARRAY_H_ */
     87