From a17b4bd836aa172c3ff9560201f747b6a4e083b2 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Mon, 14 Nov 2016 09:21:06 +0100
Subject: [PATCH] proper templating of trim algo

---
 alib2algo/src/automaton/simplify/Trim.cpp | 7 -------
 alib2algo/src/automaton/simplify/Trim.h   | 8 ++++++++
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/alib2algo/src/automaton/simplify/Trim.cpp b/alib2algo/src/automaton/simplify/Trim.cpp
index f159f5a202..13e43c6834 100644
--- a/alib2algo/src/automaton/simplify/Trim.cpp
+++ b/alib2algo/src/automaton/simplify/Trim.cpp
@@ -6,8 +6,6 @@
  */
 
 #include "Trim.h"
-#include "UselessStatesRemover.h"
-#include "UnreachableStatesRemover.h"
 
 #include <automaton/FSM/ExtendedNFA.h>
 #include <automaton/FSM/CompactNFA.h>
@@ -19,11 +17,6 @@ namespace automaton {
 
 namespace simplify {
 
-template<class T>
-T Trim::trim( const T & fsm ) {
-	return UnreachableStatesRemover::remove(UselessStatesRemover::remove(fsm));
-}
-
 auto TrimDFA = Trim::RegistratorWrapper<automaton::DFA<>, automaton::DFA<>>(Trim::trim);
 auto TrimNFA = Trim::RegistratorWrapper<automaton::NFA < > , automaton::NFA < > >(Trim::trim);
 auto TrimMultiInitialStateNFA = Trim::RegistratorWrapper<automaton::MultiInitialStateNFA < > , automaton::MultiInitialStateNFA < > >(Trim::trim);
diff --git a/alib2algo/src/automaton/simplify/Trim.h b/alib2algo/src/automaton/simplify/Trim.h
index cf19571ad1..077a58f0c5 100644
--- a/alib2algo/src/automaton/simplify/Trim.h
+++ b/alib2algo/src/automaton/simplify/Trim.h
@@ -11,6 +11,9 @@
 #include <core/multipleDispatch.hpp>
 #include <automaton/Automaton.h>
 
+#include "UselessStatesRemover.h"
+#include "UnreachableStatesRemover.h"
+
 namespace automaton {
 
 namespace simplify {
@@ -26,6 +29,11 @@ public:
 	static T trim( const T & fsm );
 };
 
+template<class T>
+T Trim::trim( const T & fsm ) {
+	return UnreachableStatesRemover::remove(UselessStatesRemover::remove(fsm));
+}
+
 } /* namespace simplify */
 
 } /* namespace automaton */
-- 
GitLab