surfaces-unies/src/darray.h

52 lines
1.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* \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 */