diff --git a/astat2/src/AutomataStat.cpp b/astat2/src/AutomataStat.cpp index 1fa60d09f71e6a5d8cacd98c055f1dcad12f9d6b..df4a10ba3404330f524e68ff40f03a2de4b0e912 100644 --- a/astat2/src/AutomataStat.cpp +++ b/astat2/src/AutomataStat.cpp @@ -13,9 +13,15 @@ #include <automaton/PDA/InputDrivenNPDA.h> #include <automaton/PDA/InputDrivenDPDA.h> +#include <automaton/PDA/DPDA.h> + #include <factory/XmlDataFactory.hpp> #include <container/ObjectsSet.h> #include <container/ObjectsMap.h> +#include <container/ObjectsTuple.h> +#include <container/ObjectsVector.h> +#include <container/ObjectsVariant.h> +#include <container/ObjectsPair.h> #include <iostream> void AutomataStat::stat ( const automaton::Automaton & automaton, const AutomataSettings & settings ) { @@ -397,3 +403,97 @@ void AutomataStat::stat ( const automaton::InputDrivenDPDA & automaton, const Au } auto AutomataStatInputDrivenDPDA = AutomataStat::RegistratorWrapper < void, automaton::InputDrivenDPDA > ( AutomataStat::stat ); + +void AutomataStat::stat ( const automaton::DPDA & automaton, const AutomataSettings & settings ) { + switch ( settings.states ) { + case PrintingOptions::PRINT: + alib::XmlDataFactory::toStdout ( automaton.getStates ( ) ); + break; + + case PrintingOptions::SIZE: + std::cout << automaton.getStates ( ).size ( ) << std::endl; + break; + + case PrintingOptions::BOTH: + std::cout << automaton.getStates ( ).size ( ) << std::endl; + alib::XmlDataFactory::toStdout ( automaton.getStates ( ) ); + break; + + case PrintingOptions::NOOP: + break; + } + + switch ( settings.finalStates ) { + case PrintingOptions::PRINT: + alib::XmlDataFactory::toStdout ( automaton.getFinalStates ( ) ); + break; + + case PrintingOptions::SIZE: + std::cout << automaton.getFinalStates ( ).size ( ) << std::endl; + break; + + case PrintingOptions::BOTH: + std::cout << automaton.getFinalStates ( ).size ( ) << std::endl; + alib::XmlDataFactory::toStdout ( automaton.getFinalStates ( ) ); + break; + + case PrintingOptions::NOOP: + break; + } + + switch ( settings.initialStates ) { + case PrintingOptions::PRINT: + alib::XmlDataFactory::toStdout ( automaton.getInitialState ( ) ); + break; + + case PrintingOptions::SIZE: + std::cout << 1 << std::endl; + break; + + case PrintingOptions::BOTH: + std::cout << 1 << std::endl; + alib::XmlDataFactory::toStdout ( automaton.getInitialState ( ) ); + break; + + case PrintingOptions::NOOP: + break; + } + + switch ( settings.inputAlphabet ) { + case PrintingOptions::PRINT: + alib::XmlDataFactory::toStdout ( automaton.getInputAlphabet ( ) ); + break; + + case PrintingOptions::SIZE: + std::cout << automaton.getInputAlphabet ( ).size ( ) << std::endl; + break; + + case PrintingOptions::BOTH: + std::cout << automaton.getInputAlphabet ( ).size ( ) << std::endl; + alib::XmlDataFactory::toStdout ( automaton.getInputAlphabet ( ) ); + break; + + case PrintingOptions::NOOP: + break; + } + + switch ( settings.transitions ) { + case PrintingOptions::PRINT: + alib::XmlDataFactory::toStdout ( automaton.getTransitions ( ) ); + break; + + case PrintingOptions::SIZE: + std::cout << automaton.getTransitions ( ).size ( ) << std::endl; + break; + + case PrintingOptions::BOTH: + std::cout << automaton.getTransitions ( ).size ( ) << std::endl; + alib::XmlDataFactory::toStdout ( automaton.getTransitions ( ) ); + break; + + case PrintingOptions::NOOP: + break; + } +} + +auto AutomataStatDPDA = AutomataStat::RegistratorWrapper < void, automaton::DPDA > ( AutomataStat::stat ); diff --git a/astat2/src/AutomataStat.h b/astat2/src/AutomataStat.h index ac2cdf54be57a27bd7ab1f89e41f5c6a04321991..e3af2a42509a58a1dcd932455a91919d55e4bec2 100644 --- a/astat2/src/AutomataStat.h +++ b/astat2/src/AutomataStat.h @@ -25,6 +25,7 @@ public: static void stat ( const automaton::InputDrivenNPDA & automaton, const AutomataSettings & settings ); static void stat ( const automaton::InputDrivenDPDA & automaton, const AutomataSettings & settings ); + static void stat ( const automaton::DPDA & automaton, const AutomataSettings & settings ); }; #endif /* AUTOMATA_STAT_H_ */