| xpc_array_create(3) | Library Functions Manual | xpc_array_create(3) | 
xpc_array_create —
    creation and management of XPC arrays
#include
    <xpc/xpc.h>
xpc_object_t
  
  xpc_array_create(const xpc_object_t
    *objects, size_t count);
void
  
  xpc_array_set_value(xpc_object_t
    array, size_t index,
    xpc_object_t value);
void
  
  xpc_array_append_value(xpc_object_t
    array, xpc_object_t value);
xpc_object_t
  
  xpc_array_get_value(xpc_object_t
    array, size_t index);
size_t
  
  xpc_array_get_count(xpc_object_t
    array);
bool
  
  xpc_array_apply(xpc_object_t
    array, xpc_array_applier_t applier);
void
  
  xpc_array_set_bool(xpc_object_t
    array, size_t index, bool
    value);
void
  
  xpc_array_set_int64(xpc_object_t
    array, size_t index, int64_t
    value);
void
  
  xpc_array_set_uint64(xpc_object_t
    array, size_t index, uint64_t
    value);
void
  
  xpc_array_set_double(xpc_object_t
    array, size_t index, double
    value);
void
  
  xpc_array_set_date(xpc_object_t
    array, size_t index, int64_t
    value);
void
  
  xpc_array_set_data(xpc_object_t
    array, size_t index, const void
    *bytes, size_t length);
void
  
  xpc_array_set_string(xpc_object_t
    array, size_t index, const char
    *value);
void
  
  xpc_array_set_uuid(xpc_object_t
    array, size_t index, const
    uuid_t value);
void
  
  xpc_array_set_fd(xpc_object_t
    array, size_t index, int
    value);
void
  
  xpc_array_set_connection(xpc_object_t
    array, size_t index,
    xpc_connection_t value);
bool
  
  xpc_array_get_bool(xpc_object_t
    array, size_t index);
int64_t
  
  xpc_array_get_int64(xpc_object_t
    array, size_t index);
uint64_t
  
  xpc_array_get_uint64(xpc_object_t
    array, size_t index);
double
  
  xpc_array_get_double(xpc_object_t
    array, size_t index);
int64_t
  
  xpc_array_get_date(xpc_object_t
    array, size_t index);
const void *
  
  xpc_array_get_data(xpc_object_t
    array, size_t index, size_t
    *length);
const uint8_t *
  
  xpc_array_get_uuid(xpc_object_t
    array, size_t index);
const char *
  
  xpc_array_get_string(xpc_object_t
    array, size_t index);
int
  
  xpc_array_dup_fd(xpc_object_t
    array, size_t index);
XPC arrays are collections of XPC objects ordered by index. The index is zero-based. XPC arrays are contiguous, and values must exist at all indexes between zero and the greatest index of the array. A hole in the array can be simulated by using a null object as returned by xpc_null_create(3).
The
    xpc_array_create()
    function returns a newly created array. The caller may optionally provide
    objects, a C array of XPC object references, to
    initialize the array. The count is used to specify the
    size of the C array. If objects is NULL, then
    count must be zero. If count
    specifies more elements than are actually present in
    values or if values is NULL and
    count is non-zero, the behavior is undefined.
The
    xpc_array_append_value()
    function may be used to append a value to the end of
    an array. This operation increases the count of the
    values in the array by one.
The value of a
    specific index in the array may
    be set using the
    xpc_array_set_value()
    function. The value must be non-NULL, and the
    index must already exist (i.e. less than the
    count provided at creation or extended through
    previous append operations).
The value at a specific
    index of an array may be
    retrieved using the
    xpc_array_get_value()
    function. The result of getting a non-existing index
    (i.e. one that was not specified at creation or through a previous append
    operation) in undefined.
Various functions exist for retrieving primitive C and operating system types directly from an array without the need for an intermediate boxed object. See xpc_object(3) for more information.
The special XPC_ARRAY_APPEND constant may be used to append a value to the end of the array instead of operating on a specific index.
The
    xpc_array_apply()
    function may be used to iterate the index and
    value pairs of an array using an
    applier callback block. The callback block is invoked
    for each pair and must return a bool indicating
    whether the iteration should continue (true if it should continue, false if
    it should not).
The
    xpc_array_apply()
    function returns the boolean value returned by the last invocation of the
    applier block. If the applier block returns false for
    any element (including the last), xpc_array_apply()
    will return false. If the applier block returns true for all elements,
    xpc_array_apply() will return true. For empty
    arrays, the function returns true.
Important:
    the behavior of modifying the contents of an XPC array during iteration is
    explicitly prohibited and will result in a runtime error. Specifically, it
    is not safe to call
    xpc_array_set_value()
    on the current array during iteration, even to modify the current
  element.
| 1 July, 2011 | Darwin |