4 #define ArrayDef(name, type) \
5 struct Array ## name { \
9 typedef struct Array ## name Array ## name; \
10 static inline Array ## name * allocArray ## name(uint size) { \
11 Array ## name * tmp = (Array ## name *)ourmalloc(sizeof(type)); \
13 tmp->array = (type *) ourcalloc(1, sizeof(type) * size); \
16 static inline Array ## name * allocArrayInit ## name(type * array, uint size) { \
17 Array ## name * tmp = allocArray ## name(size); \
18 memcpy(tmp->array, array, size * sizeof(type)); \
21 static inline void removeElementArray ## name(Array ## name * This, uint index) { \
23 for(;index<This->size;index++) { \
24 This->array[index]=This->array[index+1]; \
27 static inline type getArray ## name(Array ## name * This, uint index) { \
28 return This->array[index]; \
30 static inline void setArray ## name(Array ## name * This, uint index, type item) { \
31 This->array[index]=item; \
33 static inline uint getSizeArray ## name(Array ## name *This) { \
36 static inline void deleteArray ## name(Array ## name *This) { \
37 ourfree(This->array); \
40 static inline type * exposeCArray ## name(Array ## name * This) { \
43 static inline void deleteInlineArray ## name(Array ## name *This) { \
44 ourfree(This->array); \
46 static inline void initArray ## name(Array ## name * This, uint size) { \
48 This->array = (type *) ourcalloc(1, sizeof(type) * size); \
50 static inline void initArrayInit ## name(Array ## name * This, type *array, uint size) { \
51 initArray ##name(This, size); \
52 memcpy(This->array, array, size * sizeof(type)); \