|
24 | 24 | #include <stdlib.h> |
25 | 25 | #include <string.h> |
26 | 26 |
|
| 27 | +// Portable UNUSED macro |
| 28 | +#if defined(_MSC_VER) |
| 29 | +#define PSLP_UNUSED |
| 30 | +#else |
| 31 | +#define PSLP_UNUSED __attribute__((unused)) |
| 32 | +#endif |
| 33 | + |
27 | 34 | // Macro to define a generic vector class |
28 | 35 | #define DEFINE_VECTOR(TYPE, TYPE_NAME) \ |
29 | 36 | typedef struct TYPE_NAME##Vec \ |
30 | 37 | { \ |
31 | 38 | TYPE *data; \ |
32 | | - size_t len; \ |
33 | | - size_t capacity; \ |
| 39 | + int len; \ |
| 40 | + int capacity; \ |
34 | 41 | } TYPE_NAME##Vec; \ |
35 | 42 | \ |
36 | | - __attribute__((unused)) static TYPE_NAME##Vec *TYPE_NAME##Vec_new( \ |
37 | | - size_t capacity) \ |
| 43 | + PSLP_UNUSED static TYPE_NAME##Vec *TYPE_NAME##Vec_new(size_t capacity) \ |
38 | 44 | { \ |
39 | 45 | assert(capacity > 0); \ |
40 | 46 | TYPE_NAME##Vec *vec = (TYPE_NAME##Vec *) malloc(sizeof(TYPE_NAME##Vec)); \ |
|
83 | 89 | } \ |
84 | 90 | \ |
85 | 91 | static inline void TYPE_NAME##Vec_append_array(TYPE_NAME##Vec *vec, \ |
86 | | - const TYPE *values, size_t n) \ |
| 92 | + const TYPE *values, int n) \ |
87 | 93 | { \ |
88 | 94 | if (vec->len + n > vec->capacity) \ |
89 | 95 | { \ |
90 | | - size_t new_capacity = vec->capacity > 0 ? vec->capacity : 1; \ |
| 96 | + int new_capacity = vec->capacity > 0 ? vec->capacity : 1; \ |
91 | 97 | while (vec->len + n > new_capacity) \ |
92 | 98 | { \ |
93 | 99 | new_capacity *= 2; \ |
|
108 | 114 | memcpy(vec->data + vec->len, values, n * sizeof(TYPE)); \ |
109 | 115 | vec->len += n; \ |
110 | 116 | } \ |
111 | | - __attribute__((unused)) static int TYPE_NAME##Vec_contains( \ |
112 | | - const TYPE_NAME##Vec *vec, TYPE value) \ |
| 117 | + PSLP_UNUSED static int TYPE_NAME##Vec_contains(const TYPE_NAME##Vec *vec, \ |
| 118 | + TYPE value) \ |
113 | 119 | { \ |
114 | | - for (size_t i = 0; i < vec->len; ++i) \ |
| 120 | + for (int i = 0; i < vec->len; ++i) \ |
115 | 121 | { \ |
116 | 122 | if (vec->data[i] == value) \ |
117 | 123 | { \ |
|
0 commit comments