2018-10-21 19:42:58 +00:00
|
|
|
|
/**
|
|
|
|
|
* \file darray.h
|
2018-11-24 21:01:09 +00:00
|
|
|
|
* \brief Implémentation de \ref darray et déclaration des fonctions pour ce
|
2018-11-24 20:58:55 +00:00
|
|
|
|
* type
|
2018-10-21 19:42:58 +00:00
|
|
|
|
*/
|
|
|
|
|
|
2018-11-24 20:58:55 +00:00
|
|
|
|
#ifndef SRC_DARRAY_H_
|
|
|
|
|
#define SRC_DARRAY_H_
|
2018-10-21 19:42:58 +00:00
|
|
|
|
|
2018-11-06 15:08:20 +00:00
|
|
|
|
#include "errorcodes.h"
|
2018-10-21 19:42:58 +00:00
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
|
|
/**
|
2018-11-24 21:41:29 +00:00
|
|
|
|
* \struct darray
|
2018-10-21 19:42:58 +00:00
|
|
|
|
* \brief Tableau dynamique
|
|
|
|
|
*
|
2018-11-24 21:41:29 +00:00
|
|
|
|
* Les objets `darray` offrent la possibilité d’avoir des tableaux à taille
|
2018-10-21 19:42:58 +00:00
|
|
|
|
* variable en C, similairement aux objets `vector` en C++.
|
|
|
|
|
*/
|
2018-11-24 21:41:29 +00:00
|
|
|
|
typedef struct {
|
2018-10-21 19:42:58 +00:00
|
|
|
|
void *begin; /*!< Pointeur sur le premier élément du tableau */
|
2018-11-24 20:58:55 +00:00
|
|
|
|
void *end; /*!< Pointeur sur l’élément situé immédiatement après le dernier
|
|
|
|
|
élément du tableau */
|
2018-10-21 19:42:58 +00:00
|
|
|
|
size_t element_size; /*!< Taille des éléments stockés dans le tableau */
|
2018-11-24 20:58:55 +00:00
|
|
|
|
size_t capacity; /*!< Capacité maximale du tableau actuel (non destinée à
|
|
|
|
|
l’utilisateur) */
|
2018-11-03 15:35:06 +00:00
|
|
|
|
} 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
|
2018-11-24 20:58:55 +00:00
|
|
|
|
void darrayInsert(darray *self, void *pos, void *elem);
|
2018-11-03 15:35:06 +00:00
|
|
|
|
/// \brief Supprime l’élément pointé dans l’objet \ref darray
|
2018-11-24 20:58:55 +00:00
|
|
|
|
void darrayErase(darray *self, void *pos);
|
2018-11-03 15:35:06 +00:00
|
|
|
|
/// \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
|
2018-11-24 20:58:55 +00:00
|
|
|
|
void darrayPushBack(darray *self, void *elem);
|
2018-11-03 15:35:06 +00:00
|
|
|
|
/// \brief Supprime le dernier élément de l’élément \ref darray
|
2018-11-24 20:58:55 +00:00
|
|
|
|
void darrayPopBack(darray *self);
|
2018-11-03 15:35:06 +00:00
|
|
|
|
/// \brief Détruit l’élément \ref darray
|
2018-11-24 20:58:55 +00:00
|
|
|
|
void darrayDelete(darray *self);
|
2018-11-03 15:35:06 +00:00
|
|
|
|
/// \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);
|
2018-10-21 19:42:58 +00:00
|
|
|
|
|
2018-11-24 20:58:55 +00:00
|
|
|
|
#endif /* SRC_DARRAY_H_ */
|