//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