/** * \file darray.h * \brief Implémentation de \ref darray et déclaration des fonctions pour ce * type */ #ifndef SRC_DARRAY_H_ #define SRC_DARRAY_H_ #include "errorcodes.h" #include #include /** * \struct darray * \brief Tableau dynamique * * Les objets `darray` offrent la possibilité d’avoir des tableaux à taille * variable en C, similairement aux objets `vector` en C++. */ typedef struct { 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 */ uint64_t element_size; /*!< Taille des éléments stockés dans le tableau */ uint64_t capacity; /*!< Capacité maximale du tableau actuel */ } darray; /// \brief Créé un nouvel objet \ref darray vide darray *darrayNew(uint64_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, uint64_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 uint64_t darraySize(darray *self); /// \brief Renvoie la taille de l’élément \ref darray uint64_t darrayElemSize(darray *self); #endif /* SRC_DARRAY_H_ */