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 * Licensed under Apache License v2.0. See the file "LICENSE" for more information. 8 */ 9 10 #ifndef _CUPS_ARRAY_H_ 11 # define _CUPS_ARRAY_H_ 12 13 /* 14 * Include necessary headers... 15 */ 16 17 # include "versioning.h" 18 # include <stdlib.h> 19 20 21 /* 22 * C++ magic... 23 */ 24 25 # ifdef __cplusplus 26 extern "C" { 27 # endif /* __cplusplus */ 28 29 30 /* 31 * Types and structures... 32 */ 33 34 typedef struct _cups_array_s cups_array_t; 35 /**** CUPS array type ****/ 36 typedef int (*cups_array_func_t)(void *first, void *second, void *data); 37 /**** Array comparison function ****/ 38 typedef int (*cups_ahash_func_t)(void *element, void *data); 39 /**** Array hash function ****/ 40 typedef void *(*cups_acopy_func_t)(void *element, void *data); 41 /**** Array element copy function ****/ 42 typedef void (*cups_afree_func_t)(void *element, void *data); 43 /**** Array element free function ****/ 44 45 46 /* 47 * Functions... 48 */ 49 50 extern int cupsArrayAdd(cups_array_t *a, void *e) _CUPS_API_1_2; 51 extern void cupsArrayClear(cups_array_t *a) _CUPS_API_1_2; 52 extern int cupsArrayCount(cups_array_t *a) _CUPS_API_1_2; 53 extern void *cupsArrayCurrent(cups_array_t *a) _CUPS_API_1_2; 54 extern void cupsArrayDelete(cups_array_t *a) _CUPS_API_1_2; 55 extern cups_array_t *cupsArrayDup(cups_array_t *a) _CUPS_API_1_2; 56 extern void *cupsArrayFind(cups_array_t *a, void *e) _CUPS_API_1_2; 57 extern void *cupsArrayFirst(cups_array_t *a) _CUPS_API_1_2; 58 extern int cupsArrayGetIndex(cups_array_t *a) _CUPS_API_1_3; 59 extern int cupsArrayGetInsert(cups_array_t *a) _CUPS_API_1_3; 60 extern void *cupsArrayIndex(cups_array_t *a, int n) _CUPS_API_1_2; 61 extern int cupsArrayInsert(cups_array_t *a, void *e) _CUPS_API_1_2; 62 extern void *cupsArrayLast(cups_array_t *a) _CUPS_API_1_2; 63 extern cups_array_t *cupsArrayNew(cups_array_func_t f, void *d) _CUPS_API_1_2; 64 extern cups_array_t *cupsArrayNew2(cups_array_func_t f, void *d, 65 cups_ahash_func_t h, int hsize) _CUPS_API_1_3; 66 extern cups_array_t *cupsArrayNew3(cups_array_func_t f, void *d, 67 cups_ahash_func_t h, int hsize, 68 cups_acopy_func_t cf, 69 cups_afree_func_t ff) _CUPS_API_1_5; 70 extern void *cupsArrayNext(cups_array_t *a) _CUPS_API_1_2; 71 extern void *cupsArrayPrev(cups_array_t *a) _CUPS_API_1_2; 72 extern int cupsArrayRemove(cups_array_t *a, void *e) _CUPS_API_1_2; 73 extern void *cupsArrayRestore(cups_array_t *a) _CUPS_API_1_2; 74 extern int cupsArraySave(cups_array_t *a) _CUPS_API_1_2; 75 extern void *cupsArrayUserData(cups_array_t *a) _CUPS_API_1_2; 76 77 # ifdef __cplusplus 78 } 79 # endif /* __cplusplus */ 80 #endif /* !_CUPS_ARRAY_H_ */ 81