diff options
author | Chris Robinson <[email protected]> | 2014-07-06 03:27:39 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2014-07-06 03:27:39 -0700 |
commit | d0a64fe191aabe085cabe1737c44ff6a47a3d4d8 (patch) | |
tree | a22024a773333fd6beb4e1af95af5497477045bd /Alc/vector.h | |
parent | 5de7271bcd4df9a26301a37ed9cf76ddc6641328 (diff) |
Don't require pre-declaring vector types
Diffstat (limited to 'Alc/vector.h')
-rw-r--r-- | Alc/vector.h | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/Alc/vector.h b/Alc/vector.h index 5e169f24..944cccc2 100644 --- a/Alc/vector.h +++ b/Alc/vector.h @@ -11,15 +11,23 @@ typedef struct vector__s { ALsizei Size; } *vector_; -#define DECL_VECTOR(T) typedef struct vector_##T##_s { \ +#define TYPEDEF_VECTOR(T, N) typedef struct { \ ALsizei Capacity; \ ALsizei Size; \ T Data[]; \ -} *vector_##T; \ -typedef const struct vector_##T##_s *const_vector_##T; +} _##N; \ +typedef _##N* N; \ +typedef const _##N* const_##N; -#define VECTOR_INIT(_x) do { (_x) = NULL; } while(0) -#define VECTOR_DEINIT(_x) do { free((_x)); (_x) = NULL; } while(0) +#define VECTOR(T) struct { \ + ALsizei Capacity; \ + ALsizei Size; \ + T Data[]; \ +}* + +#define VECTOR_INIT(_x) do { (_x) = NULL; } while(0) +#define VECTOR_INIT_STATIC() NULL +#define VECTOR_DEINIT(_x) do { free((_x)); (_x) = NULL; } while(0) /* Helper to increase a vector's reserve. Do not call directly. */ ALboolean vector_reserve(void *ptr, size_t base_size, size_t obj_count, size_t obj_size, ALboolean exact); @@ -63,7 +71,7 @@ ALboolean vector_insert(void *ptr, size_t base_size, size_t obj_size, void *ins_ _t *_iter = VECTOR_ITER_BEGIN((_x)); \ _t *_end = VECTOR_ITER_END((_x)); \ for(;_iter != _end;++_iter) \ - (_f)(_iter); \ + _f(_iter); \ } while(0) #endif /* AL_VECTOR_H */ |