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