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
Xysto 98bf635cf4 Commit un peu gros mais j'ai oublié de le faire plus tôt. Détails ci-dessous.
1 : Modification du repérage des routes. La fonction identifie maintenant 2 routes distinctes et non plus une unique route avec un saut temporelle au milieu le cas échéant.
2 : Strucures. Ajout de la structure AgglomeratGlobal qui contiendra un tableau pointant vers les agglomérats se chevauchant dans l'espace. UNIQUEMENT DESTINE AU MODE GLOBAL.
3 : Changement de mon main de test. Oh les gars ! On prévient quand on change le nom des fichiers ! Ca a fait planter mon prog de test ! (mais ce point est inutile pour vous xD)
4 : Assemblage global. La fonction d'assemblage global des agglomérats est fonctionnelle. Reste peu précise pour une raison que je dois identifier. NE L'UTILISEZ PAS !
2017-01-12 21:04:32 +01:00

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);