summaryrefslogtreecommitdiff
path: root/dnn/Criterion.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dnn/Criterion.cc')
-rwxr-xr-xdnn/Criterion.cc142
1 files changed, 142 insertions, 0 deletions
diff --git a/dnn/Criterion.cc b/dnn/Criterion.cc
new file mode 100755
index 0000000..edef576
--- /dev/null
+++ b/dnn/Criterion.cc
@@ -0,0 +1,142 @@
+/*
+ * 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 <DnnBaseCriterion> li = b.Conditions;
+ while (++li)
+ Conditions.Append (*li);
+ return *this;
+}
+
+bool
+DnnAndCriterion :: Test (DnnEvent& ev)
+{
+ bool res = true;
+ CcuListIterOf <DnnBaseCriterion> 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 <DnnBaseCriterion> 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 <DnnBaseCriterion> 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;
+}