Array API
Introduction
The CUPS array API provides a high-performance generic array
container. The contents of the array container can be sorted and
the container itself is designed for optimal speed and memory
usage under a wide variety of conditions.
The CUPS scheduler (cupsd) and many of the CUPS API
functions use the array API to efficiently manage large lists of
data.
General Usage
The <cups/array.h> header file must be
included to use the cupsArray functions.
Programs using these functions must be linked to the CUPS
library: libcups.a, libcups.so.2,
libcups.2.dylib, libcups_s.a, or
libcups2.lib depending on the platform. The following
command compiles myprogram.c using GCC and the CUPS
library:
gcc -o myprogram myprogram.c -lcups
Compatibility
All of these functions require CUPS 1.2 or higher.
Contents
Description
Add an element to the array.
When adding an element to a sorted array, non-unique elements are
appended at the end of the run. For unsorted arrays, the element
is inserted at the end of the array.
Syntax
int
cupsArrayAdd(
cups_array_t * a,
void * e);
Arguments
| Name | Description |
| a | Array |
| e | Element |
Returns
1 on success, 0 on failure
Description
Clear the array.
Syntax
void
cupsArrayClear(
cups_array_t * a);
Arguments
Returns
Nothing.
Description
Get the number of elements in the array.
Syntax
int
cupsArrayCount(
cups_array_t * a);
Arguments
Returns
Number of elements
Description
Return the current element in the array.
Syntax
void *
cupsArrayCurrent(
cups_array_t * a);
Arguments
Returns
Element
Description
Free all memory used by the array.
Syntax
void
cupsArrayDelete(
cups_array_t * a);
Arguments
Returns
Nothing.
Description
Duplicate the array.
Syntax
cups_array_t *
cupsArrayDup(
cups_array_t * a);
Arguments
Returns
Duplicate array
Description
Find an element in the array.
Syntax
void *
cupsArrayFind(
cups_array_t * a,
void * e);
Arguments
| Name | Description |
| a | Array |
| e | Element |
Returns
Element found or NULL
Description
Get the first element in the array.
Syntax
void *
cupsArrayFirst(
cups_array_t * a);
Arguments
Returns
First element or NULL
Description
Get the index of the current element.
Syntax
int
cupsArrayGetIndex(
cups_array_t * a);
Arguments
Returns
Index of the current element
Description
Get the index of the last inserted element.
Syntax
int
cupsArrayGetInsert(
cups_array_t * a);
Arguments
Returns
Index of the last inserted element
Description
Get the N-th element in the array.
Syntax
void *
cupsArrayIndex(
cups_array_t * a,
int n);
Arguments
| Name | Description |
| a | Array |
| n | Index into array, starting at 0 |
Returns
N-th element or NULL
Description
Insert an element in the array.
When inserting an element in a sorted array, non-unique elements are
inserted at the beginning of the run. For unsorted arrays, the element
is inserted at the beginning of the array.
Syntax
int
cupsArrayInsert(
cups_array_t * a,
void * e);
Arguments
| Name | Description |
| a | Array |
| e | Element |
Returns
0 on failure, 1 on success
Description
Get the last element in the array.
Syntax
void *
cupsArrayLast(
cups_array_t * a);
Arguments
Returns
Last element or NULL
Description
Create a new array.
Syntax
cups_array_t *
cupsArrayNew(
cups_array_func_t f,
void * d);
Arguments
| Name | Description |
| f | Comparison function |
| d | User data |
Returns
Array
Description
Create a new array with hash.
Syntax
cups_array_t *
cupsArrayNew2(
cups_array_func_t f,
void * d,
cups_ahash_func_t h,
int hsize);
Arguments
| Name | Description |
| f | Comparison function |
| d | User data |
| h | Hash function |
| hsize | Hash size |
Returns
Array
Description
Get the next element in the array.
Syntax
void *
cupsArrayNext(
cups_array_t * a);
Arguments
Returns
Next element or NULL
Description
Get the previous element in the array.
Syntax
void *
cupsArrayPrev(
cups_array_t * a);
Arguments
Returns
Previous element or NULL
Description
Remove an element from the array.
Syntax
int
cupsArrayRemove(
cups_array_t * a,
void * e);
Arguments
| Name | Description |
| a | Array |
| e | Element |
Returns
1 on success, 0 on failure
Description
Reset the current element to the last cupsArraySave.
Syntax
void *
cupsArrayRestore(
cups_array_t * a);
Arguments
Returns
New current element
Description
Mark the current element for a later cupsArrayRestore.
The save/restore stack is guaranteed to be at least 32 elements deep.
Syntax
int
cupsArraySave(
cups_array_t * a);
Arguments
Returns
1 on success, 0 on failure
Description
Return the user data for an array.
Syntax
void *
cupsArrayUserData(
cups_array_t * a);
Arguments
Returns
User data
Description
Array hash function
Definition
typedef int (*cups_ahash_func_t)(void *element, void *data);
Description
Array comparison function
Definition
typedef int (*cups_array_func_t)(void *first, void *second, void *data);
Description
CUPS array type
Definition
typedef struct _cups_array_s cups_array_t;
|