//AttrList : attrlist.h
#ifndef LISTC_H
#include "listc.h"
#endif
#ifndef ATTR_H
#include "attr.h"
#endif
#ifndef ATTRLIST_H
#define ATTRLIST_H
/* Lista di attributi: eredita sia da list che da Attributo
* Serve per costruire una lista di richieste da confrontare
* con gli attributi di un capo.
* Per ognio attributo si puo' richiedere che sia uguale,
* minore e uguale o maggiore e uguale del valore dato.
* L'attributo del capo viene confrontato con ognuna delle
* condizioni e se nessun confronto fallisce, allora
* il capo e' accettato.
* Per questo motivo, se confronto un attributo con uno di
* un tipo diverso (confronto d non eseguire), il confronto
* deve aver successo, per non bloccare la ricerca.
*/
class AttrList : public list, public Attributo
{
public :
enum modo { le, eq, ge } conf; // tipi di confronto
/* Costruttore. 'l' e' la lista a cui appendere, 'c' il tipo
* di confronto, 't' il tipo di attributo e 'valore' il valore di riferimento.
* Vengono chiamati i costruttori con parametri per 'list'
* e 'Attributo'. */
AttrList (AttrList **l, modo c, tipo_t t, char *valore) :
list ((list **) l), Attributo (t, valore) { conf = c; };
int compare (const Attributo &a); // Funzione di confronto ricorsiva
};
#endif