-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvoArray.h
More file actions
65 lines (54 loc) · 1.31 KB
/
Copy pathvoArray.h
File metadata and controls
65 lines (54 loc) · 1.31 KB
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef __VOARRAY__
#define __VOARRAY__
#ifdef VOARRAY_DEFCONFIG
#include "voArray_defConfig.h"
#else
#include "voArray_config.h"
#endif
/* Macros */
/* These two can be used to make a private VoArray type. */
#define VOARRAY_ST(_name, _type) \
struct _name { \
_type *i; \
VOARRAY_TYPE_SIZE size; \
}
#define VOARRAY_SNAME(_name, _sName, _type) typedef VOARRAY_ST(_sName, _type) _name
/* This is the one you will probably want to use. */
#define VOARRAY(_name, _type) VOARRAY_SNAME(_name, , _type)
#define VOARRAY_UNINIT(_var) \
if (_var.i != NULL) { \
VOARRAY_FREE(_var.i); \
_var.i = NULL; \
} \
_var.size = 0;
/* Raw Size */
#define VOARRAY_INIT_RAWSIZE(_type, _var, _errRet, _size) \
_var.i = (_type *)VOARRAY_MALLOC(_size); \
if (_var.i == NULL) { \
return _errRet; \
}
#define VOARRAY_RESIZE_RAWSIZE(_type, _var, _errRet, _size) \
_var.i = (_type *)VOARRAY_REALLOC((void *)_var.i, _size); \
if (_var.i == NULL) { \
return _errRet; \
}
/* Variable Size */
#define VOARRAY_INIT(_type, _var, _errRet) \
if (_var.size) { \
VOARRAY_INIT_RAWSIZE( \
_type, \
_var, \
_errRet, \
sizeof(_type[_var.size]) \
); \
}
#define VOARRAY_RESIZE(_type, _var, _errRet) \
if (_var.size) { \
VOARRAY_RESIZE_RAWSIZE( \
_type, \
_var, \
_errRet, \
sizeof(_type[_var.size]) \
); \
}
#endif