From 2c52920b3218af1e7e6edbebb25c188b8b9b0687 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Sun, 4 Dec 2016 20:33:23 +0100
Subject: [PATCH] template grammar convert auxiliary algorithm

---
 alib2algo/src/grammar/convert/ToRegExp.cpp | 10 ----------
 alib2algo/src/grammar/convert/ToRegExp.h   | 18 ++++++++++++++++--
 2 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/alib2algo/src/grammar/convert/ToRegExp.cpp b/alib2algo/src/grammar/convert/ToRegExp.cpp
index d5c837d54d..b4c7e4a280 100644
--- a/alib2algo/src/grammar/convert/ToRegExp.cpp
+++ b/alib2algo/src/grammar/convert/ToRegExp.cpp
@@ -6,7 +6,6 @@
  */
 
 #include "ToRegExp.h"
-#include "ToRegExpAlgebraic.h"
 
 namespace grammar {
 
@@ -16,16 +15,7 @@ regexp::RegExp ToRegExp::convert(const grammar::Grammar& grammar) {
 	return dispatch(grammar.getData());
 }
 
-regexp::RegExp ToRegExp::convert(const grammar::RightRG < > & grammar) {
-	return regexp::RegExp(ToRegExpAlgebraic::convert(grammar));
-}
-
 auto ToRegExpRightRG = ToRegExp::RegistratorWrapper<regexp::RegExp, grammar::RightRG < > >(ToRegExp::convert);
-
-regexp::RegExp ToRegExp::convert(const grammar::LeftRG < > & grammar) {
-	return regexp::RegExp(ToRegExpAlgebraic::convert(grammar));
-}
-
 auto ToRegExpLeftRG = ToRegExp::RegistratorWrapper<regexp::RegExp, grammar::LeftRG < > >(ToRegExp::convert);
 
 } /* namespace convert */
diff --git a/alib2algo/src/grammar/convert/ToRegExp.h b/alib2algo/src/grammar/convert/ToRegExp.h
index 6e04769a8c..8a8173c19f 100644
--- a/alib2algo/src/grammar/convert/ToRegExp.h
+++ b/alib2algo/src/grammar/convert/ToRegExp.h
@@ -16,6 +16,8 @@
 
 #include <regexp/RegExp.h>
 
+#include "ToRegExpAlgebraic.h"
+
 namespace grammar {
 
 namespace convert {
@@ -28,10 +30,22 @@ public:
 	 */
 	static regexp::RegExp convert(const grammar::Grammar& grammar);
 
-	static regexp::RegExp convert(const grammar::RightRG < > & grammar);
-	static regexp::RegExp convert(const grammar::LeftRG < > & grammar);
+	template < class SymbolType >
+	static regexp::RegExp convert(const grammar::RightRG < SymbolType > & grammar);
+	template < class SymbolType >
+	static regexp::RegExp convert(const grammar::LeftRG < SymbolType > & grammar);
 };
 
+template < class SymbolType >
+regexp::RegExp ToRegExp::convert(const grammar::RightRG < SymbolType > & grammar) {
+	return regexp::RegExp(ToRegExpAlgebraic::convert(grammar));
+}
+
+template < class SymbolType >
+regexp::RegExp ToRegExp::convert(const grammar::LeftRG < SymbolType > & grammar) {
+	return regexp::RegExp(ToRegExpAlgebraic::convert(grammar));
+}
+
 } /* namespace covert */
 
 } /* namespace grammar */
-- 
GitLab