summaryrefslogtreecommitdiff
path: root/dnn/Criterion.h
diff options
context:
space:
mode:
authorchatty2000-11-28 14:52:15 +0000
committerchatty2000-11-28 14:52:15 +0000
commitbcb19dbd53973ff7efd9b2838de121d1e23430f4 (patch)
tree4aa6404ca732d1a32e11b0be1762dcb7ef9fbdb6 /dnn/Criterion.h
parent325530e630c68c7c10a2f4339f5b43434fcd0329 (diff)
downloadivy-league-bcb19dbd53973ff7efd9b2838de121d1e23430f4.zip
ivy-league-bcb19dbd53973ff7efd9b2838de121d1e23430f4.tar.gz
ivy-league-bcb19dbd53973ff7efd9b2838de121d1e23430f4.tar.bz2
ivy-league-bcb19dbd53973ff7efd9b2838de121d1e23430f4.tar.xz
Lots of files were added around '96
Diffstat (limited to 'dnn/Criterion.h')
-rwxr-xr-xdnn/Criterion.h103
1 files changed, 103 insertions, 0 deletions
diff --git a/dnn/Criterion.h b/dnn/Criterion.h
new file mode 100755
index 0000000..92dd48a
--- /dev/null
+++ b/dnn/Criterion.h
@@ -0,0 +1,103 @@
+/*
+ * DNN - Data News Network
+ *
+ * by Stephane Chatty
+ *
+ * Copyright 1993-1995
+ * Centre d'Etudes de la Navigation Aerienne (CENA)
+ *
+ * Criteria.
+ *
+ * $Id$
+ * $CurLog$
+ * Removed pragma interfaces
+ */
+
+#ifndef DnnCriterion_H_
+#define DnnCriterion_H_
+
+#include "cplus_bugs.h"
+#include "ccu/bool.h"
+#include "ccu/List.h"
+class DnnEvent;
+
+class DnnBaseCriterion {
+friend class DnnAndCriterion;
+friend class DnnOrCriterion;
+protected:
+ DnnBaseCriterion ();
+ ~DnnBaseCriterion ();
+public:
+virtual bool Test (DnnEvent&) = 0;
+};
+
+class DnnOrCriterion;
+
+class DnnAndCriterion : public DnnBaseCriterion {
+friend class DnnOrCriterion;
+protected:
+ CcuListOf <DnnBaseCriterion> Conditions;
+ bool Test (DnnEvent&);
+public:
+ DnnAndCriterion ();
+ ~DnnAndCriterion ();
+ DnnAndCriterion& operator &= (DnnBaseCriterion&);
+ DnnAndCriterion& operator &= (DnnOrCriterion&);
+ DnnAndCriterion& operator &= (DnnAndCriterion&);
+};
+
+class DnnOrCriterion : public DnnBaseCriterion {
+friend class DnnAndCriterion;
+protected:
+ CcuListOf <DnnBaseCriterion> Alternatives;
+ bool Test (DnnEvent&);
+public:
+ DnnOrCriterion ();
+ ~DnnOrCriterion ();
+ DnnOrCriterion& operator |= (DnnBaseCriterion&);
+ DnnOrCriterion& operator |= (DnnOrCriterion&);
+ DnnOrCriterion& operator |= (DnnAndCriterion&);
+};
+
+class DnnBasicCriterion : public DnnBaseCriterion {
+protected:
+ bool (*Check) (DnnEvent&);
+ bool Test (DnnEvent& e);
+
+public:
+ DnnBasicCriterion ();
+ DnnBasicCriterion (bool (*c) (DnnEvent&));
+ ~DnnBasicCriterion ();
+inline void ChangeCriterion (bool (*c) (DnnEvent&)) {Check = c; }
+};
+
+template <class T> class DnnCriterionOf : public DnnBaseCriterion {
+protected:
+ T& Object;
+ void (T::*Check) (DnnEvent&);
+
+public:
+ DnnCriterionOf (T& o, void (T::*c) (DnnEvent&)) : DnnBaseCriterion (), Object (o), Check (c) {}
+ ~DnnCriterionOf () {}
+ bool Test (DnnEvent& ev) { return (Object.*Check) (ev); }
+};
+
+#define SpecializedCriterion(R,S) \
+\
+class R : public DnnBaseCriterion { \
+\
+protected: \
+\
+ S& Body; \
+ bool (S::*SpecializedCheck) (DnnEvent&); \
+\
+public: \
+\
+ R (S& s, bool (S::*sc) (DnnEvent&)) : DnnBaseCriterion (), Body (s), SpecializedCheck (sc) {} \
+ ~R () {} \
+\
+ bool Test (DnnEvent& e) { return (Body.*SpecializedCheck) (e); } \
+\
+};
+
+#endif /* DnnCriterion_H_ */