#include #include "config.h" #include "PCommon.h" /* * Toutes les méthodes écrites dans ce module sont communes à toutes * les files de priorités. Il s'agit de la classe "Père" dont héritent * toutes les autres files de priorités. Nous ne trouverons ici que * les constructeurs nécessaires pour la bonne opération sur les files, * ainsi que les deux routines génériques n et GenericUnion. * */ PriorityList::PriorityList(Key_t IKey, Datas_t const &IDatas):Key(IKey), Datas(IDatas) { } PriorityList::PriorityList(void):Key(0), Datas(NULL) { } PriorityList::~PriorityList(void) { } /* * Renvoie le nombre d'éléments dans la file. */ int PriorityList::n(void) { return Key; } /* * Effectue un union générique entre deux files de type différents. * Cette fonction va dépiler la deuxième file élément par éléments * et va les insérer dans la première. */ PriorityList *PriorityList::GenericUnion(PriorityList * P) { Key_t IKey; Datas_t IDatas; cerr << "Dans l'union generique\n"; while (!(P->IsEmpty())) { cerr << "Extraction de la clef " << IKey << endl; IKey = P->Extract_Min(IDatas); Insert(IKey, IDatas); } return this; } /* * Renvoie une constante sur le type de la file. Ce type est initialisé * par le constructeur des files. */ int PriorityList::GetType(void) { return type; } Key_t PriorityList::ReadKey(Cell C) { return ((PriorityList *) C)->Key; } Datas_t PriorityList::ReadDatas(Cell C) { return ((PriorityList *) C)->Datas; }