DiaDes  0.1
DIAgnosis of Discrete-Event System
Typedefs | Enumerations | Functions | Variables
Run.cc File Reference

This file implements the dd-run command that is used to run the model interactively (the model can be in aut/ddaut format). More...

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <regex>
#include <unordered_map>
#include <boost/program_options.hpp>
#include <diades/automata/experimental/AutFile.hh>
#include <diades/automata/experimental/DdAutFile.hh>
#include <diades/automata/experimental/DdAutFileDescriptor.hh>
#include <diades/automata/experimental/Printer.hh>
#include <diades/automata/experimental/StateMachine.hh>
#include <diades/automata/experimental/StateCreation.hh>
#include "../AutomataInterface.hh"

Go to the source code of this file.

Typedefs

using State = AutFsm::State
 
using Transition = AutFsm::Transition
 
using Path = std::vector< std::pair< State, Transition > >
 
using TrIndexes = std::unordered_map< size_t, Transition >
 
using StIndexes = std::unordered_map< State::NodeId, State >
 
using Params = std::vector< std::string >
 

Enumerations

enum  Command {
  back, commands, current, help,
  initial, next, path, start,
  quit, undo, unknown
}
 

Functions

const string program ("dd-run")
 
void initialiseOptions (int argc, char *argv[], Poptions::options_description &desc, Poptions::variables_map &vm)
 
void printHelpCommand (Command cmd)
 
Command convertCommand (const std::string &cmd)
 
size_t runAut (const std::string &fileName)
 
void prompt (std::string &cmd)
 
void command (Command &cmd, Params &params)
 
void initialiseStates (const DdAutFsm &fsm)
 
void printState (const DdAutFsm &fsm, const State &state, const DdAutStateManager &sManager)
 
void printTransition (const DdAutFsm &fsm, const Transition &transition, const DdAutEventManager &eManager, size_t index)
 
void printOutputTransitions (const DdAutFsm &fsm, const State &state, const DdAutEventManager &eManager, TrIndexes &transitions)
 
void printInputTransitions (const DdAutFsm &fsm, const State &state, const DdAutEventManager &eManager, TrIndexes &transitions)
 
void printCurrentState (const DdAutFsm &fsm, const State &state, const DdAutStateManager &sManager, const DdAutEventManager &eManager, TrIndexes &outputs, TrIndexes &inputs)
 
void printInitialStates (const DdAutFsm &fsm, const DdAutStateManager &sManager, const Params &params)
 
State::NodeId getStateId (const std::string &param, bool &ok)
 
size_t getId (const std::string &param, bool &ok)
 
void initialiseFsm (const DdAutFsm &fsm, DdAutFsm::State &newInitialState, const DdAutStateManager &sManager, const DdAutEventManager &eManager, TrIndexes &outputs, TrIndexes &inputs, const Params &params)
 
void commandNext (const DdAutFsm &fsm, Path &currentPath, const DdAutStateManager &sManager, const DdAutEventManager &eManager, TrIndexes &outputs, TrIndexes &inputs, const Params &params)
 
void commandBack (const DdAutFsm &fsm, Path &currentPath, const DdAutStateManager &sManager, const DdAutEventManager &eManager, TrIndexes &outputs, TrIndexes &inputs, const Params &params)
 
void printHelp (const Params &params)
 
void commandCommands ()
 
void commandInitial (const DdAutFsm &fsm, const DdAutStateManager &sManager, const Params &params)
 
void commandStart (const DdAutFsm &fsm, Path &currentPath, const DdAutStateManager &sManager, const DdAutEventManager &eManager, TrIndexes &outputs, TrIndexes &inputs, const Params &params)
 
void commandCurrent (const DdAutFsm &fsm, Path &currentPath, const DdAutStateManager &sManager, const DdAutEventManager &eManager, TrIndexes &outputs, TrIndexes &inputs)
 
void commandHelp (const Params &params)
 
void commandUndo (const DdAutFsm &fsm, Path &currentPath, const DdAutStateManager &sManager, const DdAutEventManager &eManager, TrIndexes &outputs, TrIndexes &inputs, const Params &params)
 
void commandPath (const DdAutFsm &fsm, const Path &currentPath, const DdAutStateManager &sManager, const DdAutEventManager &eManager, const Params &params)
 
void commandUnknown ()
 
size_t interactiveDdAut (const DdAutFsm &fsm, const DdAutStateManager &sManager, const DdAutEventManager &eManager)
 
size_t runDdaut (const std::string &fileName)
 
size_t runFsm (const std::string &fileName)
 
int main (int argc, char **argv)
 

Variables

FileSuffixes suffixes ({"aut","ddaut"})
 
std::unordered_map< Command, std::string > cmds
 
std::map< std::string, CommandtextTocmds
 
std::unordered_map< Command, std::string > cmdHelp
 
StIndexes states
 

Detailed Description

This file implements the dd-run command that is used to run the model interactively (the model can be in aut/ddaut format).

Author
Yannick Pencolé
Date
26 February 2020, 12:26

Definition in file Run.cc.

Typedef Documentation

◆ Params

using Params = std::vector<std::string>

