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.c

87 lines
1.9 KiB
C

#include "destruction.h"
void freeTabGeneric(void ***tab, uint32_t nbElements)
{
for(uint32_t i = 0; i < nbElements; i++)
{
free((*tab)[i]);
(*tab)[i] = NULL;
}
free(*tab);
*tab = NULL;
}
void detruireCercles(const uint32_t nbElements, sfCircleShape *tabPointeursCercle[nbElements])
{
for(uint32_t i = 0; i < nbElements; i++)
{
sfCircleShape_destroy(tabPointeursCercle[i]);
tabPointeursCercle[i] = NULL;
}
}
void detruireVertexArray(const uint32_t nbRoutes, sfVertexArray *tabPointeursVertex[nbRoutes])
{
for(uint32_t i = 0; i < nbRoutes; i++)
{
sfVertexArray_destroy(tabPointeursVertex[i]);
tabPointeursVertex[i] = NULL;
}
}
void cleaningFunction(void)
{
if(!access(MAPFILE, F_OK))
{
if(remove(MAPFILE) == -1)
{
fprintf(stderr, "Le fichier \"%s\" n\'a pas pu être correctement supprimé: %s\n", MAPFILE, strerror(errno));
}
}
if(!access(ADDRESSFILE, F_OK))
{
if(remove(ADDRESSFILE) == -1)
{
fprintf(stderr, "Le fichier \"%s\" n\'a pas pu être correctement supprimé: %s\n", ADDRESSFILE, strerror(errno));
}
}
}
void libererMemoireElementsAffiches(Carte *const carte, uint32_t nbPointsAffiches, sfCircleShape *tabPointeursCercle[nbPointsAffiches], uint32_t nbAgglosAffiches, sfCircleShape *tabPointeursCercleAgglos[nbAgglosAffiches], uint32_t nbRoutes, sfVertexArray *tabPointeursVertex[nbRoutes])
{
detruireCarte(carte);
cleaningFunction();
detruireCercles(nbPointsAffiches, tabPointeursCercle);
detruireCercles(nbAgglosAffiches, tabPointeursCercleAgglos);
detruireVertexArray(nbRoutes, tabPointeursVertex);
}
void libererMemoireElementsAffichesAgglos(Carte *const carte, const uint32_t nbAgglosAffiches, sfCircleShape *tabPointeursCercleAgglos[nbAgglosAffiches])
{
detruireCarte(carte);
cleaningFunction();
detruireCercles(nbAgglosAffiches, tabPointeursCercleAgglos);
}
void freeSprite(sfSprite **sprite)
{
if(*sprite != NULL)
{
sfSprite_destroy(*sprite);
*sprite = NULL;
}
}