/** * \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 "errorcodes.h" #include /** * \struct darray_s * \brief Tableau dynamique * * Les objets `darray_s` offrent la possibilité d’avoir 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 à l’utilisateur) */ } darray; /// \brief Créé un nouvel objet \ref darray vide darray *darrayNew(size_t element_size); /// \brief Augmente la capacité d'un \ref darray void darrayExtend(darray *self); /// \brief Insère un élément à l’endroit pointé dans un \ref darray void darrayInsert(darray *self, void *pos, void *elem); /// \brief Supprime l’élément pointé dans l’objet \ref darray void darrayErase(darray *self, void *pos); /// \brief Retourne l’élément du \ref darray au idx-ème index void *darrayGet(darray *self, size_t idx); /// \brief Insère un élément à la fin de l’élément \ref darray void darrayPushBack(darray *self, void *elem); /// \brief Supprime le dernier élément de l’élément \ref darray void darrayPopBack(darray *self); /// \brief Détruit l’élément \ref darray void darrayDelete(darray *self); /// \brief Renvoie la taille de l’élément \ref darray size_t darraySize(darray *self); /// \brief Renvoie la taille de l’élément \ref darray size_t darrayElemSize(darray *self); #endif /* DARRAY_H */