• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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