diff options
author | chatty | 2000-11-28 15:28:29 +0000 |
---|---|---|
committer | chatty | 2000-11-28 15:28:29 +0000 |
commit | 0830afbb9473c552ab021873d96324a5df4553bc (patch) | |
tree | d074053e9d44f10c0ac2f869467b47e69012d75a /dnn/Automaton.h | |
parent | 3ee78810becfeeb3690468ac735b6ba20dc5c501 (diff) | |
download | ivy-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-x | dnn/Automaton.h | 81 |
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_ */ |