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 32extern "C" { 33# endif /* __cplusplus */ 34 35 36/* 37 * Types and structures... 38 */ 39 40typedef struct _cups_array_s cups_array_t; 41 /**** CUPS array type ****/ 42typedef int (*cups_array_func_t)(void *first, void *second, void *data); 43 /**** Array comparison function ****/ 44typedef int (*cups_ahash_func_t)(void *element, void *data); 45 /**** Array hash function ****/ 46typedef void *(*cups_acopy_func_t)(void *element, void *data); 47 /**** Array element copy function ****/ 48typedef void (*cups_afree_func_t)(void *element, void *data); 49 /**** Array element free function ****/ 50 51 52/* 53 * Functions... 54 */ 55 56extern int cupsArrayAdd(cups_array_t *a, void *e) _CUPS_API_1_2; 57extern void cupsArrayClear(cups_array_t *a) _CUPS_API_1_2; 58extern int cupsArrayCount(cups_array_t *a) _CUPS_API_1_2; 59extern void *cupsArrayCurrent(cups_array_t *a) _CUPS_API_1_2; 60extern void cupsArrayDelete(cups_array_t *a) _CUPS_API_1_2; 61extern cups_array_t *cupsArrayDup(cups_array_t *a) _CUPS_API_1_2; 62extern void *cupsArrayFind(cups_array_t *a, void *e) _CUPS_API_1_2; 63extern void *cupsArrayFirst(cups_array_t *a) _CUPS_API_1_2; 64extern int cupsArrayGetIndex(cups_array_t *a) _CUPS_API_1_3; 65extern int cupsArrayGetInsert(cups_array_t *a) _CUPS_API_1_3; 66extern void *cupsArrayIndex(cups_array_t *a, int n) _CUPS_API_1_2; 67extern int cupsArrayInsert(cups_array_t *a, void *e) _CUPS_API_1_2; 68extern void *cupsArrayLast(cups_array_t *a) _CUPS_API_1_2; 69extern cups_array_t *cupsArrayNew(cups_array_func_t f, void *d) _CUPS_API_1_2; 70extern cups_array_t *cupsArrayNew2(cups_array_func_t f, void *d, 71 cups_ahash_func_t h, int hsize) _CUPS_API_1_3; 72extern 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; 76extern void *cupsArrayNext(cups_array_t *a) _CUPS_API_1_2; 77extern void *cupsArrayPrev(cups_array_t *a) _CUPS_API_1_2; 78extern int cupsArrayRemove(cups_array_t *a, void *e) _CUPS_API_1_2; 79extern void *cupsArrayRestore(cups_array_t *a) _CUPS_API_1_2; 80extern int cupsArraySave(cups_array_t *a) _CUPS_API_1_2; 81extern void *cupsArrayUserData(cups_array_t *a) _CUPS_API_1_2; 82 83# ifdef __cplusplus 84} 85# endif /* __cplusplus */ 86#endif /* !_CUPS_ARRAY_H_ */ 87