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