From 0830afbb9473c552ab021873d96324a5df4553bc Mon Sep 17 00:00:00 2001 From: chatty Date: Tue, 28 Nov 2000 15:28:29 +0000 Subject: Archiving a file that was born dead --- dnn/Automaton.h | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100755 dnn/Automaton.h (limited to 'dnn/Automaton.h') 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 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 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_ */ -- cgit v1.1