X-Git-Url: https://git.auder.net/?p=cgds.git;a=blobdiff_plain;f=src%2FVector.h;fp=src%2FVector.h;h=0f3ef588cb378da81522bd73bcc477ddbea8f8d4;hp=f6060f87c98985542f640225140fcb7b585da3e5;hb=e45132acdb58c076d5e06849fa51c26de9a7486d;hpb=1ff641f9960fa6c6081817a5641afb22fad91dcd diff --git a/src/Vector.h b/src/Vector.h index f6060f8..0f3ef58 100644 --- a/src/Vector.h +++ b/src/Vector.h @@ -18,25 +18,25 @@ * @brief Generic resizable array. */ typedef struct Vector { - void** datas; ///< Data array of fixed length (reallocated if needed). - size_t dataSize; ///< Size in bytes of a vector element. - UInt size; ///< Count elements in the vector. - UInt capacity; ///< Current maximal capacity; always larger than size. + void** datas; ///< Data array of fixed length (reallocated if needed). + size_t dataSize; ///< Size in bytes of a vector element. + UInt size; ///< Count elements in the vector. + UInt capacity; ///< Current maximal capacity; always larger than size. } Vector; /** * @brief Initialize an empty vector. */ void _vector_init( - Vector* vector, ///< "this" pointer. - size_t dataSize ///< Size in bytes of a vector element. + Vector* vector, ///< "this" pointer. + size_t dataSize ///< Size in bytes of a vector element. ); /** * @brief Return an allocated and initialized vector. */ Vector* _vector_new( - size_t dataSize ///< Size in bytes of a vector element. + size_t dataSize ///< Size in bytes of a vector element. ); /** @@ -46,43 +46,45 @@ Vector* _vector_new( * Usage: Vector* vector_new( type) */ #define vector_new(type) \ - _vector_new(sizeof(type)) +{ \ + _vector_new(sizeof(type)); \ +} /** * @brief Copy constructor (shallow copy, ok for basic types). */ Vector* vector_copy( - Vector* vector ///< "this" pointer. + Vector* vector ///< "this" pointer. ); /** * @brief Check if the vector is empty. */ bool vector_empty( - Vector* vector ///< "this" pointer. + Vector* vector ///< "this" pointer. ); /** * @brief Return current size. */ UInt vector_size( - Vector* vector ///< "this" pointer. + Vector* vector ///< "this" pointer. ); /** * @brief Reallocate internal array. */ void _vector_realloc( - Vector* vector, ///< "this" pointer. - UInt newCapacity ///< New capacity of the vector (in number of elements). + Vector* vector, ///< "this" pointer. + UInt newCapacity ///< New capacity of the vector (in number of elements). ); /** * @brief Add data at the end. */ void _vector_push( - Vector* vector, ///< "this" pointer. - void* data ///< Data to be added. + Vector* vector, ///< "this" pointer. + void* data ///< Data to be added. ); /** @@ -94,23 +96,23 @@ void _vector_push( */ #define vector_push(vector, data) \ { \ - typeof((data)) tmp = data; \ - _vector_push(vector,&tmp); \ + typeof((data)) tmp = data; \ + _vector_push(vector,&tmp); \ } /** * @brief Remove the last pushed element. */ void vector_pop( - Vector* vector ///< "this" pointer. + Vector* vector ///< "this" pointer. ); /** * @brief Get the element at given index. */ void* _vector_get( - Vector* vector, ///< "this" pointer. - UInt index ///< Index of the element to retrieve. + Vector* vector, ///< "this" pointer. + UInt index ///< Index of the element to retrieve. ); /** @@ -123,17 +125,17 @@ void* _vector_get( */ #define vector_get(vector, index, data) \ { \ - void* pData = _vector_get(vector,index); \ - data = *((typeof(&data))pData); \ + void* pData = _vector_get(vector,index); \ + data = *((typeof(&data))pData); \ } /** * @brief Set the element at given index. */ void _vector_set( - Vector* vector, ///< "this" pointer. - UInt index, ///< Index of the element to be modified. - void* data ///< Pointer to new data at given index. + Vector* vector, ///< "this" pointer. + UInt index, ///< Index of the element to be modified. + void* data ///< Pointer to new data at given index. ); /** @@ -146,22 +148,22 @@ void _vector_set( */ #define vector_set(vector, index, data) \ { \ - typeof((data)) tmp = data; \ - _vector_set(vector,index,&tmp); \ + typeof((data)) tmp = data; \ + _vector_set(vector,index,&tmp); \ } /** * @brief Clear the entire vector. */ void vector_clear( - Vector* vector ///< "this" pointer. + Vector* vector ///< "this" pointer. ); /** * @brief Destroy the vector: clear it, and free 'vector' pointer. */ void vector_destroy( - Vector* vector ///< "this" pointer. + Vector* vector ///< "this" pointer. ); //*************** @@ -172,43 +174,43 @@ void vector_destroy( * @brief Iterator on a generic vector. */ typedef struct VectorIterator { - Vector* vector; ///< Vector to be iterated. - void** current; ///< Current vector element. + Vector* vector; ///< Vector to be iterated. + void** current; ///< Current vector element. } VectorIterator; /** * @brief Obtain an iterator object, starting at vector beginning (index 0). */ VectorIterator* vector_get_iterator( - Vector* vector ///< Pointer to the vector to iterate over. + Vector* vector ///< Pointer to the vector to iterate over. ); /** * @brief (Re)set current position inside vector to beginning (0). */ void vectorI_reset_begin( - VectorIterator* vectorI ///< "this" pointer. + VectorIterator* vectorI ///< "this" pointer. ); /** * @brief (Re)set current position inside vector to end (vector->size-1). */ void vectorI_reset_end( - VectorIterator* vectorI ///< "this" pointer. + VectorIterator* vectorI ///< "this" pointer. ); /** * @brief Tell if there is some data at the current index. */ bool vectorI_has_data( - VectorIterator* vectorI ///< "this" pointer. + VectorIterator* vectorI ///< "this" pointer. ); /** * @brief Get data contained at the current index. */ void* _vectorI_get( - VectorIterator* vectorI ///< "this" pointer. + VectorIterator* vectorI ///< "this" pointer. ); /** @@ -220,16 +222,16 @@ void* _vectorI_get( */ #define vectorI_get(vectorI, data) \ { \ - void* pData = _vectorI_get(vectorI); \ - data = *((typeof(&data))pData); \ + void* pData = _vectorI_get(vectorI); \ + data = *((typeof(&data))pData); \ } /** * @brief Set the element at current index. */ void _vectorI_set( - VectorIterator* vectorI, ///< "this" pointer. - void* data ///< Data to be assigned. + VectorIterator* vectorI, ///< "this" pointer. + void* data ///< Data to be assigned. ); /** @@ -241,29 +243,29 @@ void _vectorI_set( */ #define vectorI_set(vectorI, data) \ { \ - typeof((data)) tmp = data; \ - _vectorI_set(vectorI,&tmp); \ + typeof((data)) tmp = data; \ + _vectorI_set(vectorI,&tmp); \ } /** * @brief Move current iterator position forward (toward last index). */ void vectorI_move_next( - VectorIterator* vectorI ///< "this" pointer. + VectorIterator* vectorI ///< "this" pointer. ); /** * @brief Move current iterator position backward (toward first index). */ void vectorI_move_prev( - VectorIterator* vectorI ///< "this" pointer. + VectorIterator* vectorI ///< "this" pointer. ); /** * @brief Free memory allocated for the iterator. */ void vectorI_destroy( - VectorIterator* vectorI ///< "this" pointer. + VectorIterator* vectorI ///< "this" pointer. ); #endif