-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathvector.h
More file actions
43 lines (26 loc) · 863 Bytes
/
Copy pathvector.h
File metadata and controls
43 lines (26 loc) · 863 Bytes
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
35
36
37
38
39
40
41
/* Ken Sheedlo
* kmdata Data Structures Library
* Vector implementation. */
#include<stdio.h>
#include<stdint.h>
#include<stdlib.h>
#include<string.h>
#define VEC_MINIMUM_SIZE 100
#define VEC_RESIZE_FACTOR 2
#define VEC_MAX(a,b) ((a)>(b) ? (a) : (b))
typedef struct {
void **data;
size_t data_length;
size_t size;
} vector_t;
/* Private functions. */
int _vec_resize(vector_t *vec, size_t new_size);
/* Public API */
void vec_init(vector_t *vec, size_t size);
void vec_clear(vector_t *vec, int32_t free_data);
void vec_add(vector_t *vec, void *value);
void *vec_get(vector_t *vec, int32_t i);
void *vec_remove(vector_t *vec, int32_t i);
void *vec_set(vector_t *vec, int32_t i, void *value);
void *vec_addi(vector_t *vec, int32_t i, void *value);
void vec_print(FILE *output, vector_t *vec, void (*disp)(FILE *, const void *));