Page d'accueil Description du projet
/******************************************
 *
 *   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