gwion-util
utilities for the Gwion project
Loading...
Searching...
No Matches
vector.h
Go to the documentation of this file.
1
5#pragma once
6
7typedef struct Vector_ {
10
12ANN extern void vector_init(const Vector);
13ANN extern Vector vector_copy(MemPool p, const Vector);
14ANN extern void vector_copy2(const __restrict__ Vector, __restrict__ Vector);
15ANN extern m_int vector_find(const Vector, const vtype);
16
17ANN static inline void vector_set(const Vector v, const vtype i,
18 const vtype arg) {
19 VPTR(v, i) = arg;
20}
21ANN static inline vtype vector_front(const struct Vector_ *v) { return VPTR(v, 0); }
22ANN static inline vtype vector_at(const struct Vector_ *v, const vtype i) {
23 return VPTR(v, i);
24}
25ANN static inline vtype vector_back(const struct Vector_ *v) {
26 return VPTR(v, VLEN(v) - 1);
27}
28ANN static inline vtype vector_size(const struct Vector_ *v) { return VLEN(v); }
29
30extern ANN void vector_add(const Vector, const vtype);
31extern ANN void vector_rem(const Vector, const vtype);
32extern ANN bool vector_rem2(const Vector, const vtype);
33extern ANN vtype vector_pop(const Vector);
34extern ANN void vector_clear(const Vector);
35extern ANN void free_vector(MemPool p, const Vector);
36extern ANN void vector_release(const Vector);
37
38ANN static inline void vector_realloc(const Vector v) {
39 if ((OFFSET + (VLEN(v) << 1) + 1) > VCAP(v))
40 v->ptr = (m_uint *)xrealloc(v->ptr, (VCAP(v) <<= 1) * SZ_INT);
41}
#define OFFSET
Definition container.h:7
#define VLEN(v)
Definition container.h:8
uintptr_t vtype
Definition container.h:12
#define VCAP(v)
Definition container.h:9
#define VPTR(v, i)
Definition container.h:10
#define ANN
Definition defs.h:18
#define ANEW
Definition defs.h:21
uintptr_t m_uint
Definition gwcommon.h:12
#define SZ_INT
Definition gwcommon.h:19
intptr_t m_int
Definition gwcommon.h:11
struct MemPool_ * MemPool
vtype * ptr
Definition vector.h:8
void void * arg
Definition threadpool.h:26
ANN void vector_init(const Vector)
Definition vector.c:3
ANN Vector vector_copy(MemPool p, const Vector)
Definition vector.c:32
static ANN void vector_set(const Vector v, const vtype i, const vtype arg)
Definition vector.h:17
ANN void vector_clear(const Vector)
Definition vector.c:67
ANN void free_vector(MemPool p, const Vector)
Definition vector.c:16
static ANN vtype vector_size(const struct Vector_ *v)
Definition vector.h:28
static ANN vtype vector_back(const struct Vector_ *v)
Definition vector.h:25
static ANN vtype vector_at(const struct Vector_ *v, const vtype i)
Definition vector.h:22
ANN void vector_copy2(const __restrict__ Vector, __restrict__ Vector)
ANN bool vector_rem2(const Vector, const vtype)
Definition vector.c:53
static ANN void vector_realloc(const Vector v)
Definition vector.h:38
ANEW ANN Vector new_vector(MemPool p)
Definition vector.c:8
static ANN vtype vector_front(const struct Vector_ *v)
Definition vector.h:21
ANN void vector_release(const Vector)
Definition vector.c:14
ANN void vector_rem(const Vector, const vtype)
Definition vector.c:44
ANN vtype vector_pop(const Vector)
Definition vector.c:61
ANN m_int vector_find(const Vector, const vtype)
Definition vector.c:38
ANN void vector_add(const Vector, const vtype)
Definition vector.c:21
struct Vector_ * Vector
static ANEW void * xrealloc(void *p, const m_uint sz)
Definition xalloc.h:23