//---------------------------------------------------------------------------
#ifndef hold_kontrolH
#define hold_kontrolH
//#include <conio.h>
#include "sort&search.h"
#include "hold_skema.h"
#include "laerer_skema.h"
#include "lokale_skema.h"
//---------------------------------------------------------------------------
template <class item>
class SkemaListe
{
public:
  //konstruktør
    //Konstruktør
    SkemaListe(int max_antal_ = 1100);
    //delete konstruktør
    ~SkemaListe();
    //copy konstruktør
    SkemaListe(const SkemaListe& a);

  //access funktioner
	//Funktionen henter det næste skema på listen. Herudover returnere den
	//en sandhedsværdi om hvorvidt der er flere at hente tilbage
    bool HentNaesteSkema(item*& SkemaPtr);

    //Funktionen henter det skema som hører til det overførte ID. Herefter
	//returneres en sandhedsværdi om hvorvidt skemaet er oprettet og hvis det
	//er.. selve pointeren til skemaet som opbevares på listen.
    bool HentSkema(string ID, item*& SkemaPtr);

    //Funktionen finder udaf om der er et skema på listen der passer til det overførte
	//ID. Herefter returnere den en sandhedsværdi.
    bool FindSkema(string ID);

  //Update funktioner
    //Funktionen rester cursoren. Benýttes en ny serie skemaer ønskes hentet.
    void reset() { cursor = 0; }

    ///Funktionen opretter et nyt tomt skema til det overførte ID.
    bool NytSkema(string ID);

    ///Funktionen sletter alle skemaer på listen.
    void SletAlt(int type);

  //Udskrivs funktion
    void Udskriv();

private:
    int cursor;         //Benyttes når brugeren ønsker at traversere listen.
    int brugte;         //Angiver antallet af skemaer på listen.
    int plads;          //Angiver den plads på listen hvor et søgt skema findes
    int max_antal;      //Angiver det makismale antal af skemaer på listen.
    item* Skemaer;      //Pointer array indeholdene selve listen..
    bool sorteret;      //Angiver om listen er sorteret eller ej.
    sort<item> sort;    //Objekt af sorterings klassen.
    search<item> search;//Objekt af søgnings klassen.
    item soegt;         //Objekt der benyttes iforbindelse med søgning.
};
#include "SkemaListeTlp.template"
#endif
