//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<AttrList>, 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 (TPtr &l, modo c, tipo_t t, char *valore) :
list<AttrList> (l), Attributo (t, valore) { conf = c; }; // Usa la versione generata del costruttore
int operator == (const Attributo &a); // Operatore di confronto ricorsiva
};
#endif