//Fil               : Main.cc
//Beskrivning : Huvudprogram
//Senast ändrad : 1998-03-01 Tor-Åke Fransson

#include <unistd.h>
#include <stdio.h>

#include "Def.hh"
#include "PHus.hh"
#include "Person.hh"
#ifdef _gnu_cc

#endif

#include "Bil.hh"
#include "Cykel.hh"
#include "Motorcykel.hh"

#define true 1
#define false 0

PHus *phus;

// denna behövs för att läsa bort skräp efter att strängklassen
// tagit input
void cin_flush(void);

void infart(Fordon *fordon);
void utfart();

int
main (int argc, char *argv[])
{
  char choice;

  //skapa parkeringshuset
  phus = new PHus;

  while(true)
    {
      cout << "Ge kommando: bil cykel motorcykel utfart avsluta\n";
      choice = cin.get();
      cin_flush();
      switch (choice)
         {
         case 'b':
           infart(new Bil);
           break;
         case 'c':
           infart(new Cykel);
           break;
         case 'm':
           infart(new Motorcykel);
           break;
         case 'u':
           utfart();
           break;
         case 'a':
           cout << "Thankyou for using Parking House v1.0\n";
           exit(false);
         default:
           cout << "Okänt kommando\n";
         }
    }
}


void infart(Fordon *fordon)
{
  Person kund;
  if (phus->ledigplats() < 0)
    {
      cout << " Fullt!\n";
      return;
    }
  cout << "Vad heter kunden? : ";
  cin >> kund.Namn;
  kund.Fordon = fordon;
  phus->parkera(kund);
}

void utfart(void)
{
  String namn;
  Person kund;

  cout << "Vem vill åka ut? : ";
  cin >> namn;
  if (phus->avparkera(namn, kund))
    {
      cout << "Kunden som åkte var " << kund.Namn << endl;
      cout << "Fordonet var en " << kund.Fordon->Typ() << "\n\n";
    }
  else
    cout << namn << " har inget fordon parkerat här.\n";
}

void cin_flush(void)
{
char crap[256];
cin.getline(crap, 255, '\n');
}