PipeWire  0.3.30
Array Objects

An array object. More...

Data Structures

struct  pw_array
 

Macros

#define PW_ARRAY_INIT(extend)   (struct pw_array) { NULL, 0, 0, extend }
 
#define pw_array_get_len_s(a, s)   ((a)->size / (s))
 
#define pw_array_get_unchecked_s(a, idx, s, t)   SPA_PTROFF((a)->data,(idx)*(s),t)
 
#define pw_array_check_index_s(a, idx, s)   ((idx) < pw_array_get_len_s(a,s))
 
#define pw_array_get_len(a, t)   pw_array_get_len_s(a,sizeof(t))
 Get the number of items of type t in array. More...
 
#define pw_array_get_unchecked(a, idx, t)   pw_array_get_unchecked_s(a,idx,sizeof(t),t)
 Get the item with index idx and type t from array. More...
 
#define pw_array_check_index(a, idx, t)   pw_array_check_index_s(a,idx,sizeof(t))
 Check if an item with index idx and type t exist in array. More...
 
#define pw_array_first(a)   ((a)->data)
 
#define pw_array_end(a)   SPA_PTROFF((a)->data, (a)->size, void)
 
#define pw_array_check(a, p)   (SPA_PTROFF(p,sizeof(*p),void) <= pw_array_end(a))
 
#define pw_array_for_each(pos, array)
 
#define pw_array_consume(pos, array)
 
#define pw_array_remove(a, p)
 
#define pw_array_add_ptr(a, p)    *((void**) pw_array_add(a, sizeof(void*))) = (p)
 Add a pointer to array. More...
 

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_add_ptr

#define pw_array_add_ptr (   a,
 
)     *((void**) pw_array_add(a, sizeof(void*))) = (p)

Add a pointer to array.

◆ pw_array_check

#define pw_array_check (   a,
 
)    (SPA_PTROFF(p,sizeof(*p),void) <= pw_array_end(a))

◆ pw_array_check_index

#define pw_array_check_index (   a,
  idx,
 
)    pw_array_check_index_s(a,idx,sizeof(t))

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

◆ pw_array_check_index_s

#define pw_array_check_index_s (   a,
  idx,
 
)    ((idx) < pw_array_get_len_s(a,s))

◆ pw_array_consume

#define pw_array_consume (   pos,
  array 
)
Value:
for (pos = (__typeof__(pos)) pw_array_first(array); \
pw_array_check(array, pos); \
pos = (__typeof__(pos)) pw_array_first(array))

◆ pw_array_end

#define pw_array_end (   a)    SPA_PTROFF((a)->data, (a)->size, void)

◆ pw_array_first

#define pw_array_first (   a)    ((a)->data)

◆ pw_array_for_each

#define pw_array_for_each (   pos,
  array 
)
Value:
for (pos = (__typeof__(pos)) pw_array_first(array); \
pw_array_check(array, pos); \
(pos)++)

◆ pw_array_get_len

#define pw_array_get_len (   a,
 
)    pw_array_get_len_s(a,sizeof(t))

Get the number of items of type t in array.

◆ pw_array_get_len_s

#define pw_array_get_len_s (   a,
 
)    ((a)->size / (s))

◆ pw_array_get_unchecked

#define pw_array_get_unchecked (   a,
  idx,
 
)    pw_array_get_unchecked_s(a,idx,sizeof(t),t)

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

◆ pw_array_get_unchecked_s

#define pw_array_get_unchecked_s (   a,
  idx,
  s,
 
)    SPA_PTROFF((a)->data,(idx)*(s),t)

◆ PW_ARRAY_INIT

#define PW_ARRAY_INIT (   extend)    (struct pw_array) { NULL, 0, 0, extend }

◆ pw_array_remove

#define pw_array_remove (   a,
 
)
Value:
({ \
(a)->size -= sizeof(*(p)); \
memmove(p, SPA_PTROFF((p), sizeof(*(p)), void), \
})
pw_array_first
#define pw_array_first(a)
Definition: array.h:68
SPA_PTRDIFF
#define SPA_PTRDIFF(p1, p2)
Definition: defs.h:172
SPA_PTROFF
#define SPA_PTROFF(ptr_, offset_, type_)
Return the address (buffer + offset) as pointer of type.
Definition: defs.h:159
spa_pod::size
uint32_t size
Definition: pod/pod.h:51
pw_array_end
#define pw_array_end(a)
Definition: array.h:69