Пример #1
0
xpc_object_t
xpc_uuid_create(const uuid_t uuid)
{
	xpc_u val;

	memcpy(val.uuid, uuid, sizeof(uuid_t));
	return _xpc_prim_create(_XPC_TYPE_UUID, val, 1);
}
Пример #2
0
xpc_object_t
xpc_data_create(const void *bytes, size_t length)
{
	xpc_u val;

	val.ptr = (uintptr_t)bytes;
	return _xpc_prim_create(_XPC_TYPE_DATA, val, length);
}
Пример #3
0
xpc_object_t
xpc_string_create_with_format_and_arguments(const char *fmt, va_list ap)
{
	xpc_u val;

	vasprintf(&val.str, fmt, ap);
	return _xpc_prim_create(_XPC_TYPE_STRING, val, strlen(val.str));
}
Пример #4
0
xpc_object_t
xpc_string_create(const char *string)
{
	xpc_u val;

	val.str = string;
	return _xpc_prim_create(_XPC_TYPE_STRING, val, strlen(string));
}
Пример #5
0
xpc_object_t
xpc_double_create(double value)
{
	xpc_u val;

	val.d = value;
	return _xpc_prim_create(_XPC_TYPE_DOUBLE, val, 1);
}
Пример #6
0
xpc_object_t
xpc_date_create(int64_t interval)
{
	xpc_u val;

	val.i = interval;
	return _xpc_prim_create(_XPC_TYPE_DATE, val, 1);
}
Пример #7
0
xpc_object_t
xpc_uint64_create(uint64_t value)
{
	xpc_u val;

	val.ui = value;
	return _xpc_prim_create(_XPC_TYPE_UINT64, val, 1);
}
Пример #8
0
xpc_object_t
xpc_bool_create(bool value)
{
	xpc_u val;

	val.b = value;
	return _xpc_prim_create(_XPC_TYPE_BOOL, val, 1);
}
Пример #9
0
xpc_object_t
xpc_string_create_with_format(const char *fmt, ...)
{
	va_list ap;
	xpc_u val;

	va_start(ap, fmt);
	vasprintf(&val.str, fmt, ap);
	va_end(ap);
	return _xpc_prim_create(_XPC_TYPE_STRING, val, strlen(val.str));
}
Пример #10
0
xpc_object_t
xpc_date_create_from_current(void)
{
	xpc_u val;
	struct timespec tp;

	clock_gettime(CLOCK_REALTIME, &tp);

	val.ui = *(uint64_t *)&tp;
	return _xpc_prim_create(_XPC_TYPE_DATE, val, 1);
}
Пример #11
0
xpc_object_t
xpc_array_create(const xpc_object_t *objects, size_t count)
{
	struct xpc_object *xo;
	size_t i;
	xpc_u val;

	xo = _xpc_prim_create(_XPC_TYPE_ARRAY, val, 0);
	
	for (i = 0; i < count; i++)
		xpc_array_append_value(xo, objects[i]);

	return (xo);
}
Пример #12
0
xpc_object_t
xpc_copy(xpc_object_t obj)
{
	struct xpc_object *xo, *xotmp;
	const void *newdata;

	xo = obj;
	switch (xo->xo_xpc_type) {
		case _XPC_TYPE_BOOL:
		case _XPC_TYPE_INT64:
		case _XPC_TYPE_UINT64:
		case _XPC_TYPE_DATE:
		case _XPC_TYPE_ENDPOINT:
			return _xpc_prim_create(xo->xo_xpc_type, xo->xo_u, 1);

		case _XPC_TYPE_STRING:
			return xpc_string_create(strdup(
			    xpc_string_get_string_ptr(xo)));

		case _XPC_TYPE_DATA:
			newdata = xpc_data_get_bytes_ptr(obj);
			return (xpc_data_create(newdata,
			    xpc_data_get_length(obj)));

		case _XPC_TYPE_DICTIONARY:
			xotmp = xpc_dictionary_create(NULL, NULL, 0);
			xpc_dictionary_apply(obj, ^(const char *k, xpc_object_t v) {
			    xpc_dictionary_set_value(xotmp, k, xpc_copy(v));
			    return (bool)true;
			});
			return (xotmp);

		case _XPC_TYPE_ARRAY:
			xotmp = xpc_array_create(NULL, 0);
			xpc_array_apply(obj, ^(size_t idx, xpc_object_t v) {
			    xpc_array_set_value(xotmp, idx, xpc_copy(v));
			    return ((bool)true);
			});
Пример #13
0
xpc_object_t
xpc_null_create(void)
{
	xpc_u val;
	return _xpc_prim_create(_XPC_TYPE_NULL, val, 0);
}