#ifndef _rule_h #define _rule_h //CONTROLLATO PER MEMORY LEAK - 21 NOV 2001 - MP class Rule { private: String *quantita; //[almeno, alpiu] int bound; //valore int original_bound; //valore di partenza String *unita; //[crediti, unita] String *tipo_attivita; //[corso, stage, tesi, complessivamente] String *tipo_ambito; //[corsi, settori] List *lista_ambito; //lista char* buffer; //buffer per output video //EXAMPLE: //> almeno , 5 , crediti , corso , corsi , { Meccanica_Analitica_1 } ; public: Rule(); Rule(String *qta, int bnd, String *unt, String *tpo_att, String *tpo_ambt, List *lst_ambt); ~Rule(); String *GetQta() { return quantita; } int GetBound() { return bound; } int GetOriginalBound() { return original_bound; } String *GetUnita() { return unita; } String *GetT_att() { return tipo_attivita; } String *GetT_amb() { return tipo_ambito; } List *GetL_amb() { return lista_ambito; } void SetBound(int value); Rule *Create(char *what, int riga, char *file); char *GetChar(); //OVERLOAD DELL'OPERATORE << friend ostream& operator<<(ostream& co, Rule &R) { co << *(R.quantita); co << " "; co << R.bound; co << " (" << R.original_bound << ") "; co << *(R.unita); co << " "; if(!strcmp(R.tipo_attivita->GetItem(),"corso")) { co << "in corsi "; if(!strcmp(R.tipo_ambito->GetItem(),"corsi")) co << "tra "; else co << "nei settori"; co << ": "; for(int i=0; i < R.lista_ambito->GetLen(); i++) { co << R.lista_ambito->GetData(i); if(i+1 < R.lista_ambito->GetLen()) co << ", "; } } else { if(strcmp(R.tipo_attivita->GetItem(),"complessivamente")) co << "in "; co << *(R.tipo_attivita); } co << ";"; return co; } //overload operatore == friend int operator==(Rule& left, Rule &right) { if(*(left.quantita)==*(right.quantita)) if(left.original_bound==right.original_bound) if(*(left.unita)==*(right.unita)) if(*(left.tipo_attivita)==*(right.tipo_attivita)) if(left.tipo_ambito!=NULL) if(*(left.tipo_ambito)==*(right.tipo_ambito)) if(left.lista_ambito!=NULL) if(*(left.lista_ambito)==*(right.lista_ambito)) return 1; return 0; } }; #endif