From 38b9e1004cdb0568151e88d214dab1c49c95615a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Pecka?= <peckato1@fit.cvut.cz>
Date: Mon, 31 Mar 2014 16:15:13 +0200
Subject: [PATCH] aconversion: Use list::front() and back() instead of
 iterators

---
 .../src/fa2rg/fa2lrg/FAtoLRGConverter.cpp        |  2 +-
 .../src/fa2rg/fa2rrg/FAtoRRGConverter.cpp        |  6 +++---
 .../src/rg2fa/lrg2fa/LRGtoFAConverter.cpp        |  9 ++++-----
 .../src/rg2fa/rrg2fa/RRGtoFAConverter.cpp        |  9 ++++-----
 aconversions/src/rg2re/lrg2re/LRGAlgebraic.cpp   |  8 ++++----
 aconversions/src/rg2re/rrg2re/RRGAlgebraic.cpp   |  8 ++++----
 .../rg2rg/lrg2rrg/LeftToRightRegularGrammar.cpp  | 16 ++++++++--------
 .../rg2rg/rrg2lrg/RightToLeftRegularGrammar.cpp  | 16 ++++++++--------
 8 files changed, 36 insertions(+), 38 deletions(-)

diff --git a/aconversions/src/fa2rg/fa2lrg/FAtoLRGConverter.cpp b/aconversions/src/fa2rg/fa2lrg/FAtoLRGConverter.cpp
index 7512a2c52f..ae572db176 100644
--- a/aconversions/src/fa2rg/fa2lrg/FAtoLRGConverter.cpp
+++ b/aconversions/src/fa2rg/fa2lrg/FAtoLRGConverter.cpp
@@ -61,7 +61,7 @@ LeftRegularGrammar FAtoLRGConverter::convert( void )
 
     for( const auto & rule : m_grammar.getRules( ) )
     {
-        const Symbol & leftSide = * rule.getLeftSide( ).begin( );
+        const Symbol & leftSide = rule.getLeftSide( ).front( );
 
         if( isInSet( State( leftSide.getSymbol( ) ), m_fsm.getFinalStates( ) ) )
         {
diff --git a/aconversions/src/fa2rg/fa2rrg/FAtoRRGConverter.cpp b/aconversions/src/fa2rg/fa2rrg/FAtoRRGConverter.cpp
index 3190b40932..28b1db6147 100644
--- a/aconversions/src/fa2rg/fa2rrg/FAtoRRGConverter.cpp
+++ b/aconversions/src/fa2rg/fa2rrg/FAtoRRGConverter.cpp
@@ -43,7 +43,7 @@ RightRegularGrammar FAtoRRGConverter::convert( void )
 
             /*
              *  Rule might already in - consider case:
-             *  \delta(A,a) = F and \delta(B,a) = G, where both F and G are final states
+             *  \delta(A,a) = { F, G }, where both F and G are final states
              */
             if( ! isInSet( Rule( leftSide, rightSide), m_grammar.getRules( ) ) )
                 m_grammar.addRule( Rule( leftSide, rightSide ) );
@@ -54,7 +54,7 @@ RightRegularGrammar FAtoRRGConverter::convert( void )
     m_grammar.setStartSymbol( symbolMap.getNonTerminal( * m_fsm.getInitialStates( ).begin( ) ) );
 
     // step 4
-    if( isInSet( State( m_grammar.getStartSymbol( ).getSymbol( ) ), m_fsm.getFinalStates( ) ) )
+    if( isInSet( * m_fsm.getInitialStates( ).begin( ), m_fsm.getFinalStates( ) ) )
     {
         // 4a
         if( ! m_grammar.isNonTerminalOnRightSideOfAnyRule( m_grammar.getStartSymbol( ) ) )
@@ -69,7 +69,7 @@ RightRegularGrammar FAtoRRGConverter::convert( void )
 
             for( const auto & rule : m_grammar.getRules( ) )
             {
-                if( *( rule.getLeftSide( ).begin( ) ) == m_grammar.getStartSymbol( ) )
+                if( rule.getLeftSide( ).front( ) == m_grammar.getStartSymbol( ) )
                 {
                     list<Symbol> leftSide, rightSide( rule.getRightSide( ) );
                     leftSide.push_back( newStart );
diff --git a/aconversions/src/rg2fa/lrg2fa/LRGtoFAConverter.cpp b/aconversions/src/rg2fa/lrg2fa/LRGtoFAConverter.cpp
index 53d0c68b11..81650e2418 100644
--- a/aconversions/src/rg2fa/lrg2fa/LRGtoFAConverter.cpp
+++ b/aconversions/src/rg2fa/lrg2fa/LRGtoFAConverter.cpp
@@ -33,20 +33,19 @@ FSM LRGtoFAConverter::convert( void )
         if( m_grammar.isEpsilonRule( rule ) )
             continue;
 
-        State current( rule.getLeftSide( ).begin( )->getSymbol( ) );
+        State current( rule.getLeftSide( ).front( ).getSymbol( ) );
 
         // if B->a => \delta(StartState,a)=B
         if( rule.getRightSide( ).size( ) == 1 )
         {
-            const Symbol & input( rule.getRightSide( ).begin( )->getSymbol( ) );
+            const Symbol & input( rule.getRightSide( ).front( ).getSymbol( ) );
             m_automaton.addTransition( startState, input, current );
         }
         // if B->Ca => \delta(C,a)=B
         else if( rule.getRightSide( ).size( ) == 2 )
         {
-            auto rightSideIter = rule.getRightSide( ).begin( );
-            State next( rightSideIter ++ ->getSymbol( ) );
-            const Symbol & input = * rightSideIter;
+            State next( rule.getRightSide( ).front( ).getSymbol( ) );
+            const Symbol & input = rule.getRightSide( ).back( );
 
             m_automaton.addTransition( next, input, current );
         }
diff --git a/aconversions/src/rg2fa/rrg2fa/RRGtoFAConverter.cpp b/aconversions/src/rg2fa/rrg2fa/RRGtoFAConverter.cpp
index 9788b5f3e7..30e6ee74ed 100644
--- a/aconversions/src/rg2fa/rrg2fa/RRGtoFAConverter.cpp
+++ b/aconversions/src/rg2fa/rrg2fa/RRGtoFAConverter.cpp
@@ -33,18 +33,17 @@ FSM RRGtoFAConverter::convert( void )
         if( m_grammar.isEpsilonRule( rule ) )
             continue;
 
-        State current( rule.getLeftSide( ).begin( )->getSymbol( ) );
+        State current( rule.getLeftSide( ).front( ).getSymbol( ) );
 
         if( rule.getRightSide( ).size( ) == 1 ) // if B->a => \delta(B,a)=AState
         {
-            const Symbol & input( rule.getRightSide( ).begin( )->getSymbol( ) );
+            const Symbol & input( rule.getRightSide( ).front( ).getSymbol( ) );
             m_automaton.addTransition( current, input, AState );
         }
         else if( rule.getRightSide( ).size( ) == 2 ) // if B->aC => \delta(B,a)=C
         {
-            auto rightSideIter = rule.getRightSide( ).begin( );
-            const Symbol & input = * rightSideIter ++;
-            State next( rightSideIter->getSymbol( ) );
+            const Symbol & input = rule.getRightSide( ).front( );
+            State next( rule.getRightSide( ).back( ).getSymbol( ) );
 
             m_automaton.addTransition( current, input, next );
         }
diff --git a/aconversions/src/rg2re/lrg2re/LRGAlgebraic.cpp b/aconversions/src/rg2re/lrg2re/LRGAlgebraic.cpp
index deb33731f0..d7036f06c3 100644
--- a/aconversions/src/rg2re/lrg2re/LRGAlgebraic.cpp
+++ b/aconversions/src/rg2re/lrg2re/LRGAlgebraic.cpp
@@ -31,20 +31,20 @@ RegExp LRGAlgebraic::convert( void )
 
     for( const auto & rule : m_grammar.getRules( ) )
     {
-        const Symbol & leftSide = * rule.getLeftSide( ).begin( );
+        const Symbol & leftSide = rule.getLeftSide( ).front( );
         if( rule.getRightSide( ).size( ) == 0 )
         {
             m_solver.addEquation( leftSide, new RegExpEpsilon( ) );
         }
         else if( rule.getRightSide( ).size( ) == 1 )
         {
-            const Symbol & input = * rule.getRightSide( ).begin( );
+            const Symbol & input = rule.getRightSide( ).front( );
             m_solver.addEquation( leftSide, new RegExpSymbol( input.getSymbol( ) ) );
         }
         else
         {
-            const Symbol nt = * rule.getRightSide( ).begin( );
-            const Symbol input = * ( std::next( rule.getRightSide( ).begin( ) ) );
+            const Symbol nt = rule.getRightSide( ).front( );
+            const Symbol input = rule.getRightSide( ).back( );
             m_solver.addEquation( leftSide, nt, new RegExpSymbol( input.getSymbol( ) ) );
         }
     }
diff --git a/aconversions/src/rg2re/rrg2re/RRGAlgebraic.cpp b/aconversions/src/rg2re/rrg2re/RRGAlgebraic.cpp
index 87a2b7a2d5..71c92816fe 100644
--- a/aconversions/src/rg2re/rrg2re/RRGAlgebraic.cpp
+++ b/aconversions/src/rg2re/rrg2re/RRGAlgebraic.cpp
@@ -31,20 +31,20 @@ RegExp RRGAlgebraic::convert( void )
 
     for( const auto & rule : m_grammar.getRules( ) )
     {
-        const Symbol & leftSide = * rule.getLeftSide( ).begin( );
+        const Symbol & leftSide = rule.getLeftSide( ).front( );
         if( rule.getRightSide( ).size( ) == 0 )
         {
             m_solver.addEquation( leftSide, new RegExpEpsilon( ) );
         }
         else if( rule.getRightSide( ).size( ) == 1 )
         {
-            const Symbol & input = * rule.getRightSide( ).begin( );
+            const Symbol & input = rule.getRightSide( ).front( );
             m_solver.addEquation( leftSide, new RegExpSymbol( input.getSymbol( ) ) );
         }
         else
         {
-            const Symbol input = * rule.getRightSide( ).begin( );
-            const Symbol nt = * ( std::next( rule.getRightSide( ).begin( ) ) );
+            const Symbol input = rule.getRightSide( ).front( );
+            const Symbol nt = rule.getRightSide( ).back( );
             m_solver.addEquation( leftSide, nt, new RegExpSymbol( input.getSymbol( ) ) );
         }
     }
diff --git a/aconversions/src/rg2rg/lrg2rrg/LeftToRightRegularGrammar.cpp b/aconversions/src/rg2rg/lrg2rrg/LeftToRightRegularGrammar.cpp
index cb576b7d89..80d5559eb2 100644
--- a/aconversions/src/rg2rg/lrg2rrg/LeftToRightRegularGrammar.cpp
+++ b/aconversions/src/rg2rg/lrg2rrg/LeftToRightRegularGrammar.cpp
@@ -41,27 +41,27 @@ RightRegularGrammar LeftToRightRegularGrammar::convert( void )
     {
         if( rule.getRightSide( ).size( ) == 2 )
         {
-            list<Symbol> leftSide = { * rule.getRightSide( ).begin( ) };
-            list<Symbol> rightSide = { * std::next( rule.getRightSide( ).begin( ) ), * rule.getLeftSide( ).begin( ) };
+            list<Symbol> leftSide = { rule.getRightSide( ).front( ) };
+            list<Symbol> rightSide = { rule.getRightSide( ).back( ), rule.getLeftSide( ).front( ) };
             m_rrg.addRule( Rule( leftSide, rightSide ) );
 
-            if( * rule.getLeftSide( ).begin( ) == m_lrg.getStartSymbol( ) )
+            if( rule.getLeftSide( ).front( ) == m_lrg.getStartSymbol( ) )
             {
-                list<Symbol> leftSide = { * rule.getRightSide( ).begin( ) };
-                list<Symbol> rightSide = { * std::next( rule.getRightSide( ).begin( ) ) };
+                list<Symbol> leftSide = { rule.getRightSide( ).front( ) };
+                list<Symbol> rightSide = { rule.getRightSide( ).back( ) };
                 m_rrg.addRule( Rule( leftSide, rightSide ) );
             }
         }
         else if( rule.getRightSide( ).size( ) == 1 )
         {
             list<Symbol> leftSide = { m_rrg.getStartSymbol( ) };
-            list<Symbol> rightSide = { * rule.getRightSide( ).begin( ), *rule.getLeftSide( ).begin( ) };
+            list<Symbol> rightSide = { rule.getRightSide( ).front( ), rule.getLeftSide( ).front( ) };
             m_rrg.addRule( Rule( leftSide, rightSide ) );
 
-            if( * rule.getLeftSide( ).begin( ) == m_lrg.getStartSymbol( ) )
+            if( rule.getLeftSide( ).front( ) == m_lrg.getStartSymbol( ) )
             {
                 list<Symbol> leftSide = { m_rrg.getStartSymbol( ) };
-                list<Symbol> rightSide = { * rule.getRightSide( ).begin( ) };
+                list<Symbol> rightSide = { rule.getRightSide( ).front( ) };
                 m_rrg.addRule( Rule( leftSide, rightSide ) );
             }
         }
diff --git a/aconversions/src/rg2rg/rrg2lrg/RightToLeftRegularGrammar.cpp b/aconversions/src/rg2rg/rrg2lrg/RightToLeftRegularGrammar.cpp
index 75a62e6708..3549005164 100644
--- a/aconversions/src/rg2rg/rrg2lrg/RightToLeftRegularGrammar.cpp
+++ b/aconversions/src/rg2rg/rrg2lrg/RightToLeftRegularGrammar.cpp
@@ -41,27 +41,27 @@ LeftRegularGrammar RightToLeftRegularGrammar::convert( void )
     {
         if( rule.getRightSide( ).size( ) == 2 )
         {
-            list<Symbol> leftSide = { * std::next( rule.getRightSide( ).begin( ) ) };
-            list<Symbol> rightSide = { * rule.getLeftSide( ).begin( ), * rule.getRightSide( ).begin( ) };
+            list<Symbol> leftSide = { rule.getRightSide( ).back( ) };
+            list<Symbol> rightSide = { rule.getLeftSide( ).front( ), rule.getRightSide( ).front( ) };
             m_lrg.addRule( Rule( leftSide, rightSide ) );
 
-            if( * rule.getLeftSide( ).begin( ) == m_rrg.getStartSymbol( ) )
+            if( rule.getLeftSide( ).front( ) == m_rrg.getStartSymbol( ) )
             {
-                list<Symbol> leftSide = { * std::next( rule.getRightSide( ).begin( ) ) };
-                list<Symbol> rightSide = { * rule.getRightSide( ).begin( ) };
+                list<Symbol> leftSide = { rule.getRightSide( ).back( ) };
+                list<Symbol> rightSide = { rule.getRightSide( ).front( ) };
                 m_lrg.addRule( Rule( leftSide, rightSide ) );
             }
         }
         else if( rule.getRightSide( ).size( ) == 1 )
         {
             list<Symbol> leftSide = { m_lrg.getStartSymbol( ) };
-            list<Symbol> rightSide = { * rule.getLeftSide( ).begin( ), *rule.getRightSide( ).begin( ) };
+            list<Symbol> rightSide = { rule.getLeftSide( ).front( ), rule.getRightSide( ).front( ) };
             m_lrg.addRule( Rule( leftSide, rightSide ) );
 
-            if( * rule.getLeftSide( ).begin( ) == m_rrg.getStartSymbol( ) )
+            if( rule.getLeftSide( ).front( ) == m_rrg.getStartSymbol( ) )
             {
                 list<Symbol> leftSide = { m_lrg.getStartSymbol( ) };
-                list<Symbol> rightSide = { * rule.getRightSide( ).begin( ) };
+                list<Symbol> rightSide = { rule.getRightSide( ).front( ) };
                 m_lrg.addRule( Rule( leftSide, rightSide ) );
             }
         }
-- 
GitLab