/******************************************
*
* 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;
}