surfaces-unies/src/darray.h

51 lines
1.8 KiB
C
Raw Permalink Normal View History

/**
* \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-11-24 20:58:55 +00:00
#ifndef SRC_DARRAY_H_
#define SRC_DARRAY_H_
#include "errorcodes.h"
#include <stdint.h>
#include <stdlib.h>
/**
2018-11-24 21:41:29 +00:00
* \struct darray
* \brief Tableau dynamique
*
2018-11-24 21:41:29 +00:00
* Les objets `darray` offrent la possibilité davoir des tableaux à taille
* variable en C, similairement aux objets `vector` en C++.
*/
2018-11-24 21:41:29 +00:00
typedef struct {
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 */
uint64_t element_size; /*!< Taille des éléments stockés dans le tableau */
uint64_t capacity; /*!< Capacité maximale du tableau actuel */
2018-11-03 15:35:06 +00:00
} darray;
/// \brief Créé un nouvel objet \ref darray vide
darray *darrayNew(uint64_t element_size);
2018-11-03 15:35:06 +00:00
/// \brief Augmente la capacité d'un \ref darray
void darrayExtend(darray *self);
/// \brief Insère un élément à lendroit 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 lobjet \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, uint64_t idx);
2018-11-03 15:35:06 +00:00
/// \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
uint64_t darraySize(darray *self);
2018-11-03 15:35:06 +00:00
/// \brief Renvoie la taille de lélément \ref darray
uint64_t darrayElemSize(darray *self);
2018-11-24 20:58:55 +00:00
#endif /* SRC_DARRAY_H_ */