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