Definition at line 77 of file Run.cc.

◆ Path

using Path = std::vector<std::pair<State,Transition> >

Definition at line 74 of file Run.cc.

◆ State

Definition at line 72 of file Run.cc.

◆ StIndexes

using StIndexes = std::unordered_map<State::NodeId,State>

Definition at line 76 of file Run.cc.

◆ Transition

Definition at line 73 of file Run.cc.

◆ TrIndexes

using TrIndexes = std::unordered_map<size_t,Transition>

Definition at line 75 of file Run.cc.

Enumeration Type Documentation

◆ Command

enum Command
Enumerator
back 
commands 
current 
help 
initial 
next 
path 
start 
quit 
undo 
unknown 

Definition at line 79 of file Run.cc.

Function Documentation

◆ command()

void command ( Command cmd,
Params params 
)

Definition at line 240 of file Run.cc.

References convertCommand(), prompt(), and unknown.

Referenced by interactiveDdAut().

◆ commandBack()

void commandBack ( const DdAutFsm fsm,
Path currentPath,
const DdAutStateManager sManager,
const DdAutEventManager eManager,
TrIndexes outputs,
TrIndexes inputs,
const Params params 
)

Definition at line 479 of file Run.cc.

References back, getId(), printCurrentState(), and printHelpCommand().

Referenced by interactiveDdAut().

◆ commandCommands()

void commandCommands ( )

Definition at line 533 of file Run.cc.

References unknown.

Referenced by interactiveDdAut().

◆ commandCurrent()

void commandCurrent ( const DdAutFsm fsm,
Path currentPath,
const DdAutStateManager sManager,
const DdAutEventManager eManager,
TrIndexes outputs,
TrIndexes inputs 
)

Definition at line 575 of file Run.cc.

References printCurrentState().

Referenced by interactiveDdAut().

◆ commandHelp()

void commandHelp ( const Params params)

Definition at line 594 of file Run.cc.

References printHelp().

Referenced by interactiveDdAut().

◆ commandInitial()

void commandInitial ( const DdAutFsm fsm,
const DdAutStateManager sManager,
const Params params 
)

Definition at line 552 of file Run.cc.

References printInitialStates().

Referenced by interactiveDdAut().

◆ commandNext()

void commandNext ( const DdAutFsm fsm,
Path currentPath,
const DdAutStateManager sManager,
const DdAutEventManager eManager,
TrIndexes outputs,
TrIndexes inputs,
const Params params 
)

Definition at line 437 of file Run.cc.

References getId(), next, printCurrentState(), and printHelpCommand().

Referenced by interactiveDdAut().

◆ commandPath()

void commandPath ( const DdAutFsm fsm,
const Path currentPath,
const DdAutStateManager sManager,
const DdAutEventManager eManager,
const Params params 
)

◆ commandStart()

void commandStart ( const DdAutFsm fsm,
Path currentPath,
const DdAutStateManager sManager,
const DdAutEventManager eManager,
TrIndexes outputs,
TrIndexes inputs,
const Params params 
)

Definition at line 560 of file Run.cc.

References initialiseFsm().

Referenced by interactiveDdAut().

◆ commandUndo()

void commandUndo ( const DdAutFsm fsm,
Path currentPath,
const DdAutStateManager sManager,
const DdAutEventManager eManager,
TrIndexes outputs,
TrIndexes inputs,
const Params params 
)

Definition at line 600 of file Run.cc.

References printCurrentState(), printHelpCommand(), and undo.

Referenced by interactiveDdAut().

◆ commandUnknown()

void commandUnknown ( )

Definition at line 680 of file Run.cc.

Referenced by interactiveDdAut().

◆ convertCommand()

Command convertCommand ( const std::string &  cmd)

Definition at line 191 of file Run.cc.

References unknown.

Referenced by command(), and printHelp().

◆ getId()

size_t getId ( const std::string &  param,
bool &  ok 
)

Definition at line 380 of file Run.cc.

Referenced by commandBack(), and commandNext().

◆ getStateId()

State::NodeId getStateId ( const std::string &  param,
bool &  ok 
)

◆ initialiseFsm()

void initialiseFsm ( const DdAutFsm fsm,
DdAutFsm::State newInitialState,
const DdAutStateManager sManager,
const DdAutEventManager eManager,
TrIndexes outputs,
TrIndexes inputs,
const Params params 
)

Definition at line 399 of file Run.cc.

References getStateId(), initialiseStates(), printCurrentState(), printHelpCommand(), and start.

Referenced by commandStart().

◆ initialiseOptions()

void initialiseOptions ( int  argc,
char *  argv[],
Poptions::options_description &  desc,
Poptions::variables_map &  vm 
)

Initialise the options of the command present in the command line

Parameters
argc
argv
desc
vm

Definition at line 53 of file Run.cc.

References options().

Referenced by main().

◆ initialiseStates()

void initialiseStates ( const DdAutFsm fsm)

◆ interactiveDdAut()

size_t interactiveDdAut ( const DdAutFsm fsm,
const DdAutStateManager sManager,
const DdAutEventManager eManager 
)

◆ main()

