Page d'accueil Description du projet
/******************************************
 *
 *   Cedric Pradalier   2001
 *   mail : http://cedric.pradalier.free.fr/mail.html
 *
 *****************************************/



#include "bdarrets.h"
#include "output.h"
#include <stdlib.h>


/****************************************************


  Instanciation de la base d'arrets



****************************************************/














/* Lecture de la table des arrets : lecture
   sequentielle, le fichier ne doit pas etre ouvert
   Attention au format -> Regles
 
   Les arrets sont crees en memoire a ce moment, cette
   fonction est (et doit etre) la seule a instancier des arrets
 */
CBDArrets::CBDArrets(char * filename)
{
    FILE * fp;
    char temp[80];
    int i;
    if ((fp = fopen(filename,"r")) == NULL)
    {
        sprintf(outbuf,"Impossible d'ouvrir %s\n",filename);FlushBuffer();
        exit(1);
    }
    fscanf(fp,"#arrets = %d \n",&NbArrets);
    tArrets = new CArrets[NbArrets];
    fgets(temp,80,fp); // elimination de la zone de titre
    for(i=0;i<NbArrets;i++)
    {
        tArrets[i].Read(fp);
    }
    fclose(fp);
}


/* Destructeur : destruction des arrets.
   Attention, cette fonction est la seule a 
   pouvoir detruire un arret */
CBDArrets::~CBDArrets()
{
//  sprintf(outbuf,"deleting CBDArrets\n");FlushBuffer();
    delete [] tArrets;
}

void CBDArrets::Print()
{
    sprintf(outbuf,"Listes des arrets disponibles : \n");FlushBuffer();
    for(int i=0;i<NbArrets;i++)
        tArrets[i].Print();
}


/* Retourne un pointeur sur l'arret identifie par Id 
   Recherche brutale sequentielle */
CArrets * CBDArrets::Find(int Id)
{
    int i=0;
    while (i<NbArrets) 
    {
        if (tArrets[i].mId == Id)
            return &(tArrets[i]);
        i++;
    }
    return NULL;
}