@@ -334,17 +334,17 @@ template <typename StateLabelType, typename EdgeLabelType> class Edge : public A
334334 EdgeLabelType label;
335335};
336336
337- template <typename StateLabelType, typename EdgeLabelType>
338- class SetOfEdges : public Abstract ::SetOfEdges {
339- public:
340- using CIter = typename SetOfEdges<StateLabelType, EdgeLabelType> ::const_iterator;
341- };
337+ // template <typename StateLabelType, typename EdgeLabelType>
338+ // class SetOfEdges : public Abstract::SetOfEdges {
339+ // public:
340+ // using CIter = typename Abstract:: SetOfEdges::const_iterator;
341+ // };
342342
343- template <typename StateLabelType, typename EdgeLabelType>
344- class SetOfEdgeRefs : public Abstract ::SetOfEdgeRefs {
345- public:
346- using CIter = typename SetOfEdgeRefs<StateLabelType, EdgeLabelType> ::const_iterator;
347- };
343+ // template <typename StateLabelType, typename EdgeLabelType>
344+ // class SetOfEdgeRefs : public Abstract::SetOfEdgeRefs {
345+ // public:
346+ // using CIter = typename Abstract:: SetOfEdgeRefs::const_iterator;
347+ // };
348348
349349template <typename StateLabelType, typename EdgeLabelType>
350350class SetOfStates : public Abstract ::SetOfStates {
@@ -364,11 +364,11 @@ class SetOfStates : public Abstract::SetOfStates {
364364 }
365365};
366366
367- template <typename StateLabelType, typename EdgeLabelType>
368- class SetOfStateRefs : public Abstract ::SetOfStateRefs {
369- public:
370- using CIter = typename SetOfStateRefs::const_iterator;
371- };
367+ // template <typename StateLabelType, typename EdgeLabelType>
368+ // class SetOfStateRefs : public Abstract::SetOfStateRefs {
369+ // public:
370+ // using CIter = typename SetOfStateRefs::const_iterator;
371+ // };
372372
373373template <typename StateLabelType, typename EdgeLabelType> class State : public Abstract ::State {
374374public:
@@ -381,14 +381,13 @@ template <typename StateLabelType, typename EdgeLabelType> class State : public
381381 [[nodiscard]] const StateLabelType &getLabel () const { return this ->stateLabel ; }
382382
383383 // return all next states reachable via an edge labelled l
384- std::shared_ptr<SetOfStateRefs<StateLabelType, EdgeLabelType> >
384+ std::shared_ptr<Abstract:: SetOfStateRefs>
385385 nextStatesOfEdgeLabel (const EdgeLabelType l) {
386- auto result = std::make_shared<SetOfStateRefs<StateLabelType, EdgeLabelType> >();
387- auto es = static_cast <SetOfEdgeRefs<StateLabelType, EdgeLabelType> &>(
386+ auto result = std::make_shared<Abstract:: SetOfStateRefs>();
387+ auto es = static_cast <const Abstract::SetOfEdgeRefs &>(
388388 this ->getOutgoingEdges ());
389- typename SetOfEdgeRefs<StateLabelType, EdgeLabelType>::CIter i;
390- for (i = es.begin (); i != es.end (); i++) {
391- auto *e = static_cast <Edge<StateLabelType, EdgeLabelType> *>(*i);
389+ for (auto & i: es) {
390+ auto *e = static_cast <Edge<StateLabelType, EdgeLabelType> *>(i);
392391 if (e->label == l) {
393392 result->insert (&(e->getDestination ()));
394393 }
@@ -399,11 +398,10 @@ template <typename StateLabelType, typename EdgeLabelType> class State : public
399398 // return an arbitrary next state reachable via an edge labelled l
400399 // or null if no such state exists
401400 State<StateLabelType, EdgeLabelType> *nextStateOfEdgeLabel (const EdgeLabelType l) {
402- auto es = static_cast <SetOfEdgeRefs<StateLabelType, EdgeLabelType> &>(
401+ auto es = static_cast <const Abstract::SetOfEdgeRefs &>(
403402 this ->getOutgoingEdges ());
404- typename SetOfEdgeRefs<StateLabelType, EdgeLabelType>::CIter i;
405- for (i = es.begin (); i != es.end (); i++) {
406- Edge<StateLabelType, EdgeLabelType> *e = *i;
403+ for (auto & i: es) {
404+ Edge<StateLabelType, EdgeLabelType> *e = i;
407405 if (e->label == l) {
408406 return e->getDestination ();
409407 }
@@ -417,7 +415,7 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
417415
418416private:
419417 SetOfStates<StateLabelType, EdgeLabelType> states;
420- SetOfEdges<StateLabelType, EdgeLabelType> edges;
418+ Abstract:: SetOfEdges edges;
421419 const State<StateLabelType, EdgeLabelType> *initialState;
422420
423421public:
@@ -444,7 +442,6 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
444442 EdgeLabelType lbl,
445443 State<StateLabelType, EdgeLabelType> &dst) {
446444 bool added = false ;
447- typename SetOfEdges<StateLabelType, EdgeLabelType>::CIter i;
448445 auto ep = std::make_shared<Edge<StateLabelType, EdgeLabelType>>(src, lbl, dst);
449446 auto & e = *ep;
450447 this ->edges [e.getId ()] = std::move (ep);
@@ -458,7 +455,7 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
458455
459456 void removeState (const State<StateLabelType, EdgeLabelType>& s) {
460457 // remove related edges
461- SetOfEdgeRefs<StateLabelType, EdgeLabelType> edgesToRemove;
458+ Abstract:: SetOfEdgeRefs edgesToRemove;
462459 for (auto & it: this ->edges ) {
463460 auto & e = *(it.second );
464461 auto src = dynamic_cast <const State<StateLabelType, EdgeLabelType>&>(e.getSource ());
@@ -520,12 +517,12 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
520517
521518 SetOfStates<StateLabelType, EdgeLabelType> &getStates () { return this ->states ; };
522519
523- SetOfEdges<StateLabelType, EdgeLabelType> &getEdges () { return this ->edges ; };
520+ Abstract:: SetOfEdges &getEdges () { return this ->edges ; };
524521
525522 Edge<StateLabelType, EdgeLabelType> *
526523 getEdge (const State<StateLabelType, EdgeLabelType> &source,
527524 const State<StateLabelType, EdgeLabelType> &target) {
528- auto e = static_cast <const SetOfEdgeRefs<StateLabelType, EdgeLabelType> &>(
525+ auto e = static_cast <const Abstract:: SetOfEdgeRefs &>(
529526 source.getOutgoingEdges ());
530527
531528 // collect all labels in edges of s
@@ -578,12 +575,12 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
578575 if (s->stateLabel == src) {
579576 State<StateLabelType, EdgeLabelType> &srcState = this ->getStateLabeled (src);
580577
581- const SetOfEdgeRefs<StateLabelType, EdgeLabelType> &outgoingEdges =
582- static_cast <const SetOfEdges<StateLabelType, EdgeLabelType> &>(
578+ const Abstract:: SetOfEdgeRefs &outgoingEdges =
579+ static_cast <const Abstract::SetOfEdgeRefs &>(
583580 srcState.getOutgoingEdges ());
584581
585- for (auto it : outgoingEdges) {
586- auto e = *it ;
582+ for (auto & it : outgoingEdges) {
583+ auto e = dynamic_cast < const Edge<StateLabelType, EdgeLabelType> *>(it) ;
587584 auto dstState = e->getDestination ();
588585 if (e->label == lbl && dstState->getLabel () == dst) {
589586 found = e;
@@ -602,12 +599,12 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
602599 result = std::make_shared<FiniteStateMachine<StateLabelType, EdgeLabelType>>();
603600
604601 // maintain map of sets of states to the corresponding new states.
605- std::map<const SetOfStateRefs<StateLabelType, EdgeLabelType> &,
602+ std::map<const Abstract:: SetOfStateRefs &,
606603 State<StateLabelType, EdgeLabelType> *>
607604 newStatesMap;
608605
609606 // queue of states that need to be further explored.
610- std::list<std::shared_ptr<SetOfStateRefs<StateLabelType, EdgeLabelType> >> unprocessed;
607+ std::list<std::shared_ptr<Abstract:: SetOfStateRefs>> unprocessed;
611608
612609 // create initial state
613610 std::shared_ptr<SetOfStates<StateLabelType, EdgeLabelType>> initialStateSet;
@@ -624,12 +621,12 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
624621 unprocessed.push_back (initialStateSet);
625622
626623 while (!unprocessed.empty ()) {
627- std::shared_ptr< SetOfStateRefs<StateLabelType, EdgeLabelType>> Q = *unprocessed.begin ();
628- unprocessed-> erase (unprocessed.begin ());
624+ Abstract:: SetOfStateRefs Q = *(*( unprocessed.begin ()) );
625+ unprocessed. erase (unprocessed.begin ());
629626
630627 // get all outgoing labels
631628 std::set<EdgeLabelType> labels;
632- for (auto i : Q) {
629+ for (const auto * i : Q) {
633630 auto s = *i;
634631 this ->insertOutgoingLabels (s, labels);
635632 }
@@ -639,18 +636,18 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
639636 EdgeLabelType l = *j;
640637
641638 // collect image state in Qnext
642- std::shared_ptr<SetOfStateRefs<StateLabelType, EdgeLabelType> > Qnext =
643- std::make_shared<SetOfStateRefs<StateLabelType, EdgeLabelType> >();
639+ std::shared_ptr<Abstract:: SetOfStateRefs> Qnext =
640+ std::make_shared<Abstract:: SetOfStateRefs>();
644641
645642 // for every state s in Q
646- for (auto i : * Q) {
647- auto s = *i ;
648- std::shared_ptr<SetOfStateRefs<StateLabelType, EdgeLabelType> > l_img =
649- s-> nextStatesOfEdgeLabel (l);
643+ for (const auto * i : Q) {
644+ const auto & s = dynamic_cast <State<StateLabelType, EdgeLabelType> &>(*i) ;
645+ std::shared_ptr<Abstract:: SetOfStateRefs> l_img =
646+ s. nextStatesOfEdgeLabel (l);
650647
651648 // add all l-images from s to Qnext
652- for (auto k : *l_img) {
653- auto *simg = * k;
649+ for (auto & k : *l_img) {
650+ auto *simg = k;
654651 Qnext->insert (simg);
655652 }
656653 }
@@ -670,7 +667,7 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
670667 }
671668
672669 // add an edge in the new fsm
673- result->addEdge (newStatesMap[* Q], l, ns);
670+ result->addEdge (newStatesMap[Q], l, ns);
674671 }
675672 }
676673
@@ -686,19 +683,19 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
686683 // partition refinement algorithm
687684
688685 // generate a vector of equivalence classes
689- std::shared_ptr<std::list<std::shared_ptr<SetOfStateRefs<StateLabelType, EdgeLabelType> >>>
686+ std::shared_ptr<std::list<std::shared_ptr<Abstract:: SetOfStateRefs>>>
690687 eqClasses = std::make_shared<std::list<
691- std::shared_ptr<SetOfStateRefs<StateLabelType, EdgeLabelType> >>>();
688+ std::shared_ptr<Abstract:: SetOfStateRefs>>>();
692689
693690 // populate it with s set of all states
694- std::shared_ptr<SetOfStateRefs<StateLabelType, EdgeLabelType> > initialClass =
695- std::make_shared<SetOfStateRefs<StateLabelType, EdgeLabelType> >(
691+ std::shared_ptr<Abstract:: SetOfStateRefs> initialClass =
692+ std::make_shared<Abstract:: SetOfStateRefs>(
696693 *(this ->getStates ()));
697694 eqClasses->push_back (initialClass);
698695
699696 // initially map all state to the initial class
700697 EquivalenceMap eqMap;
701- for (auto si : initialClass) {
698+ for (const auto * si : * initialClass) {
702699 eqMap[*si] = initialClass;
703700 }
704701
@@ -708,13 +705,13 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
708705 changed = false ;
709706
710707 std::shared_ptr<
711- std::list<std::shared_ptr<SetOfStateRefs<StateLabelType, EdgeLabelType> >>>
708+ std::list<std::shared_ptr<Abstract:: SetOfStateRefs>>>
712709 newEqClasses = std::make_shared<std::list<
713- std::shared_ptr<SetOfStateRefs<StateLabelType, EdgeLabelType> >>>();
710+ std::shared_ptr<Abstract:: SetOfStateRefs>>>();
714711
715712 // for every potential equivalence class
716- for (auto ic : eqClasses) {
717- SetOfStateRefs<StateLabelType, EdgeLabelType> * _class = * ic;
713+ for (const auto & ic : * eqClasses) {
714+ std::shared_ptr<Abstract::SetOfStateRefs> _class = ic;
718715
719716 typename SetOfStates<StateLabelType, EdgeLabelType>::iterator i;
720717 i = _class->begin ();
@@ -724,10 +721,10 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
724721 State<StateLabelType, EdgeLabelType> *s2 = nullptr ;
725722 s1 = *i;
726723
727- std::shared_ptr<SetOfStateRefs<StateLabelType, EdgeLabelType> > equivSet =
728- std::make_shared<SetOfStateRefs<StateLabelType, EdgeLabelType> >();
729- std::shared_ptr<SetOfStateRefs<StateLabelType, EdgeLabelType> > remainingSet =
730- std::make_shared<SetOfStateRefs<StateLabelType, EdgeLabelType> >();
724+ std::shared_ptr<Abstract:: SetOfStateRefs> equivSet =
725+ std::make_shared<Abstract:: SetOfStateRefs>();
726+ std::shared_ptr<Abstract:: SetOfStateRefs> remainingSet =
727+ std::make_shared<Abstract:: SetOfStateRefs>();
731728 equivSet->insert (s1);
732729
733730 // check whether all other states can go with the same label to
@@ -760,11 +757,11 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
760757 std::make_shared<FiniteStateMachine<StateLabelType, EdgeLabelType>>();
761758
762759 // make a state for every equivalence class
763- std::map<SetOfStateRefs<StateLabelType, EdgeLabelType> *,
760+ std::map<Abstract:: SetOfStateRefs *,
764761 State<StateLabelType, EdgeLabelType> *>
765762 newStateMap;
766763 CId sid = 0 ;
767- for (auto cli : eqClasses) {
764+ for (const auto & cli : * eqClasses) {
768765 std::shared_ptr<State<StateLabelType, EdgeLabelType>> ns =
769766 std::make_shared<State<StateLabelType, EdgeLabelType>>(sid);
770767 result->addState (ns);
@@ -773,13 +770,13 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
773770 }
774771
775772 // make the appropriate edges
776- for (auto cli : eqClasses) {
773+ for (const auto & cli : * eqClasses) {
777774 // take a representative state
778- auto s = *((* cli) ->begin ());
775+ const auto * s = *(cli->begin ());
779776 auto es = s->getOutgoingEdges ();
780777 // for every outgoing edge
781- for (auto edi : es) {
782- auto ed = * edi;
778+ for (auto * edi : es) {
779+ auto ed = dynamic_cast <Edge<StateLabelType, EdgeLabelType>*>( edi) ;
783780 result->addEdge (
784781 newStateMap[*cli], ed->label , newStateMap[eqMap[ed->getDestination ()]]);
785782 }
@@ -794,11 +791,11 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
794791private:
795792 void insertOutgoingLabels (State<StateLabelType, EdgeLabelType> *s,
796793 std::set<EdgeLabelType> &labels) {
797- const SetOfEdgeRefs<StateLabelType, EdgeLabelType> &e = s->getOutgoingEdges ();
794+ const Abstract:: SetOfEdgeRefs &e = s->getOutgoingEdges ();
798795
799796 // collect all labels in edges of s
800- for (auto i : e) {
801- auto *ed = *i ;
797+ for (auto * i : e) {
798+ auto *ed = dynamic_cast <Edge<StateLabelType, EdgeLabelType>*>(i) ;
802799 labels.insert (ed->label );
803800 }
804801 };
@@ -853,9 +850,9 @@ class FiniteStateMachine : public Abstract::FiniteStateMachine {
853850using ELSState = ::FSM::Labeled::State<CId, CString>;
854851using ELSEdge = ::FSM::Labeled::Edge<CId, CString>;
855852using ELSSetOfStates = ::FSM::Labeled::SetOfStates<CId, CString>;
856- using ELSSetOfEdges = ::FSM::Labeled ::SetOfEdges<CId, CString> ;
857- using ELSSetOfStateRefs = ::FSM::Labeled ::SetOfStateRefs<CId, CString> ;
858- using ELSSetOfEdgeRefs = ::FSM::Labeled ::SetOfEdgeRefs<CId, CString> ;
853+ using ELSSetOfEdges = ::FSM::Abstract ::SetOfEdges;
854+ using ELSSetOfStateRefs = ::FSM::Abstract ::SetOfStateRefs;
855+ using ELSSetOfEdgeRefs = ::FSM::Abstract ::SetOfEdgeRefs;
859856
860857class EdgeLabeledScenarioFSM : public ::FSM::Labeled::FiniteStateMachine<CId, CString> {
861858public:
@@ -874,18 +871,18 @@ namespace StateStringLabeled {
874871// make an FSM class with unlabeled edges, based on the labeled one with some dummy char labels
875872//
876873
877- class SetOfEdges : public Labeled ::SetOfEdges<CString, char > {};
878- class SetOfEdgeRefs : public Labeled ::SetOfEdgeRefs<CString, char > {};
874+ // class SetOfEdges : public Labeled::SetOfEdges<CString, char> {};
875+ // class SetOfEdgeRefs : public Labeled::SetOfEdgeRefs<CString, char> {};
879876
880- class SetOfStates : public Labeled ::SetOfStates<CString, char > {};
881- class SetOfStateRefs : public Labeled ::SetOfStateRefs<CString, char > {};
877+ // class SetOfStates : public Labeled::SetOfStates<CString, char> {};
878+ // class SetOfStateRefs : public Labeled::SetOfStateRefs<CString, char> {};
882879
883880class State : public Labeled ::State<CString, char > {
884881public:
885882 explicit State (const CString &withLabel) : Labeled::State<CString, char>(withLabel) {}
886883
887- const SetOfEdgeRefs &getOutgoingEdges () {
888- return dynamic_cast <const SetOfEdgeRefs &>(
884+ const Abstract:: SetOfEdgeRefs &getOutgoingEdges () {
885+ return dynamic_cast <const Abstract:: SetOfEdgeRefs &>(
889886 Labeled::State<CString, char >::getOutgoingEdges ());
890887 }
891888};
@@ -905,7 +902,7 @@ class FiniteStateMachine : public Labeled::FiniteStateMachine<CString, char> {
905902
906903 void addEdgeLabeled (const CString &src, const CString &dst);
907904
908- std::shared_ptr<SetOfStateRefs> reachableStates ();
905+ std::shared_ptr<Abstract:: SetOfStateRefs> reachableStates ();
909906};
910907
911908class Edge : public Labeled ::Edge<CString, char > {};
0 commit comments