This repository has been archived on 2023-11-03. You can view files and clone it, but cannot push or open issues or pull requests.
GINPA/Modele/destruction.h

73 lines
2.8 KiB
C

#pragma once
#include "../Controleur/controleur.h"
/**
* @brief Désalloue un tableau de pointeurs (alloué dynamiquement également).
*
* @param tab Tableau de pointeurs à désallouer.
* @param nbElements Nombre d'éléments dans le tableau à désallouer.
* @return Procédure.
*/
void freeTabGeneric(void ***tab, uint32_t nbElements);
/**
* @brief Détruit un tableau d'objets de type 'sfCircleShape' grâce à leur adresse.
*
* @param nbElements Nombre d'éléments à détruire.
* @param tabPointeursCercle Tableau contenant les adresses des cercles à détruire.
* @return Procédure.
*/
void detruireCercles(const uint32_t nbElements, sfCircleShape *tabPointeursCercle[nbElements]);
/**
* @brief Détruit un tableau d'objets de type 'sfVertexArray' grâce à leur adresse.
*
* @param nbRoutes Nombre de Routes à détruire.
* @param tabPointeursVertex Tableau contenant les adresses des "lignes" à détruire.
* @return Procédure.
*/
void detruireVertexArray(const uint32_t nbRoutes, sfVertexArray *tabPointeursVertex[nbRoutes]);
/**
* @brief Une simple fonction qui sera appelée lors de la fin du programme grâce à 'atexit()'.
*
* @return Procédure.
*/
void cleaningFunction(void);
/**
* @brief Libère la mémoire des éléments affichés sur une carte, et la carte elle-même
*
* @param carte Un pointeur sur une carte dont la mémoire est à supprimer !
* @param nbPointsAffiches Nombre de points affichés sur la carte.
* @param tabPointeursCercle Tableau de pointeurs sur les cercles affichés.
* @param nbAgglosAffiches Nombre d'agglomérats affichés.
* @param tabPointeursCercleAgglos Tableau de pointeurs sur les cercles des agglomérats affichés.
* @param nbRoutes Nombre de routes affichées !
* @param tabPointeursVertex Tableau de pointeurs sur les tableaux de vertex affichés.
* @return Procédure.
*/
void libererMemoireElementsAffiches(Carte *const carte, uint32_t nbPointsAffiches, sfCircleShape *tabPointeursCercle[nbPointsAffiches], uint32_t nbAgglosAffiches, sfCircleShape *tabPointeursCercleAgglos[nbAgglosAffiches], uint32_t nbRoutes, sfVertexArray *tabPointeursVertex[nbRoutes]);
/**
* @brief Libère la mémoire des éléments affichés sur une carte, et la carte elle-même
*
* /!\ Attention: Surcharge partielle de la fonction ci-dessus.
*
* @param carte Un pointeur sur une carte dont la mémoire est à supprimer !
* @param nbAgglossAffiches Nombre de points affichés sur la carte.
* @param tabPointeursCercleAgglos Tableau de pointeurs sur les cercles des agglomérats affichés.
* @return Procédure.
*/
void libererMemoireElementsAffichesAgglos(Carte *const carte, const uint32_t nbAgglosAffiches, sfCircleShape *tabPointeursCercleAgglos[nbAgglosAffiches]);
/**
* @brief Libère un sprite et le met à NULL.
*
* @param Pointeur sur le sprite à libérer.
* @return Procédure
*/
void freeSprite(sfSprite **sprite);