From 36081dd9b00577970250199f154089c729a7d8ff Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Thu, 23 Feb 2017 15:50:47 -0500 Subject: [PATCH] more consistent style and added a sort function for vec.h --- source/vec.h | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/source/vec.h b/source/vec.h index 2abfd3f..c7b6113 100644 --- a/source/vec.h +++ b/source/vec.h @@ -3,6 +3,14 @@ @author Michael D. Lowis @license BSD 2-clause License */ +#ifndef VEC_H +#define VEC_H + +#include +#include +#include +#include +#include typedef struct { size_t elem_count; @@ -11,6 +19,8 @@ typedef struct { uint8_t* elem_buffer; } vec_t; +typedef int (*vec_cmpfn_t)(const void*,const void*); + #ifndef DEFAULT_VEC_CAPACITY #define DEFAULT_VEC_CAPACITY (size_t)8 #endif @@ -42,28 +52,23 @@ static size_t vec_next_capacity(size_t req_size) { /* Find the next highest power of 2 */ next_power--; for (bit_n = 1; bit_n < num_bits; bit_n = bit_n << 1) - { next_power = next_power | (next_power >> bit_n); - } next_power++; return next_power; } static void vec_reserve(vec_t* vec, size_t size) { - vec->elem_buffer = realloc(vec->elem_buffer, size * vec->elem_size); - vec->elem_count = size; + vec->elem_buffer = realloc(vec->elem_buffer, size * vec->elem_size); + vec->elem_capacity = size; } static void vec_resize(vec_t* vec, size_t count, void* fillval) { - if (count > vec->elem_count) - { + if (count > vec->elem_count) { vec_reserve(vec, vec_next_capacity(count+1)); for (; vec->elem_count < count; vec->elem_count++) memcpy(&(vec->elem_buffer[vec->elem_count * vec->elem_size]), fillval, vec->elem_size); - } - else if (count < vec->elem_count) - { + } else if (count < vec->elem_count) { vec->elem_count = count; } } @@ -107,3 +112,9 @@ static void vec_pop_back(vec_t* vec, void* outdata) { static void vec_clear(vec_t* vec) { vec->elem_count = 0; } + +static void vec_sort(vec_t* vec, int (*cmpfn)(const void*,const void*)) { + qsort(vec->elem_buffer, vec->elem_count, vec->elem_size, cmpfn); +} + +#endif /* VEC_H */ -- 2.54.0