| 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 |