int main ( int  argc,
char **  argv 
)

Main file of the dd-complete command

Parameters
argc
argv
Returns
success code (SUCCESS or ERROR_COMMAND_LINE)

Definition at line 849 of file Run.cc.

References initialiseOptions(), Diades::CmdInterface::printCommandLineError(), printUsage(), program(), and runFsm().

◆ printCurrentState()

void printCurrentState ( const DdAutFsm fsm,
const State state,
const DdAutStateManager sManager,
const DdAutEventManager eManager,
TrIndexes outputs,
TrIndexes inputs 
)

◆ printHelp()

void printHelp ( const Params params)

Definition at line 521 of file Run.cc.

References convertCommand(), help, and printHelpCommand().

Referenced by commandHelp().

◆ printHelpCommand()

void printHelpCommand ( Command  cmd)

◆ printInitialStates()

void printInitialStates ( const DdAutFsm fsm,
const DdAutStateManager sManager,
const Params params 
)

◆ printInputTransitions()

void printInputTransitions ( const DdAutFsm fsm,
const State state,
const DdAutEventManager eManager,
TrIndexes transitions 
)

◆ printOutputTransitions()

void printOutputTransitions ( const DdAutFsm fsm,
const State state,
const DdAutEventManager eManager,
TrIndexes transitions 
)

◆ printState()

void printState ( const DdAutFsm fsm,
const State state,
const DdAutStateManager sManager 
)

◆ printTransition()

void printTransition ( const DdAutFsm fsm,
const Transition transition,
const DdAutEventManager eManager,
size_t  index 
)

◆ program()

const string program ( "dd-run"  )

Referenced by main().

◆ prompt()

void prompt ( std::string &  cmd)

Definition at line 232 of file Run.cc.

Referenced by command().

◆ runAut()

size_t runAut ( const std::string &  fileName)

Load the file (aut file) and start the interactive run process

Parameters
fileNameaut file to load
Returns
success code (SUCCESS or ERROR_COMMAND_LINE)

Definition at line 210 of file Run.cc.

References Diades::Automata::Experimental::fromAutFile(), Diades::CmdInterface::printCommandLineError(), and SUCCESS.

Referenced by runFsm().

◆ runDdaut()

size_t runDdaut ( const std::string &  fileName)

Load the file (ddaut file) and start the interactive run process

Parameters
fileNameddaut file to load
Returns
success code (SUCCESS or ERROR_COMMAND_LINE)

Definition at line 781 of file Run.cc.

References Diades::Automata::Experimental::fsmFromDescriptor(), interactiveDdAut(), Diades::CmdInterface::printCommandLineError(), and Diades::Automata::Experimental::DdAutFileDescriptor::readStream().

Referenced by runFsm().

◆ runFsm()

size_t runFsm ( const std::string &  fileName)

Load the file (aut file) and start the interactive run process

Parameters
fileNameaut file to load
Returns
success code (SUCCESS or ERROR_COMMAND_LINE)

Definition at line 819 of file Run.cc.

References ERROR_UNHANDLED_EXCEPTION, Diades::CmdInterface::FileSuffixes::match(), Diades::CmdInterface::printCommandLineError(), runAut(), runDdaut(), and suffixes.

Referenced by main().

Variable Documentation

◆ cmdHelp

std::unordered_map<Command, std::string> cmdHelp

Definition at line 124 of file Run.cc.

◆ cmds

std::unordered_map<Command, std::string> cmds
Initial value:
=
{
{ Command::back, "back"},
{ Command::commands, "commands"},
{ Command::current, "current"},
{ Command::help, "help"},
{ Command::initial, "initial"},
{ Command::next, "next" },
{ Command::path, "path" },
{ Command::start, "start" },
{ Command::quit, "quit" },
{ Command::undo, "undo"},
{ Command::unknown, "unknown"}
}
Definition: Run.cc:88
Definition: Run.cc:91
Definition: Run.cc:81
Definition: Run.cc:84
Definition: Run.cc:85
Definition: Run.cc:87
Definition: Run.cc:89
Definition: Run.cc:83
Definition: Run.cc:82
Definition: Run.cc:86
Definition: Run.cc:90

Definition at line 94 of file Run.cc.

◆ states

StIndexes states

◆ suffixes

FileSuffixes suffixes({"aut","ddaut"})

Referenced by runFsm().

◆ textTocmds

std::map<std::string,Command> textTocmds
Initial value:
=
{
{ "back",Command::back},
{ "commands",Command::commands},
{ "current",Command::current},
{ "help", Command::help },
{ "initial", Command::initial },
{ "next", Command::next },
{ "path", Command::path },
{ "start", Command::start },
{ "quit", Command::quit},
{ "undo", Command::undo },
{ "unknown", Command::unknown }
}
Definition: Run.cc:88
Definition: Run.cc:91
Definition: Run.cc:81
Definition: Run.cc:84
Definition: Run.cc:85
Definition: Run.cc:87
Definition: Run.cc:89
Definition: Run.cc:83
Definition: Run.cc:82
Definition: Run.cc:86
Definition: Run.cc:90

Definition at line 109 of file Run.cc.