// 
// Vorlage für Übung 2 SS 2005
//
// In diesem Fall sind Funktionsrümpfe für Deklaration und Definition in einer Datei 
//


class FIFO 			// Klassendeklaration
{
  // Welche Schutzstuffe ???
    const int Laenge;		// Welche max. Laenge wird erlaubt
    char Puffer [nnn];		// statischer Puffer für die Zeichen. Achtung welcher Wert
  
    int freierSchreibIndex;	// An diese Stelle wird das nächste Zeichen geschrieben
    int geleerterLeseIndex;	// An dieser Stelle wurde beim letzten Mal das Zeichen gelesen
  
    int Inkrement (int Index) ; // Hilfsfunktion für freierSchreibIndex++
  
  //Welche Schutzstuffe sollte hier sein ??
    FIFO ();                    // Konstruktor
    //~FIFO ();                 // Destruktor
  
    void Schreiben (char Byte);
    char Lesen ();
    
    bool istLeer () ;
    bool istVoll () ;
};





inline FIFO::FIFO () : Laenge(xxx)
{
	//Wo müssen Schreib und Leseindex stehen ???
}


void FIFO::Schreiben (char Byte)
{
    // Falls der Puffer voll ist sollte man kontrolliert abbrechen !

    // Dann kann das Zeichen gespeichert werden und der Index muss erhöht werden

}

char FIFO::Lesen ()
{
    // Falls der Puffer nicht leer ist, sollten wir das Zeichen vond er nächsten Stelle lesen
    // Nach unserer Definition muss dazu erst der Index erhöht werden.

}

int FIFO::Inkrement(int Index)
{
    // Hier muss dafür gesorgt werden, dass der Index erhöht wird, aber nicht über die 
    // max. Laenge hinausgeht.
    
    // Als Rückgabe erfolgt der neue "erhöhte" Index
}

bool FIFO::istVoll (void)
{
    // Wann ist der Puffer voll -->> Testen Sie die Indexe

    // return true wenn er voll ist
}

bool FIFO::istLeer ()
{
    // Wann ist der Puffer Leer ??
}

    
