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

Functions

cupsArrayAdd()

Description

Add an element to the array.

Syntax

int
cupsArrayAdd(
    cups_array_t * a,
    void * e);

Arguments

NameDescription
aArray
eElement

Returns

1 on success, 0 on failure

cupsArrayClear()

Description

Clear the array.

Syntax

void
cupsArrayClear(
    cups_array_t * a);

Arguments

NameDescription
aArray

Returns

Nothing.

cupsArrayCount()

Description

Get the number of elements in the array.

Syntax

int
cupsArrayCount(
    cups_array_t * a);

Arguments

NameDescription
aArray

Returns

Number of elements

cupsArrayCurrent()

Description

Return the current element in the array.

Syntax

void *
cupsArrayCurrent(
    cups_array_t * a);

Arguments

NameDescription
aArray

Returns

Element

cupsArrayDelete()

Description

Free all memory used by the array.

Syntax

void
cupsArrayDelete(
    cups_array_t * a);

Arguments

NameDescription
aArray

Returns

Nothing.

cupsArrayDup()

Description

Duplicate the array.

Syntax

cups_array_t *
cupsArrayDup(
    cups_array_t * a);

Arguments

NameDescription
aArray

Returns

Duplicate array

cupsArrayFind()

Description

Find an element in the array.

Syntax

void *
cupsArrayFind(
    cups_array_t * a,
    void * e);

Arguments

NameDescription
aArray
eElement

Returns

Element found or NULL

cupsArrayFirst()

Description

Get the first element in the array.

Syntax

void *
cupsArrayFirst(
    cups_array_t * a);

Arguments

NameDescription
aArray

Returns

First element or NULL

cupsArrayLast()

Description

Get the last element in the array.

Syntax

void *
cupsArrayLast(
    cups_array_t * a);

Arguments

NameDescription
aArray

Returns

Last element or NULL

cupsArrayNew()

Description

Create a new array.

Syntax

cups_array_t *
cupsArrayNew(
    cups_array_func_t f,
    void * d);

Arguments

NameDescription
fComparison function
dUser data

Returns

Array

cupsArrayNext()

Description

Get the next element in the array.

Syntax

void *
cupsArrayNext(
    cups_array_t * a);

Arguments

NameDescription
aArray

Returns

Next element or NULL

cupsArrayPrev()

Description

Get the previous element in the array.

Syntax

void *
cupsArrayPrev(
    cups_array_t * a);

Arguments

NameDescription
aArray

Returns

Previous element or NULL

cupsArrayRemove()

Description

Remove an element from the array.

Syntax

int
cupsArrayRemove(
    cups_array_t * a,
    void * e);

Arguments

NameDescription
aArray
eElement

Returns

1 on success, 0 on failure

cupsArrayRestore()

Description

Reset the current element to the last cupsArraySave.

Syntax

void *
cupsArrayRestore(
    cups_array_t * a);

Arguments

NameDescription
aArray

Returns

New current element

cupsArraySave()

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

NameDescription
aArray

Returns

1 on success, 0 on failure

Types

cups_array_func_t

Description

Array comparison function

Definition

typedef int (*cups_array_func_t)(void *first, void *second, void *data);

cups_array_t

Description

CUPS array type

Definition

typedef struct _cups_array_s cups_array_t;