aboutsummaryrefslogtreecommitdiff
path: root/include/viv/dynamic_array.h
blob: 40deac61f4b473cc2259547f3c176a701356f1c5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/* http://www.martinbroadhurst.com/dynamic-array-in-c.html */

#ifndef VIV_DYNAMIC_ARRAY_H
#define VIV_DYNAMIC_ARRAY_H

#pragma once

typedef struct {
  void **buffer;
  unsigned int size;
  unsigned int count;
} VIV_DYNAMIC_ARRAY_dynamic_array;

typedef void (*VIV_DYNAMIC_ARRAY_for_function)(void *);

VIV_DYNAMIC_ARRAY_dynamic_array *VIV_DYNAMIC_ARRAY_create(unsigned int);
void VIV_DYNAMIC_ARRAY_empty(VIV_DYNAMIC_ARRAY_dynamic_array *);
void VIV_DYNAMIC_ARRAY_delete(VIV_DYNAMIC_ARRAY_dynamic_array *);
void VIV_DYNAMIC_ARRAY_add_tail(VIV_DYNAMIC_ARRAY_dynamic_array *, void *);
void VIV_DYNAMIC_ARRAY_add_head(VIV_DYNAMIC_ARRAY_dynamic_array *, void *);
void *VIV_DYNAMIC_ARRAY_remove_tail(VIV_DYNAMIC_ARRAY_dynamic_array *);
void *VIV_DYNAMIC_ARRAY_remove_head(VIV_DYNAMIC_ARRAY_dynamic_array *);
void VIV_DYNAMIC_ARRAY_insert(VIV_DYNAMIC_ARRAY_dynamic_array *, unsigned int, void *);
void *VIV_DYNAMIC_ARRAY_remove(VIV_DYNAMIC_ARRAY_dynamic_array *, unsigned int);
void *VIV_DYNAMIC_ARRAY_get(const VIV_DYNAMIC_ARRAY_dynamic_array *, unsigned int);
void *VIV_DYNAMIC_ARRAY_set(VIV_DYNAMIC_ARRAY_dynamic_array *, unsigned int, void *);
void VIV_DYNAMIC_ARRAY_for_each(
  const VIV_DYNAMIC_ARRAY_dynamic_array *,
  VIV_DYNAMIC_ARRAY_for_function
);
unsigned int VIV_DYNAMIC_ARRAY_get_count(const VIV_DYNAMIC_ARRAY_dynamic_array *);
void VIV_DYNAMIC_ARRAY_set_size(VIV_DYNAMIC_ARRAY_dynamic_array *, unsigned int);

#endif /* VIV_DYNAMIC_ARRAY_H */