Loading...
Searching...
No Matches
Array
Utilities

An array object. More...

## Files

file | array.h
| pipewire/array.h

## Data Structures

struct | pw_array

## Macros

#define | PW_ARRAY_INIT(extend)
| Initialize an array.
#define | pw_array_get_len_s(a, s)
| Return the length of an array.
#define | pw_array_get_unchecked_s(a, idx, s, t)
#define | pw_array_check_index_s(a, idx, s)
#define | pw_array_get_len(a, t)
| Get the number of items of type t in array.
#define | pw_array_get_unchecked(a, idx, t)
| Get the item with index idx and type t from array.
#define | pw_array_check_index(a, idx, t)
| Check if an item with index idx and type t exist in array.
#define | pw_array_first(a)
#define | pw_array_end(a)
#define | pw_array_check(a, p)
#define | pw_array_for_each(pos, array)
#define | pw_array_consume(pos, array)
#define | pw_array_remove(a, p)

## Functions

PW_API_ARRAY void | pw_array_init (struct pw_array *arr, size_t extend)
| Initialize the array with given extend.
PW_API_ARRAY void | pw_array_clear (struct pw_array *arr)
| Clear the array.
PW_API_ARRAY void | pw_array_init_static (struct pw_array *arr, void *data, size_t size)
| Initialize a static array.
PW_API_ARRAY void | pw_array_reset (struct pw_array *arr)
| Reset the array.
PW_API_ARRAY int | pw_array_ensure_size (struct pw_array *arr, size_t size)
| Make sure size bytes can be added to the array.
PW_API_ARRAY void * | pw_array_add (struct pw_array *arr, size_t size)
| Add ref size bytes to arr.
PW_API_ARRAY int | pw_array_add_ptr (struct pw_array *arr, void *ptr)
| Add a pointer to array.

## Detailed Description

An array object.

The array is a dynamically resizable data structure that can hold items of the same size.

## Macro Definition Documentation

## PW_ARRAY_INIT

#define PW_ARRAY_INIT | ( |  | extend | ) |

Value:
((struct pw_array) { NULL, 0, 0, (extend) })
pw_array
Definition array.h:38

Initialize an array.

The new array is empty.

## pw_array_get_len_s

#define pw_array_get_len_s | ( |  | a,
|  |  | s )

Value:
((a)->size / (s))

Return the length of an array.

## pw_array_get_unchecked_s

#define pw_array_get_unchecked_s | ( |  | a,
|  |  | idx,
|  |  | s,
|  |  | t )

Value:
SPA_PTROFF((a)->data,(idx)*(s),t)
SPA_PTROFF
#define SPA_PTROFF(ptr_, offset_, type_)
Return the address (buffer + offset) as pointer of type.
Definition defs.h:222

## pw_array_check_index_s

#define pw_array_check_index_s | ( |  | a,
|  |  | idx,
|  |  | s )

Value:
((idx) < pw_array_get_len_s(a,s))
pw_array_get_len_s
#define pw_array_get_len_s(a, s)
Return the length of an array.
Definition array.h:51

## pw_array_get_len

#define pw_array_get_len | ( |  | a,
|  |  | t )

Value:
pw_array_get_len_s(a,sizeof(t))

Get the number of items of type t in array.

## pw_array_get_unchecked

#define pw_array_get_unchecked | ( |  | a,
|  |  | idx,
|  |  | t )

Value:
pw_array_get_unchecked_s(a,idx,sizeof(t),t)
pw_array_get_unchecked_s
#define pw_array_get_unchecked_s(a, idx, s, t)
Definition array.h:52

Get the item with index idx and type t from array.

No bounds check is done.

## pw_array_check_index

#define pw_array_check_index | ( |  | a,
|  |  | idx,
|  |  | t )

Value:
pw_array_check_index_s(a,idx,sizeof(t))
pw_array_check_index_s
#define pw_array_check_index_s(a, idx, s)
Definition array.h:53

Check if an item with index idx and type t exist in array.

## pw_array_first

#define pw_array_first | ( |  | a | ) |

Value:
((a)->data)

## pw_array_end

#define pw_array_end | ( |  | a | ) |

Value:
SPA_PTROFF((a)->data, (a)->size, void)

## pw_array_check

#define pw_array_check | ( |  | a,
|  |  | p )

Value:
(SPA_PTROFF(p,sizeof(*(p)),void) <= pw_array_end(a))
pw_array_end
#define pw_array_end(a)
Definition array.h:63

## pw_array_for_each

#define pw_array_for_each | ( |  | pos,
|  |  | array )

## pw_array_consume

#define pw_array_consume | ( |  | pos,
|  |  | array )

## pw_array_remove

#define pw_array_remove | ( |  | a,
|  |  | p )

## Function Documentation

## pw_array_init()

PW_API_ARRAY void pw_array_init | ( | struct pw_array * | arr,
|  | size_t | extend )

Initialize the array with given extend.

Extend needs to be > 0 or else the array will not be able to expand.

## pw_array_clear()

PW_API_ARRAY void pw_array_clear | ( | struct pw_array * | arr | ) |

Clear the array.

This should be called when pw_array_init() was called.

## pw_array_init_static()

PW_API_ARRAY void pw_array_init_static | ( | struct pw_array * | arr,
|  | void * | data,
|  | size_t | size )

Initialize a static array.

## pw_array_reset()

PW_API_ARRAY void pw_array_reset | ( | struct pw_array * | arr | ) |

Reset the array.

## pw_array_ensure_size()

PW_API_ARRAY int pw_array_ensure_size | ( | struct pw_array * | arr,
|  | size_t | size )

Make sure size bytes can be added to the array.

## pw_array_add()

PW_API_ARRAY void * pw_array_add | ( | struct pw_array * | arr,
|  | size_t | size )

Add ref size bytes to arr.

A pointer to memory that can hold at least size bytes is returned or NULL when an error occurred and errno will be set.

## pw_array_add_ptr()

PW_API_ARRAY int pw_array_add_ptr | ( | struct pw_array * | arr,
|  | void * | ptr )

Add a pointer to array.

Returns 0 on success and a negative errno style error on failure.