surfaces-unies/src/darray.h

52 lines
1.7 KiB
C
Raw Normal View History

/**
* \file darray.h
* \brief Implémentation de \ref darray_t et déclaration des fonctions pour ce type
*/
#ifndef DARRAY_H
#define DARRAY_H
#include <stdlib.h>
/**
* \struct darray_t
* \brief Tableau dynamique
*
* Les objets `darray_t` offrent la possibilité davoir des tableaux à taille
* variable en C, similairement aux objets `vector` en C++.
*/
typedef struct darray_s {
void *begin; /*!< Pointeur sur le premier élément du tableau */
void *end; /*!< Pointeur sur lélément situé immédiatement après le dernier élément du tableau */
size_t element_size; /*!< Taille des éléments stockés dans le tableau */
size_t capacity; /*!< Capacité maximale du tableau actuel (non destinée à lutilisateur) */
} darray_t;
/// \brief Créé un nouvel objet \ref darray_t vide
darray_t *darrayNew(size_t element_size);
/// \brief Insère un élément à lendroit pointé dans un \ref darray_t
void darrayInsert(darray_t *self, void *pos, void *elem);
/// \brief Supprime lélément pointé dans lobjet \ref darray_t
void darrayErase(darray_t *self, void *pos);
/// \brief Retourne lélément du \ref darray_t au idx-ème index
void *darrayGet(darray_t *self, size_t idx);
/// \brief Insère un élément à la fin de lélément \ref darray_t
void darrayPushBack(darray_t *self, void *elem);
/// \brief Supprime le dernier élément de lélément \ref darray_t
void darrayPopBack(darray_t *self);
/// \brief Détruit lélément \ref darray_t
void darrayDelete(darray_t *self);
size_t darraySize(darray_t *self);
/// \brief Renvoie la taille de lélément \ref darray_t
size_t darrayElemSize(darray_t *self);
#endif /* DARRAY_H */