From ba8d050c0375de2b72ae85458493fd1676b3d0b2 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Fri, 6 May 2016 21:47:40 +0200 Subject: [PATCH] DPDA stats --- astat2/src/AutomataStat.cpp | 100 ++++++++++++++++++++++++++++++++++++ astat2/src/AutomataStat.h | 1 + 2 files changed, 101 insertions(+) diff --git a/astat2/src/AutomataStat.cpp b/astat2/src/AutomataStat.cpp index 1fa60d09f7..df4a10ba34 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 ac2cdf54be..e3af2a4250 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_ */ -- GitLab