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/route.h

54 lines
2.2 KiB
C

#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include "calcul.h"
#include "../Headers/structures.h"
/**
* @brief Créer le tableau de route.
*
* Cette fonction traite le tableau de point pour regrouper en routes ceux qui doivent l'être.
* Marque par l'attribut ROUTE les points POINTES (pas de recopie, dépandance du tableau de points).
* Pointe les agglomérats début et fin de route. NULL si pas d'attache (fichier corrompu, saut).
*
* @param tabPoint Tableau de points général
* @param tailleP Taille du tableau de points général
* @param tabAgglo Tableau des agglomérats de points
* @param tailleA Taille du tableau d'agglomérats
* @param tabRoute Tableau de routes qui va être alloué et rempli dans cette fonction
* @param tailleR Taille du tableau de routes. Sera initialisé dans cette fonction.
* @return Retourne une valeur d'erreur définie dans 'structures.h'. SUCCESS en cas de réussite.
*/
ErrEnum repereRoute(Point *tabPoint, const uint32_t tailleP, Agglomerat *tabAgglo, const uint32_t tailleA, Route **tabRoute, uint32_t *tailleR);
/**
* @brief Fait pointer les routes sur les agglomérats associés si cela est possible.
*
* Si aucun agglomérat n'est disponible (trop éloigné donc risque de saut, ou encore route
* en début et fin de fichier), met les pointeurs à NULL.
*
* @param tmp Route sur laquelle on travaille.
* @param tabPoint Tableau de points général
* @param tailleP Taille du tableau de points général
* @param tabAgglo Tableau des agglomérats de points
* @param tailleA Taille du tableau d'agglomérats
* @param debutRoute Contient l'indice du premier point de la route dans le tabPoint
* @param finRoute Contient l'indice du dernier point de la route dans le tabPoint
* @return void
*/
void pointageSurAgglo(Route *tmp, const Point *tabPoint, const uint32_t tailleP, Agglomerat *tabAgglo, const uint32_t tailleA, const uint32_t debutRoute, const uint32_t finRoute);
/**
* @brief Libère la totalité de la mémoire du tableau de routes.
*
* @param tabRoute Tableau de route à free.
* @param tailleR Taille de tabRoute.
* @return SUCCESS
*/
ErrEnum detruireTabRoute(Route *tabRoute, uint32_t tailleR);