/* * DNN - Data News Network * * by Stephane Chatty * * Copyright 1993-1995 * Centre d'Etudes de la Navigation Aerienne (CENA) * * Criteria. * * $Id$ * $CurLog$ */ #include "Criterion.h" DnnBaseCriterion :: DnnBaseCriterion () { } DnnBaseCriterion :: ~DnnBaseCriterion () { } DnnAndCriterion :: DnnAndCriterion () : DnnBaseCriterion (), Conditions () { } DnnAndCriterion :: ~DnnAndCriterion () { } DnnAndCriterion& DnnAndCriterion :: operator &= (DnnBaseCriterion& b) { Conditions.Append (&b); return *this; } DnnAndCriterion& DnnAndCriterion :: operator &= (DnnOrCriterion& b) { Conditions.Append (&b); return *this; } DnnAndCriterion& DnnAndCriterion :: operator &= (DnnAndCriterion& b) { CcuListIterOf li = b.Conditions; while (++li) Conditions.Append (*li); return *this; } bool DnnAndCriterion :: Test (DnnEvent& ev) { bool res = true; CcuListIterOf li = Conditions; while (res && ++li) #ifdef CPLUS_BUG22 res = bool (res && (*li)->Test (ev)); #else res = res && (*li)->Test (ev); #endif return res; } DnnOrCriterion :: DnnOrCriterion () : DnnBaseCriterion (), Alternatives () { } DnnOrCriterion :: ~DnnOrCriterion () { } DnnOrCriterion& DnnOrCriterion :: operator |= (DnnOrCriterion& b) { CcuListIterOf li = b.Alternatives; while (++li) Alternatives.Append (*li); return *this; } DnnOrCriterion& DnnOrCriterion :: operator |= (DnnBaseCriterion& b) { Alternatives.Append (&b); return *this; } DnnOrCriterion& DnnOrCriterion :: operator |= (DnnAndCriterion& b) { Alternatives.Append (&b); return *this; } bool DnnOrCriterion :: Test (DnnEvent& ev) { bool res = false; CcuListIterOf li = Alternatives; while (!res && ++li) #ifdef CPLUS_BUG22 res = bool (res || (*li)->Test (ev)); #else res = res || (*li)->Test (ev); #endif return res; } DnnBasicCriterion :: DnnBasicCriterion () : DnnBaseCriterion (), Check (0) { } DnnBasicCriterion :: DnnBasicCriterion (bool (*c) (DnnEvent&)) : DnnBaseCriterion (), Check (c) { } DnnBasicCriterion :: ~DnnBasicCriterion () { } bool DnnBasicCriterion :: Test (DnnEvent& e) { return Check ? (*Check) (e) : false; }