/*
- * "$Id: array.c 6649 2007-07-11 21:46:42Z mike $"
+ * "$Id: array.c 7616 2008-05-28 00:34:13Z mike $"
*
* Sorted array routines for the Common UNIX Printing System (CUPS).
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
* appended at the end of the run of identical elements. For unsorted arrays,
* the element is appended to the end of the array.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
int /* O - 1 on success, 0 on failure */
cupsArrayAdd(cups_array_t *a, /* I - Array */
void *e) /* I - Element */
{
- DEBUG_printf(("cupsArrayAdd(a=%p, e=%p)\n", a, e));
+ DEBUG_printf(("2cupsArrayAdd(a=%p, e=%p)", a, e));
/*
* Range check input...
if (!a || !e)
{
- DEBUG_puts("cupsArrayAdd: returning 0");
+ DEBUG_puts("3cupsArrayAdd: returning 0");
return (0);
}
* The caller is responsible for freeing the memory used by the
* elements themselves.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
void
/*
* 'cupsArrayCount()' - Get the number of elements in the array.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
int /* O - Number of elements */
* The current element is undefined until you call @link cupsArrayFind@,
* @link cupsArrayFirst@, or @link cupsArrayIndex@, or @link cupsArrayLast@.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
void * /* O - Element */
* The caller is responsible for freeing the memory used by the
* elements themselves.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
void
/*
* 'cupsArrayDup()' - Duplicate the array.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
cups_array_t * /* O - Duplicate array */
/*
* 'cupsArrayFind()' - Find an element in the array.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
void * /* O - Element found or @code NULL@ */
/*
* 'cupsArrayFirst()' - Get the first element in the array.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
void * /* O - First element or @code NULL@ if the array is empty */
* The current element is undefined until you call @link cupsArrayFind@,
* @link cupsArrayFirst@, or @link cupsArrayIndex@, or @link cupsArrayLast@.
*
- * @since CUPS 1.3@
+ * @since CUPS 1.3/Mac OS X 10.5@
*/
int /* O - Index of the current element, starting at 0 */
/*
* 'cupsArrayGetInsert()' - Get the index of the last inserted element.
*
- * @since CUPS 1.3@
+ * @since CUPS 1.3/Mac OS X 10.5@
*/
int /* O - Index of the last inserted element, starting at 0 */
/*
* 'cupsArrayIndex()' - Get the N-th element in the array.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
void * /* O - N-th element or @code NULL@ */
* inserted at the beginning of the run of identical elements. For unsorted
* arrays, the element is inserted at the beginning of the array.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
int /* O - 0 on failure, 1 on success */
cupsArrayInsert(cups_array_t *a, /* I - Array */
void *e) /* I - Element */
{
- DEBUG_printf(("cupsArrayInsert(a=%p, e=%p)\n", a, e));
+ DEBUG_printf(("2cupsArrayInsert(a=%p, e=%p)", a, e));
/*
* Range check input...
if (!a || !e)
{
- DEBUG_puts("cupsArrayInsert: returning 0");
+ DEBUG_puts("3cupsArrayInsert: returning 0");
return (0);
}
/*
* 'cupsArrayLast()' - Get the last element in the array.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
void * /* O - Last element or @code NULL@ if the array is empty */
* data pointer argument can safely be omitted when not required so functions
* like @code strcmp@ can be used for sorted string arrays.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
cups_array_t * /* O - Array */
* The hash function ("h") is used to implement cached lookups with the
* specified hash size ("hsize").
*
- * @since CUPS 1.3@
+ * @since CUPS 1.3/Mac OS X 10.5@
*/
cups_array_t * /* O - Array */
* @link cupsArrayFirst@, or @link cupsArrayIndex@, or @link cupsArrayLast@
* to set the current element.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
void * /* O - Next element or @code NULL@ */
* @link cupsArrayFirst@, or @link cupsArrayIndex@, or @link cupsArrayLast@
* to set the current element.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
void * /* O - Previous element or @code NULL@ */
* The caller is responsible for freeing the memory used by the
* removed element.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
int /* O - 1 on success, 0 on failure */
/*
* 'cupsArrayRestore()' - Reset the current element to the last @link cupsArraySave@.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
void * /* O - New current element */
*
* The save/restore stack is guaranteed to be at least 32 elements deep.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
int /* O - 1 on success, 0 on failure */
/*
* 'cupsArrayUserData()' - Return the user data for an array.
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
void * /* O - User data */
/*
* 'cups_array_add()' - Insert or append an element to the array...
*
- * @since CUPS 1.2@
+ * @since CUPS 1.2/Mac OS X 10.5@
*/
static int /* O - 1 on success, 0 on failure */
diff; /* Comparison with current element */
- DEBUG_printf(("cups_array_add(a=%p, e=%p, insert=%d)\n", a, e, insert));
+ DEBUG_printf(("7cups_array_add(a=%p, e=%p, insert=%d)", a, e, insert));
/*
* Verify we have room for the new element...
temp = realloc(a->elements, count * sizeof(void *));
}
- DEBUG_printf(("cups_array_add: count=%d\n", count));
+ DEBUG_printf(("9cups_array_add: count=%d", count));
if (!temp)
{
- DEBUG_puts("cupsAddAdd: allocation failed, returning 0");
+ DEBUG_puts("9cups_array_add: allocation failed, returning 0");
return (0);
}
if (a->saved[i] >= current)
a->saved[i] ++;
- DEBUG_printf(("cups_array_add: insert element at index %d...\n", current));
+ DEBUG_printf(("9cups_array_add: insert element at index %d...", current));
}
#ifdef DEBUG
else
- DEBUG_printf(("cups_array_add: append element at %d...\n", current));
+ DEBUG_printf(("9cups_array_add: append element at %d...", current));
#endif /* DEBUG */
a->elements[current] = e;
#ifdef DEBUG
for (current = 0; current < a->num_elements; current ++)
- DEBUG_printf(("cups_array_add: a->elements[%d]=%p\n", current,
+ DEBUG_printf(("9cups_array_add: a->elements[%d]=%p", current,
a->elements[current]));
#endif /* DEBUG */
- DEBUG_puts("cups_array_add: returning 1");
+ DEBUG_puts("9cups_array_add: returning 1");
return (1);
}
/*
* 'cups_array_find()' - Find an element in the array...
- *
- * @since CUPS 1.2@
*/
static int /* O - Index of match */
diff; /* Comparison with current element */
- DEBUG_printf(("cups_array_find(a=%p, e=%p, prev=%d, rdiff=%p)\n", a, e, prev,
+ DEBUG_printf(("7cups_array_find(a=%p, e=%p, prev=%d, rdiff=%p)", a, e, prev,
rdiff));
if (a->compare)
* Do a binary search for the element...
*/
- DEBUG_puts("cups_array_find: binary search");
+ DEBUG_puts("9cups_array_find: binary search");
if (prev >= 0 && prev < a->num_elements)
{
* Exact or edge match, return it!
*/
- DEBUG_printf(("cups_array_find: Returning %d, diff=%d\n", prev, diff));
+ DEBUG_printf(("9cups_array_find: Returning %d, diff=%d", prev, diff));
*rdiff = diff;
current = (left + right) / 2;
diff = (*(a->compare))(e, a->elements[current], a->data);
- DEBUG_printf(("cups_array_find: left=%d, right=%d, current=%d, diff=%d\n",
+ DEBUG_printf(("9cups_array_find: left=%d, right=%d, current=%d, diff=%d",
left, right, current, diff));
if (diff == 0)
* Do a linear pointer search...
*/
- DEBUG_puts("cups_array_find: linear search");
+ DEBUG_puts("9cups_array_find: linear search");
diff = 1;
* Return the closest element and the difference...
*/
- DEBUG_printf(("cups_array_find: Returning %d, diff=%d\n", current, diff));
+ DEBUG_printf(("8cups_array_find: Returning %d, diff=%d", current, diff));
*rdiff = diff;
/*
- * End of "$Id: array.c 6649 2007-07-11 21:46:42Z mike $".
+ * End of "$Id: array.c 7616 2008-05-28 00:34:13Z mike $".
*/