From 244a5433d542dd77b860047196e41c1da6f0ca86 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Tue, 27 Oct 2015 21:12:53 +0100
Subject: [PATCH] allow LabelSetLabel & SymbolSetSymbol in set stats

---
 astat2/src/SetStat.cpp | 40 ++++++++++++++++++++++++++++++++++++++++
 astat2/src/SetStat.h   |  6 +++++-
 astat2/src/astat.cpp   | 20 ++++++++++++++++++++
 3 files changed, 65 insertions(+), 1 deletion(-)

diff --git a/astat2/src/SetStat.cpp b/astat2/src/SetStat.cpp
index d23fd0346d..8f72462ca7 100644
--- a/astat2/src/SetStat.cpp
+++ b/astat2/src/SetStat.cpp
@@ -31,3 +31,43 @@ void SetStat::stat ( const container::ObjectsSet & data, const SetSettings & set
 		break;
 	}
 }
+
+void SetStat::stat ( const label::LabelSetLabel & data, const SetSettings & settings ) {
+	switch ( settings.general ) {
+	case PrintingOptions::PRINT:
+		alib::XmlDataFactory::toStdout ( data );
+		break;
+
+	case PrintingOptions::SIZE:
+		std::cout << data.getData().size ( ) << std::endl;
+		break;
+
+	case PrintingOptions::BOTH:
+		std::cout << data.getData().size ( ) << std::endl;
+		alib::XmlDataFactory::toStdout ( data );
+		break;
+
+	case PrintingOptions::NOOP:
+		break;
+	}
+}
+
+void SetStat::stat ( const alphabet::SymbolSetSymbol & data, const SetSettings & settings ) {
+	switch ( settings.general ) {
+	case PrintingOptions::PRINT:
+		alib::XmlDataFactory::toStdout ( data );
+		break;
+
+	case PrintingOptions::SIZE:
+		std::cout << data.getData().size ( ) << std::endl;
+		break;
+
+	case PrintingOptions::BOTH:
+		std::cout << data.getData().size ( ) << std::endl;
+		alib::XmlDataFactory::toStdout ( data );
+		break;
+
+	case PrintingOptions::NOOP:
+		break;
+	}
+}
diff --git a/astat2/src/SetStat.h b/astat2/src/SetStat.h
index a00ac38f51..a3c2af8e6e 100644
--- a/astat2/src/SetStat.h
+++ b/astat2/src/SetStat.h
@@ -13,11 +13,15 @@
 #include <set>
 
 #include "container/ObjectsSet.h"
+#include "label/LabelSetLabel.h"
+#include "alphabet/SymbolSetSymbol.h"
 #include "SetSettings.h"
 
 class SetStat {
 public:
-	static void stat(const container::ObjectsSet& automaton, const SetSettings& settings);
+	static void stat(const container::ObjectsSet& set, const SetSettings& settings);
+	static void stat(const label::LabelSetLabel& set, const SetSettings& settings);
+	static void stat(const alphabet::SymbolSetSymbol& set, const SetSettings& settings);
 
 };
 
diff --git a/astat2/src/astat.cpp b/astat2/src/astat.cpp
index a626482d08..2e7645e7b5 100644
--- a/astat2/src/astat.cpp
+++ b/astat2/src/astat.cpp
@@ -252,6 +252,26 @@ int main ( int argc, char * argv[] ) {
 			std::chrono::measurements::end ( );
 			std::chrono::measurements::start ( "Stats print", std::chrono::measurements::Type::MAIN );
 
+			SetStat::stat ( data, settings );
+		} else if ( alib::XmlDataFactory::first < label::LabelSetLabel > ( tokens ) && set.isSet ( ) ) {
+			SetSettings settings = { PrintingOptions::NOOP };
+			settings.general = printingOption;
+
+			label::LabelSetLabel data = alib::XmlDataFactory::fromTokens < label::LabelSetLabel > ( tokens );
+
+			std::chrono::measurements::end ( );
+			std::chrono::measurements::start ( "Stats print", std::chrono::measurements::Type::MAIN );
+
+			SetStat::stat ( data, settings );
+		} else if ( alib::XmlDataFactory::first < alphabet::SymbolSetSymbol > ( tokens ) && set.isSet ( ) ) {
+			SetSettings settings = { PrintingOptions::NOOP };
+			settings.general = printingOption;
+
+			alphabet::SymbolSetSymbol data = alib::XmlDataFactory::fromTokens < alphabet::SymbolSetSymbol > ( tokens );
+
+			std::chrono::measurements::end ( );
+			std::chrono::measurements::start ( "Stats print", std::chrono::measurements::Type::MAIN );
+
 			SetStat::stat ( data, settings );
 		} else {
 			throw exception::AlibException ( "Input not recognized." );
-- 
GitLab