/******************************************
*
* Cedric Pradalier 2001
* mail : http://cedric.pradalier.free.fr/mail.html
*
*****************************************/
#ifndef THORAIRE_H
#define THORAIRE_H
#include <stdlib.h>
class CTableHoraire;
/* Les differents type d'horaire blanc, orange bleu vert. */
typedef enum {t_blanc=0,t_orange,t_bleu,t_vert,t_aucun} TypeHoraire;
/* Le type definissant les donnees d'interpolation */
typedef struct
{
char NumArretInter;
char NbArretsInter;
char NumArretRef;
} InterPol;
#include "horaire.h"
#include "arrets.h"
#include "bdarrets.h"
#include "objet.h"
// Un tableau d'horaire est un trajet
typedef CHoraire* Trajet;
// Determine l'extension associee a un horaire
char * GetExtension(TypeHoraire t);
// Determine le type d'horaire defini par une chaine
TypeHoraire TypeofS(char * S);
/**********************************************
Classe implementant les tables d'horaires
lues dans les fichier.
Toutes les donnees d'interpol sont contenues
dedant. Le type d'horaire aussi
Fonctionnalite : trouver le trajet passant avant une
date limite
*************************************************/
class CTableHoraire : CObjet
{
public:
TypeHoraire Htype;
int NbTrajet, NbArretRef;
Trajet * Table;
CArrets ** tArretRef;
InterPol * DonneesInterpol;
CTableHoraire();
virtual ~CTableHoraire();
char * GetType();
// effet de bord : Data doit etre correctement initialise
void SetInterpol(InterPol * Data);
// Donne l'horaire interpolee de passage a arrivee sur le Trajet trajet
CHoraire Interpol(int trajet,int arret);
// Lecture de la table dans un fichier
int Read(char * filename,CBDArrets * Liste);
// Affichage standard
virtual void Print();
// Standard + Detail des arrets de references
void FullPrint();
/* Trouve le premier trajet passant en arrivee avant limite */
int FindTrajet(int IndArrivee, CHoraire limite);
/* Trouve le premier trajet avant trajet tel que
arrivee et depart sont valide */
int FindFirstTrajetValid(int trajet,int IndDepart,int IndArrivee);
// Obsolete : pour l'arret arret et le trajet trajet : trouve
// l'horaire de passage
CHoraire FindHPassage(int trajet,CArrets * arret);
};
#endif // THORAIRE_H