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