PROP_DATA(3) | Library Functions Manual | PROP_DATA(3)

# NAME

`prop_data`, `prop_data_create_data`, `prop_data_create_data_nocopy`, `prop_data_copy`, `prop_data_size`, `prop_data_data`, `prop_data_data_nocopy`, `prop_data_equals`, `prop_data_equals_data` —
opaque data value property object

# LIBRARY

Property Container Object Library (libprop, -lprop)

# SYNOPSIS

`#include <prop/proplib.h>`

prop_data_t
`prop_data_create_data`(const void *blob, size_t len);

prop_data_t
`prop_data_create_data_nocopy`(const void *blob, size_t len);

prop_data_t
`prop_data_copy`(prop_data_t data);

size_t
`prop_data_size`(prop_data_t data);

void *
`prop_data_data`(prop_data_t data);

const void *
`prop_data_data_nocopy`(prop_data_t data);

bool
`prop_data_equals`(prop_data_t dat1, prop_data_t dat2);

bool
`prop_data_equals_data`(prop_data_t data, const void *blob, size_t len);

# DESCRIPTION

The `prop_data`() family of functions operate on an opaque data value property object type.

`prop_data_create_data`(const void *blob, size_t len)
  Create a data object that contains a copy of blob with size len. Returns `NULL` on failure.
`prop_data_create_data_nocopy`(const void *blob, size_t len)
  Create a data object that contains a reference to blob with size len. Returns `NULL` on failure.
`prop_data_copy`(prop_data_t data)
  Copy a data object. If the data object being copied is an external data reference, then the copy also references the same external data. Returns `NULL` on failure.
`prop_data_size`(prop_data_t data)
  Returns the size of the data object. If the supplied object isn't a data object, zero is returned.
`prop_data_data`(prop_data_t data)
  Returns a copy of the data object's contents. The caller is responsible for freeing the returned buffer. If the supplied object isn't a data object or if the data container is empty, `NULL` is returned.

  In user space, the buffer is allocated using malloc(3). In the kernel, the buffer is allocated using malloc(9) using the malloc type `M_TEMP`.

`prop_data_data_nocopy`(prop_data_t data)
  Returns an immutable reference to the contents of the data object. If the supplied object isn't a data object, `NULL` is returned.
`prop_data_equals`(prop_data_t dat1, prop_data_t dat2)
  Returns `true` if the two data objects are equivalent. If at least one of the supplied objects isn't a data object, `false` is returned.
`prop_data_equals_data`(prop_data_t data, const void *blob, size_t len)
  Returns `true` if the data object's value is equivalent to blob with size len. If the supplied object isn't a data object, `false` is returned.

# SEE ALSO

prop_array(3), prop_bool(3), prop_dictionary(3), prop_number(3), prop_object(3), prop_string(3), proplib(3)

# HISTORY

The proplib(3) property container object library first appeared in NetBSD 4.0.

April 22, 2006 | NetBSD 9.2