1
1
mirror of https://github.com/theoludwig/libcproject.git synced 2024-12-11 21:13:00 +01:00
libcproject/lib/array_list.h

73 lines
1.3 KiB
C
Raw Normal View History

#ifndef __LIBCPROJECT_ARRAY_LIST__
#define __LIBCPROJECT_ARRAY_LIST__
#include <errno.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
2023-06-25 15:07:34 +02:00
#include "types.h"
#define ARRAY_LIST_INITIAL_CAPACITY 10
/**
* @brief A dynamic array implementation.
* @since v1.2.0
*/
struct array_list {
void** data;
size_t size;
size_t capacity;
size_t capacity_step;
};
/**
* @brief Initializes a new array list.
* @since v1.2.0
*/
struct array_list* array_list_initialization();
/**
* @brief Initializes a new array list with a capacity.
* @since v5.0.0
*/
struct array_list* array_list_initialization_with_capacity(size_t capacity);
/**
* @brief Adds an element to the end of the array list.
2023-08-09 21:08:15 +02:00
*
* @param list
* @param element
* @since v1.2.0
*/
void array_list_add(struct array_list* list, void* element);
/**
* @brief Removes an element from the array list.
2023-08-09 21:08:15 +02:00
*
* @param list
* @param index
* @since v1.2.0
*/
void array_list_remove(struct array_list* list, size_t index);
/**
* @brief Gets an element from the array list.
2023-08-09 21:08:15 +02:00
*
* @param list
* @param index
* @return void*
* @since v1.2.0
*/
void* array_list_get(struct array_list* list, size_t index);
2023-08-03 19:42:50 +02:00
/**
* @brief Frees the array list.
2023-08-09 21:08:15 +02:00
*
* @param list
2023-08-05 15:03:53 +02:00
* @since v3.0.0
2023-08-03 19:42:50 +02:00
*/
void array_list_free(struct array_list* list);
#endif