/* Freetype GL - A C OpenGL Freetype engine
*
* Distributed under the OSI-approved BSD 2-Clause License. See accompanying
* file `LICENSE` for more details.
*/
extern "C" __cplusplus
namespace ftgl
/**
* @file vector.h
* @author Nicolas Rougier (Nicolas.Rougier@inria.fr)
*
* @defgroup vector Vector
*
* The vector structure and accompanying functions loosely mimic the STL C++
* vector class. It is used by @ref texture-atlas (for storing nodes), @ref
* texture-font (for storing glyphs) and @ref font-manager (for storing fonts).
* More information at http://www.cppreference.com/wiki/container/vector/start
*
* <b>Example Usage</b>:
* @code
* #include "vector.h"
*
* int main( int arrgc, char *argv[] )
* {
* int i,j = 1;
* vector_t * vector = vector_new( sizeof(int) );
* vector_push_back( &i );
*
* j = * (int *) vector_get( vector, 0 );
* vector_delete( vector);
*
* return 0;
* }
* @endcode
*
* @{
*/
/**
* Generic vector structure.
*
* @memberof vector
*/
typedef struct vector_t
vector_t;
/**
* Creates a new empty vector.
*
* @param item_size item size in bytes
* @return a new empty vector
*
*/
vector_t *
;
/**
* Deletes a vector.
*
* @param self a vector structure
*
*/
void
;
/**
* Returns a pointer to the item located at specified index.
*
* @param self a vector structure
* @param index the index of the item to be returned
* @return pointer on the specified item
*/
const void *
;
/**
* Returns a pointer to the first item.
*
* @param self a vector structure
* @return pointer on the first item
*/
const void *
;
/**
* Returns a pointer to the last item
*
* @param self a vector structure
* @return pointer on the last item
*/
const void *
;
/**
* Check if an item is contained within the vector.
*
* @param self a vector structure
* @param item item to be searched in the vector
* @param cmp a pointer a comparison function
* @return 1 if item is contained within the vector, 0 otherwise
*/
int
;
/**
* Checks whether the vector is empty.
*
* @param self a vector structure
* @return 1 if the vector is empty, 0 otherwise
*/
int
;
/**
* Returns the number of items
*
* @param self a vector structure
* @return number of items
*/
size_t
;
/**
* Reserve storage such that it can hold at last size items.
*
* @param self a vector structure
* @param size the new storage capacity
*/
void
;
/**
* Returns current storage capacity
*
* @param self a vector structure
* @return storage capacity
*/
size_t
;
/**
* Decrease capacity to fit actual size.
*
* @param self a vector structure
*/
void
;
/**
* Removes all items.
*
* @param self a vector structure
*/
void
;
/**
* Replace an item.
*
* @param self a vector structure
* @param index the index of the item to be replaced
* @param item the new item
*/
void
;
/**
* Erase an item.
*
* @param self a vector structure
* @param index the index of the item to be erased
*/
void
;
/**
* Erase a range of items.
*
* @param self a vector structure
* @param first the index of the first item to be erased
* @param last the index of the last item to be erased
*/
void
;
/**
* Appends given item to the end of the vector.
*
* @param self a vector structure
* @param item the item to be inserted
*/
void
;
/**
* Removes the last item of the vector.
*
* @param self a vector structure
*/
void
;
/**
* Resizes the vector to contain size items
*
* If the current size is less than size, additional items are appended and
* initialized with value. If the current size is greater than size, the
* vector is reduced to its first size elements.
*
* @param self a vector structure
* @param size the new size
*/
void
;
/**
* Insert a single item at specified index.
*
* @param self a vector structure
* @param index location before which to insert item
* @param item the item to be inserted
*/
void
;
/**
* Insert raw data at specified index.
*
* @param self a vector structure
* @param index location before which to insert item
* @param data a pointer to the items to be inserted
* @param count the number of items to be inserted
*/
void
;
/**
* Append raw data to the end of the vector.
*
* @param self a vector structure
* @param data a pointer to the items to be inserted
* @param count the number of items to be inserted
*/
void
;
/**
* Sort vector items according to cmp function.
*
* @param self a vector structure
* @param cmp a pointer a comparison function
*/
void
;
/** @} */
}
}
/* __VECTOR_H__ */