From: Dale Weiler Date: Wed, 25 Apr 2012 19:49:20 +0000 (-0400) Subject: Make VECTOR_ more flexible for inside structures, and such. X-Git-Tag: 0.1-rc1~594^2~3 X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=commitdiff_plain;h=e6ac3671799571ed720feda35df14ccdbbbe2b07;hp=168fd244bd92a48474391eca5c48be733c860b22 Make VECTOR_ more flexible for inside structures, and such. --- diff --git a/gmqcc.h b/gmqcc.h index 4408ab2..84b8720 100644 --- a/gmqcc.h +++ b/gmqcc.h @@ -181,10 +181,13 @@ uint32_t util_crc32(const char *, int, register const short); # define mem_d(x) util_memory_d((x), __LINE__, __FILE__) #endif -#define VECTOR_MAKE(T,N) \ +/* Builds vector type (usefull for inside structures) */ +#define VECTOR_TYPE(T,N) \ T* N##_data = NULL; \ long N##_elements = 0; \ - long N##_allocated = 0; \ + long N##_allocated = 0 +/* Builds vector add */ +#define VECTOR_CORE(T,N) \ int N##_add(T element) { \ if (N##_elements == N##_allocated) { \ if (N##_allocated == 0) { \ @@ -204,6 +207,13 @@ uint32_t util_crc32(const char *, int, register const short); N##_data[N##_elements] = element; \ return N##_elements++; \ } +/* Builds a full vector inspot */ +#define VECTOR_MAKE(T,N) \ + VECTOR_TYPE(T,N); \ + VECTOR_CORE(T,N) +/* Builds a vector add function pointer for inside structures */ +#define VECTOR_IMPL(T,N) \ + int (*N##_add)(T) //=================================================================== //=========================== code.c ================================