summaryrefslogtreecommitdiff
path: root/dnn/Automaton.h
diff options
context:
space:
mode:
authorchatty2000-11-28 15:28:29 +0000
committerchatty2000-11-28 15:28:29 +0000
commit0830afbb9473c552ab021873d96324a5df4553bc (patch)
treed074053e9d44f10c0ac2f869467b47e69012d75a /dnn/Automaton.h
parent3ee78810becfeeb3690468ac735b6ba20dc5c501 (diff)
downloadivy-league-0830afbb9473c552ab021873d96324a5df4553bc.zip
ivy-league-0830afbb9473c552ab021873d96324a5df4553bc.tar.gz
ivy-league-0830afbb9473c552ab021873d96324a5df4553bc.tar.bz2
ivy-league-0830afbb9473c552ab021873d96324a5df4553bc.tar.xz
Archiving a file that was born dead
Diffstat (limited to 'dnn/Automaton.h')
-rwxr-xr-xdnn/Automaton.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/dnn/Automaton.h b/dnn/Automaton.h
new file mode 100755
index 0000000..3cb78ba
--- /dev/null
+++ b/dnn/Automaton.h
@@ -0,0 +1,81 @@
+/*
+ * DNN - Data News Network
+ *
+ * by Stephane Chatty
+ *
+ * Copyright 1993-1995
+ * Centre d'Etudes de la Navigation Aerienne (CENA)
+ *
+ * Automata.
+ *
+ * $Id$
+ * $CurLog$
+ */
+
+#ifndef DnnAutomaton_H_
+#define DnnAutomaton_H_
+
+#include "cplus_bugs.h"
+#include "ccu/List.h"
+#include "ccu/HashTable.h"
+#include "ccu/String.h"
+#include "ccu/bool.h"
+
+class DnnState;
+
+typedef void (DnnStateFun) (DnnState*);
+typedef void (DnnLinkFun) (DnnState*, DnnState*, void*);
+
+class DnnLink {
+public:
+ DnnState* To;
+ DnnLinkFun* Fun;
+inline DnnLink (DnnState* to, DnnLinkFun* fn) : To (to), Fun (fn) {}
+inline ~DnnLink () {}
+};
+
+
+class DnnState {
+protected:
+ CcuString Name;
+ DnnStateFun* InFun;
+ DnnStateFun* OutFun;
+ CcuHashTableOf <DnnLink> Links;
+
+inline void In () { if (InFun) (*InFun) (this); }
+inline void Out () { if (OutFun) (*OutFun) (this); }
+
+public:
+ DnnState (const char*, int sz, DnnStateFun* = 0, DnnStateFun* = 0);
+ ~DnnState ();
+ void CreateLink (DnnState*, void*, DnnLinkFun);
+ DnnState* Next (void*, bool = false);
+};
+
+class DnnAutomaton {
+protected:
+ int Size;
+ DnnState* Initial;
+ CcuListOf <DnnState> AllStates;
+public:
+ DnnAutomaton (int sz = 16);
+ ~DnnAutomaton ();
+inline DnnState* GetInitial () { return Initial; }
+inline void SetInitial (DnnState* s) { Initial = s; }
+ DnnState* CreateState (const char* = 0, DnnStateFun = 0, DnnStateFun = 0);
+ void CreateLink (DnnState*, DnnState*, void*, DnnLinkFun);
+};
+
+class DnnAutomIter {
+protected:
+ DnnAutomaton* TheAutomaton;
+ DnnState* CurState;
+public:
+ DnnAutomIter (DnnAutomaton&);
+ ~DnnAutomIter ();
+ bool Step (void*);
+};
+
+
+
+#endif /* DnnAutomaton_H_ */