April 22, 2006 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

### SYNOPSIS

```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`)
```void``*` prop_data_data(```prop_data_t data`)
```size_t` prop_data_size(```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 property container object library first appeared in NetBSD4.0.