DiaDes  0.1
DIAgnosis of Discrete-Event System
DdAutFileDescriptor.hh
Go to the documentation of this file.
1 
9 #ifndef __DIADES__AUTOMATA__EXPERIMENTAL__DDAUTFILEDESCRIPTOR__HH__
10 #define __DIADES__AUTOMATA__EXPERIMENTAL__DDAUTFILEDESCRIPTOR__HH__
11 
12 #include<map>
14 
15 #include "DdAutFile.hh"
16 
17 namespace Diades
18 {
19  namespace Automata
20  {
21  namespace Experimental
22  {
23 
76  class DdAutFileDescriptor : public AutFileDescriptor<DdAutEventId>
77  {
78  public:
79  using DetailedState = std::string;
80  using DetailedEvent = std::string;
81 
82  enum class DdAutExtensions
83  {
85  };
86 
87  private:
88  size_t _id;
89  std::string _name;
90  std::set<State> _acceptors;
91  std::map<State, DetailedState> _states;
92  std::map<Event, DetailedEvent> _events;
93  std::unordered_map<std::string, DdAutExtensions> _extensionMapping = {
94  {"state", DdAutExtensions::State},
95  {"event", DdAutExtensions::Event},
96  {"initial", DdAutExtensions::Initial},
97  {"acceptor", DdAutExtensions::Acceptor},
98  {"name", DdAutExtensions::Name},
99  {"id", DdAutExtensions::Id}
100  };
101  public:
102 
103  using ConstAcceptorIterator = std::set< State >::const_iterator;
104  using AcceptorIterator = std::set< State >::iterator;
105  using ConstInitialIterator = std::set< State >::const_iterator;
106  using InitialIterator = std::set< State >::iterator;
107  using ConstDetailedStateIterator = std::map< State, DetailedState >::const_iterator;
108  using DetailedStateIterator = std::map< State, DetailedState >::iterator;
109  using ConstDetailedEventIterator = std::map< Event, DetailedEvent >::const_iterator;
110  using DetailedEventIterator = std::map< Event, DetailedEvent >::iterator;
111 
115  DdAutFileDescriptor() = default;
116 
121  DdAutFileDescriptor(DdAutFileDescriptor const& other) = default;
127  DdAutFileDescriptor& operator=(DdAutFileDescriptor const& other) = default;
132  DdAutFileDescriptor(DdAutFileDescriptor&& other) = default;
142  virtual ~DdAutFileDescriptor() = default;
143 
144 
152  virtual bool readStream(std::istream& stream);
153 
154 
155 
161  virtual bool toStream(std::ostream& stream);
162 
167  virtual void clear();
168 
169 
170 
188  std::pair<AcceptorIterator, bool> setAcceptor(State s);
189 
208  std::pair<DetailedStateIterator, bool> setState(State s, const DetailedState & detail);
227  std::pair<DetailedEventIterator, bool> setEvent(const Event & e, const DetailedEvent & detail);
228 
229 
235  const string & setName(const string & name);
236 
241  const string & name() const;
242 
248  size_t setId(size_t id);
249 
254  size_t id() const;
255 
256  protected:
263  bool readDdAutExtensions(std::istream& stream);
264 
271  readEventExtension(std::istream& stream);
272 
279  readAcceptorExtension(std::istream& stream);
280 
288  readInitialExtension(std::istream& stream,bool & firstInitialExtension);
295  readStateExtension(std::istream& stream);
296 
303  readNameExtension(std::istream& stream);
310  readIdExtension(std::istream& stream);
311 
320  readExtensionField(std::istream& stream, std::string & other);
321  };
322 
331  bool
332  fsmToDescriptor(const DdAutFsm & fsm, DdAutFileDescriptor & descriptor,
333  const DdAutStateManager & sManager,
334  const DdAutEventManager & eManager,
336 
337 
346  bool
347  fsmFromDescriptor(const DdAutFileDescriptor & descriptor, DdAutFsm & fsm,
348  DdAutStateManager & sManager,
349  DdAutEventManager & eManager);
350 
351 
360  bool
361  faToDescriptor(const DdAutFA & fa, DdAutFileDescriptor & descriptor,
362  const DdAutStateManager & sManager,
363  const DdAutEventManager & eManager,
365 
374  bool
375  faFromDescriptor(const DdAutFileDescriptor & descriptor, DdAutFA & fa,
376  DdAutStateManager & sManager,
377  DdAutEventManager & eManager);
378 
379  }
380  }
381 }
382 
383 
384 #endif /* __DIADES__AUTOMATA__EXPERIMENTAL__DDAUTFILEDESCRIPTOR__HH__ */
385 
DdAutExtensions readStateExtension(std::istream &stream)
std::pair< DetailedStateIterator, bool > setState(State s, const DetailedState &detail)
ConstDetailedEventIterator eventEnd() const
bool fsmFromDescriptor(const DdAutFileDescriptor &descriptor, DdAutFsm &fsm, DdAutStateManager &sManager, DdAutEventManager &eManager)
ConstDetailedStateIterator stateEnd() const
bool faToDescriptor(const DdAutFA &fa, DdAutFileDescriptor &descriptor, const DdAutStateManager &sManager, const DdAutEventManager &eManager, Diades::Graph::ConstNodeMap< DdAutStateId > &encoding)
bool faFromDescriptor(const DdAutFileDescriptor &descriptor, DdAutFA &fa, DdAutStateManager &sManager, DdAutEventManager &eManager)
std::unordered_map< std::string, DdAutExtensions > _extensionMapping
std::set< State >::const_iterator ConstInitialIterator
DdAutExtensions readNameExtension(std::istream &stream)
std::map< Event, DetailedEvent >::const_iterator ConstDetailedEventIterator
std::pair< AcceptorIterator, bool > setAcceptor(State s)
DdAutExtensions readIdExtension(std::istream &stream)
ConstDetailedStateIterator stateBegin() const
std::map< State, DetailedState >::const_iterator ConstDetailedStateIterator
std::pair< DetailedEventIterator, bool > setEvent(const Event &e, const DetailedEvent &detail)
DdAutExtensions readEventExtension(std::istream &stream)
bool fsmToDescriptor(const DdAutFsm &fsm, DdAutFileDescriptor &descriptor, const DdAutStateManager &sManager, const DdAutEventManager &eManager, Diades::Graph::ConstNodeMap< DdAutStateId > &encoding)
DdAutExtensions readExtensionField(std::istream &stream, std::string &other)
virtual bool toStream(std::ostream &stream)
DdAutFileDescriptor & operator=(DdAutFileDescriptor const &other)=default
const string & setName(const string &name)
Namespace of the Diades project.
std::set< State >::const_iterator ConstAcceptorIterator
std::map< Event, DetailedEvent >::iterator DetailedEventIterator
DdAutExtensions readInitialExtension(std::istream &stream, bool &firstInitialExtension)
ConstDetailedEventIterator eventBegin() const
std::map< State, DetailedState >::iterator DetailedStateIterator
DdAutExtensions readAcceptorExtension(std::istream &stream)
virtual bool readStream(std::istream &stream)