| qbarray.h | qbarray.h | |||
|---|---|---|---|---|
| skipping to change at line 39 | skipping to change at line 39 | |||
| /* *INDENT-OFF* */ | /* *INDENT-OFF* */ | |||
| #ifdef __cplusplus | #ifdef __cplusplus | |||
| extern "C" { | extern "C" { | |||
| #endif | #endif | |||
| /* *INDENT-ON* */ | /* *INDENT-ON* */ | |||
| /** | /** | |||
| * @file qbarray.h | * @file qbarray.h | |||
| * This is a dynamic array (it can grow, but without moving memory). | * This is a dynamic array (it can grow, but without moving memory). | |||
| * | ||||
| * @code | ||||
| * arr = qb_array_create_2(64, sizeof(struct my_struct), 256); | ||||
| * ... | ||||
| * res = qb_array_index(arr, idx, (void**)&my_ptr); | ||||
| * if (res < 0) { | ||||
| * return res; | ||||
| * } | ||||
| * // use my_ptr, now even if there is a grow, this pointer will be valid. | ||||
| * @endcode | ||||
| */ | */ | |||
| struct qb_array; | struct qb_array; | |||
| /** | /** | |||
| * This is an opaque data type representing an instance of an array. | * This is an opaque data type representing an instance of an array. | |||
| */ | */ | |||
| typedef struct qb_array qb_array_t; | typedef struct qb_array qb_array_t; | |||
| /** | /** | |||
| * Create an array with fixed sized elements. | * Create an array with fixed sized elements. | |||
| * | * | |||
| * @param max_elements initial max elements. | * @param max_elements initial max elements. | |||
| * @param element_size size of each element. | * @param element_size size of each element. | |||
| * @return array instance. | * @return array instance. | |||
| */ | */ | |||
| qb_array_t* qb_array_create(size_t max_elements, size_t element_size); | qb_array_t* qb_array_create(size_t max_elements, size_t element_size); | |||
| /** | /** | |||
| * Create an array with fixed sized elements. | ||||
| * | ||||
| * @param max_elements initial max elements. | ||||
| * @param element_size size of each element. | ||||
| * @param autogrow_elements the number of elements to grow automatically by | ||||
| . | ||||
| * | ||||
| * @return array instance. | ||||
| */ | ||||
| qb_array_t* qb_array_create_2(size_t max_elements, size_t element_size, | ||||
| size_t autogrow_elements); | ||||
| /** | ||||
| * Get an element at a particular index. | * Get an element at a particular index. | |||
| * @param a array instance. | * @param a array instance. | |||
| * @param idx the index | * @param idx the index | |||
| * @param element_out the pointer to the element data. | * @param element_out the pointer to the element data. | |||
| * @return (0 == success, else -errno) | * @return (0 == success, else -errno) | |||
| */ | */ | |||
| int32_t qb_array_index(qb_array_t* a, int32_t idx, void** element_out); | int32_t qb_array_index(qb_array_t* a, int32_t idx, void** element_out); | |||
| /** | /** | |||
| * Grow the array. | * Grow the array. | |||
| * | * | |||
| * @param a array instance. | * @param a array instance. | |||
| * @param max_elements the new maximum size of the array. | * @param max_elements the new maximum size of the array. | |||
| * @return (0 == success, else -errno) | * @return (0 == success, else -errno) | |||
| */ | */ | |||
| int32_t qb_array_grow(qb_array_t* a, size_t max_elements); | int32_t qb_array_grow(qb_array_t* a, size_t max_elements); | |||
| /** | /** | |||
| * Get the number of bins used or the array. | ||||
| */ | ||||
| size_t qb_array_num_bins_get(qb_array_t* a); | ||||
| /** | ||||
| * Get the number of elements per bin. | ||||
| */ | ||||
| size_t qb_array_elems_per_bin_get(qb_array_t* a); | ||||
| /** | ||||
| * Free all the memory used by the array. | * Free all the memory used by the array. | |||
| * @param a array instance. | * @param a array instance. | |||
| */ | */ | |||
| void qb_array_free(qb_array_t * a); | void qb_array_free(qb_array_t * a); | |||
| /* *INDENT-OFF* */ | /* *INDENT-OFF* */ | |||
| #ifdef __cplusplus | #ifdef __cplusplus | |||
| } | } | |||
| #endif | #endif | |||
| /* *INDENT-ON* */ | /* *INDENT-ON* */ | |||
| End of changes. 3 change blocks. | ||||
| 0 lines changed or deleted | 33 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||