@@ -771,7 +771,7 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
771771
772772 Abstract::SetOfStateRefs getStateRefs () {
773773 Abstract::SetOfStateRefs result;
774- for (auto i : this ->states ) {
774+ for (const auto & i : this ->states ) {
775775 result.insert (&(*(i.second )));
776776 }
777777 return result;
@@ -801,8 +801,8 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
801801 };
802802
803803 void setEdgeLabel (const EdgeRef<StateLabelType, EdgeLabelType> &e, const EdgeLabelType &l) {
804- auto ee = std::dynamic_pointer_cast <Edge<StateLabelType, EdgeLabelType>>(
805- (*this ->edges .find (e->getId ())).second );
804+ auto ee = dynamic_cast <Edge<StateLabelType, EdgeLabelType>* >(
805+ (*this ->edges .find (e->getId ())).second . get () );
806806 ee->setLabel (l);
807807 }
808808
@@ -829,7 +829,7 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
829829 // get all labels
830830 const SetOfStates<StateLabelType, EdgeLabelType> &allStates = this ->getStates ();
831831
832- for (auto iter : allStates) {
832+ for (const auto & iter : allStates) {
833833 auto s = dynamic_cast <State<StateLabelType, EdgeLabelType> &>(*(iter.second ));
834834 if (s.stateLabel == src) {
835835 const StateRef<StateLabelType, EdgeLabelType> srcState = this ->getStateLabeled (src);
@@ -856,7 +856,7 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
856856 std::unique_ptr<FiniteStateMachine<StateLabelType, EdgeLabelType>> determinizeEdgeLabels () {
857857 std::unique_ptr<FiniteStateMachine<StateLabelType, EdgeLabelType>> result =
858858 std::unique_ptr<FiniteStateMachine<StateLabelType, EdgeLabelType>>(
859- this ->newInstance ());
859+ dynamic_cast <FiniteStateMachine<StateLabelType, EdgeLabelType>*>( this ->newInstance (). release () ));
860860
861861 // maintain map of sets of states to the corresponding new states.
862862 std::map<const Abstract::SetOfStateRefs, const State<StateLabelType, EdgeLabelType> *>
@@ -876,7 +876,7 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
876876 result->setInitialState (si);
877877
878878 // add initial state to list of unprocessed state sets
879- unprocessed.push_back (initialStateSet);
879+ unprocessed.push_back (std::move ( initialStateSet) );
880880
881881 while (!unprocessed.empty ()) {
882882 Abstract::SetOfStateRefs *Q = (unprocessed.begin ())->get ();
@@ -1003,8 +1003,7 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
10031003 changed = true ;
10041004 }
10051005 }
1006- auto tempEqClasses = eqClasses;
1007- eqClasses = newEqClasses;
1006+ eqClasses = std::move (newEqClasses);
10081007 } while (changed);
10091008 }
10101009
@@ -1054,12 +1053,12 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
10541053 changed = true ;
10551054 }
10561055 }
1057- auto tempEqClasses = eqClasses;
1058- eqClasses = newEqClasses;
1056+ eqClasses = std::move (newEqClasses);
10591057 } while (changed);
10601058
10611059 std::unique_ptr<FiniteStateMachine<StateLabelType, EdgeLabelType>> result =
1062- this ->newInstance ();
1060+ std::unique_ptr<FiniteStateMachine<StateLabelType, EdgeLabelType>>(
1061+ dynamic_cast <FiniteStateMachine<StateLabelType, EdgeLabelType>*>(this ->newInstance ().release ()));
10631062
10641063 // make a state for every equivalence class
10651064 std::map<Abstract::SetOfStateRefs *, StateRef<StateLabelType, EdgeLabelType>> newStateMap;
@@ -1069,7 +1068,7 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
10691068 const State<StateLabelType, EdgeLabelType> *s =
10701069 dynamic_cast <const State<StateLabelType, EdgeLabelType> *>(*(cli->begin ()));
10711070 auto ns = result->addState (s->stateLabel );
1072- newStateMap[cli] = ns;
1071+ newStateMap[cli. get () ] = ns;
10731072 sid++;
10741073 }
10751074
@@ -1081,7 +1080,7 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
10811080 // for every outgoing edge
10821081 for (const auto *edi : es) {
10831082 auto ed = dynamic_cast <EdgeRef<StateLabelType, EdgeLabelType>>(edi);
1084- result->addEdge (*(newStateMap[cli]),
1083+ result->addEdge (*(newStateMap[cli. get () ]),
10851084 ed->getLabel (),
10861085 *(newStateMap[eqMap[ed->getDestination ()]]));
10871086 }
0 commit comments