From 32d11fc65cf27c95c20380a4b96060b6de6ac10e Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Fri, 5 Sep 2014 09:03:30 +0200
Subject: [PATCH] partial simplifications

---
 .../equations/RightRegularEquationSolver.cpp  | 52 ++++++++-----------
 alib2algo/src/fa2re/BrzozowskiAlgebraic.cpp   |  2 +-
 2 files changed, 24 insertions(+), 30 deletions(-)

diff --git a/alib2algo/src/equations/RightRegularEquationSolver.cpp b/alib2algo/src/equations/RightRegularEquationSolver.cpp
index b62bb39f7d..e9518b96b5 100644
--- a/alib2algo/src/equations/RightRegularEquationSolver.cpp
+++ b/alib2algo/src/equations/RightRegularEquationSolver.cpp
@@ -40,25 +40,21 @@ regexp::UnboundedRegExpElement* RightRegularEquationSolver::eliminate( void )
 		 * A = 0A + 1B + 2C
 		 * => A = 0*1B + 0*2C
 		 */
-		regexp::UnboundedRegExpIteration* loop = new regexp::UnboundedRegExpIteration( * m_eqTransition[ a ][ a ] );
+		regexp::UnboundedRegExpIteration loop( * m_eqTransition[ a ][ a ] );
 
 		// for all transitions from A apply Arden's Lemma
 		for( auto itB = std::next( itA ) ; itB != m_symbolsByDepth.rend( ); itB ++ )
 		{
 			const alphabet::Symbol & b = * itB;
-			regexp::UnboundedRegExpConcatenation* concat = new regexp::UnboundedRegExpConcatenation( );
-			concat->appendElement( * loop );
-			concat->appendElement( * m_eqTransition[ a ][ b ] );
-			m_eqTransition[ a ][ b ] = /* opt.optimize( */ concat /* ) */;
-			// delete concat;
+			regexp::UnboundedRegExpConcatenation concat;
+			concat.appendElement( loop );
+			concat.appendElement( * m_eqTransition[ a ][ b ] );
+			m_eqTransition[ a ][ b ] = /* opt.optimize( */ concat.clone() /* ) */;
 		}
-		regexp::UnboundedRegExpConcatenation* concat = new regexp::UnboundedRegExpConcatenation( );
-		concat->appendElement( * loop );
-		concat->appendElement( * m_eqFinal[ a ] );
-		m_eqFinal[ a ] = /* opt.optimize( */ concat /* ) */;
-		//delete concat;
-
-		delete loop;
+		regexp::UnboundedRegExpConcatenation concat;
+		concat.appendElement( loop );
+		concat.appendElement( * m_eqFinal[ a ] );
+		m_eqFinal[ a ] = /* opt.optimize( */ concat.clone() /* ) */;
 
 		/*
 		 * eliminate A from rest of the equations using this pattern:
@@ -72,24 +68,22 @@ regexp::UnboundedRegExpElement* RightRegularEquationSolver::eliminate( void )
 			{
 				const alphabet::Symbol & c = * itC;
 
-				regexp::UnboundedRegExpAlternation* alt = new regexp::UnboundedRegExpAlternation( );
-				regexp::UnboundedRegExpConcatenation* concat = new regexp::UnboundedRegExpConcatenation( );
-				concat->appendElement( * m_eqTransition[ b ][ a ] );
-				concat->appendElement( * m_eqTransition[ a ][ c ] );
-				alt->appendElement( * m_eqTransition[ b ][ c ] );
-				alt->appendElement( * concat );
-				m_eqTransition[ b ][ c ] = /*opt.optimize( */ alt /* ) */;
-				//delete alt;
+				regexp::UnboundedRegExpAlternation alt;
+				regexp::UnboundedRegExpConcatenation concat;
+				concat.appendElement( * m_eqTransition[ b ][ a ] );
+				concat.appendElement( * m_eqTransition[ a ][ c ] );
+				alt.appendElement( * m_eqTransition[ b ][ c ] );
+				alt.appendElement( concat );
+				m_eqTransition[ b ][ c ] = /*opt.optimize( */ alt.clone() /* ) */;
 			}
 
-			regexp::UnboundedRegExpAlternation* alt = new regexp::UnboundedRegExpAlternation( );
-			regexp::UnboundedRegExpConcatenation* concat = new regexp::UnboundedRegExpConcatenation( );
-			concat->appendElement( * m_eqTransition[ b ][ a ] );
-			concat->appendElement( * m_eqFinal[ a ] );
-			alt->appendElement( * m_eqFinal[ b ] );
-			alt->appendElement( * concat );
-			m_eqFinal[ b ] = /* opt.optimize( */ alt /* ) */;
-			// delete alt;
+			regexp::UnboundedRegExpAlternation alt;
+			regexp::UnboundedRegExpConcatenation concat;
+			concat.appendElement( * m_eqTransition[ b ][ a ] );
+			concat.appendElement( * m_eqFinal[ a ] );
+			alt.appendElement( * m_eqFinal[ b ] );
+			alt.appendElement( concat );
+			m_eqFinal[ b ] = /* opt.optimize( */ alt.clone() /* ) */;
 		}
 
 		// no need for this now, release some memory
diff --git a/alib2algo/src/fa2re/BrzozowskiAlgebraic.cpp b/alib2algo/src/fa2re/BrzozowskiAlgebraic.cpp
index fe1696e025..53746f5902 100644
--- a/alib2algo/src/fa2re/BrzozowskiAlgebraic.cpp
+++ b/alib2algo/src/fa2re/BrzozowskiAlgebraic.cpp
@@ -52,7 +52,7 @@ regexp::UnboundedRegExp BrzozowskiAlgebraic::convert( void )
 				if ( isInSet( q , m_automaton.getTransitionsFromState( p )[std::make_pair( p, symbol )] ) )
 					alt->appendElement( regexp::UnboundedRegExpSymbol { symbol } );
 
-			solver.addEquation( alphabet::Symbol( alphabet::LabeledSymbol (p.getName( ) ) ), alphabet::Symbol( alphabet::LabeledSymbol( q.getName( ) ) ), alt );
+			solver.addEquation( alphabet::Symbol( alphabet::LabeledSymbol ( p.getName( ) ) ), alphabet::Symbol( alphabet::LabeledSymbol( q.getName( ) ) ), alt );
 		}
 	}
 
-- 
GitLab