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
|
#ifndef _SOFTSHADEROOM_MEM_H_
#define _SOFTSHADEROOM_MEM_H_
#include <memory.h>
#define ssrM_copy memcpy
#define ssrM_zero(obj, size) memset(obj, 0, size)
#define ssrM_new(T) (T*)malloc(sizeof(T))
#define ssrM_newvector(T, c) ((T*)calloc(c, sizeof(T)))
#define ssrM_free(obj) free(obj)
#define ssrM_scalevector(T, v, curlen) \
do{ \
ssr_assert(v); \
curlen <<= 1; \
v = (T*)realloc(v, sizeof(T)*curlen); \
}while(0)
#define ssrM_resizevector(T, v, curlen, tarlen) \
do { \
if(!v) \
v = (T*)calloc(tarlen, sizeof(T)); \
else \
v = (T*)realloc(v, sizeof(T)*tarlen); \
curlen = tarlen; \
}while(0)
#define ssrM_rescalevector(T, v, curlen, tarlen) \
do{ \
if (curlen >= tarlen) {} \
else {ssrM_resizevector(T, v, curlen, tarlen);} \
} while (0)
#define cast(v, T) (*(T*)(&v))
#endif
|