Skip to content

Commit 4c38a16

Browse files
committed
Start work on saving CfgToPdaConversion.
1 parent 157b300 commit 4c38a16

9 files changed

+56
-14
lines changed

src/finite_machine/computationalrules.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,14 @@ QSet<QString> getTos(QList<ComputationalRules> list)
9696
return tos;
9797
}
9898

99-
QDataStream &operator<<(QDataStream& out, const ComputationalRules& rule)
99+
QDataStream& ComputationalRules::operator<<(QDataStream& out)
100100
{
101-
out << rule.from << rule.symbol << rule.to;
101+
out << from << symbol << to;
102102
return out;
103103
}
104104

105-
QDataStream &operator>>(QDataStream &in, ComputationalRules &rule)
105+
QDataStream& ComputationalRules::operator>>(QDataStream &in)
106106
{
107-
in >> rule.from >> rule.symbol >> rule.to;
107+
in >> from >> symbol >> to;
108108
return in;
109109
}

src/finite_machine/computationalrules.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ class ComputationalRules// : public QObject
4242
// return returnRule;
4343
// }
4444

45+
QDataStream &operator<<(QDataStream& out);
46+
QDataStream &operator>>(QDataStream &in);
47+
48+
4549
public:
4650
QString from;
4751
QString to;
@@ -51,8 +55,6 @@ class ComputationalRules// : public QObject
5155
bool operator<(const ComputationalRules& r1, const ComputationalRules& r2);
5256

5357
QDebug operator<<(QDebug dbg, const ComputationalRules& rule);
54-
QDataStream &operator<<(QDataStream& out, const ComputationalRules& rule);
55-
QDataStream &operator>>(QDataStream &in, ComputationalRules &rule);
5658

5759
bool lessThan(const ComputationalRules& r1, const ComputationalRules& r2);
5860
QSet <QString> getFroms(QList <ComputationalRules> list);

src/finite_machine/finiteautomata.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,7 +1047,7 @@ bool operator ==(const FiniteAutomata FA1, const FiniteAutomata FA2)
10471047
return true;
10481048
}
10491049

1050-
QDebug operator<< (QDebug d, const FiniteAutomata &FA)
1050+
QDebug operator<<(QDebug d, const FiniteAutomata &FA)
10511051
{
10521052
d << "FA=(Q,S,R,s,F)";
10531053
d << "Q={" << FA.m_states <<"}";
@@ -1059,18 +1059,18 @@ QDebug operator<< (QDebug d, const FiniteAutomata &FA)
10591059
return d;
10601060
}
10611061

1062-
QDataStream &operator<<(QDataStream &out, const FiniteAutomata &FA)
1062+
QDataStream& FiniteAutomata::operator<<(QDataStream &out)
10631063
{
1064-
out << FA.m_states << FA.m_startState << FA.m_finalStates << FA.m_alphabet << FA.m_rules << (quint32)FA.m_nextId << FA.m_coordinates;
1064+
out << m_states << m_startState << m_finalStates << m_alphabet << m_rules << (quint32)m_nextId << m_coordinates;
10651065
return out;
10661066
}
10671067

10681068

10691069

1070-
QDataStream &operator>>(QDataStream &in, FiniteAutomata &FA)
1070+
QDataStream& FiniteAutomata::operator>>(QDataStream &in)
10711071
{
10721072
quint32 nextId;
1073-
in >> FA.m_states >> FA.m_startState >> FA.m_finalStates >> FA.m_alphabet >> FA.m_rules >> nextId >> FA.m_coordinates;
1074-
FA.m_nextId = (int)nextId;
1073+
in >> m_states >> m_startState >> m_finalStates >> m_alphabet >> m_rules >> nextId >> m_coordinates;
1074+
m_nextId = (int)nextId;
10751075
return in;
10761076
}

src/finite_machine/finiteautomata.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ class FiniteAutomata
9090
QString PrintHtmlRules();
9191
QString PrintHtmlStartState();
9292
QString PrintHtmlFinalStates();
93+
QDataStream& operator<<(QDataStream &out);
94+
QDataStream& operator >> (QDataStream &in);
9395

9496
// Getters and setters
9597
public:
@@ -118,6 +120,4 @@ bool operator==(const FiniteAutomata FA1, const FiniteAutomata FA2);
118120
*/
119121
QDebug operator<< (QDebug d, const FiniteAutomata& FA);
120122

121-
QDataStream& operator<<(QDataStream &out, const FiniteAutomata &FA);
122-
QDataStream& operator>>(QDataStream &in, FiniteAutomata &FA);
123123
#endif // FINITEAUTOMATA_H

src/finite_machine/pdacompotutationalrules.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,20 @@ QString CPDACompotutationalRule::ToArrowText(const QSet<CPDACompotutationalRule>
3030
return outText;
3131
}
3232

33+
QDataStream & CPDACompotutationalRule::operator<<(QDataStream & out)
34+
{
35+
ComputationalRules::operator<<(out);
36+
out << m_popSymol;
37+
out << m_pushSymbols;
38+
return out;
39+
// TODO: insert return statement here
40+
}
41+
42+
QDataStream & CPDACompotutationalRule::operator >> (QDataStream & in)
43+
{
44+
// TODO: insert return statement here
45+
}
46+
3347
QSet<QString> CPDACompotutationalRule::GetStackSymbols()
3448
{
3549
QSet<QString> stackSymbols;

src/finite_machine/pdacompotutationalrules.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ class CPDACompotutationalRule : public ComputationalRules
6969
// return returnRule;
7070
// }
7171

72+
public:
73+
QDataStream &operator<<(QDataStream& out);
74+
QDataStream &operator>>(QDataStream &in);
75+
7276
public:
7377
QString GetPopSymbol() { return m_popSymol; }
7478
QVector<QString> GetPushSymbols() { return m_pushSymbols; }

src/finite_machine/pushdownautomata.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,18 @@ bool CPushDownAutomata::AreEquivalentSimpleImplementation(CPushDownAutomata pda1
133133

134134
}
135135

136+
QDataStream& CPushDownAutomata::operator<<(QDataStream & out)
137+
{
138+
FiniteAutomata::operator<<(out);
139+
return out << m_stackAlphabet << m_pdaRules;
140+
}
141+
142+
QDataStream& CPushDownAutomata::operator>>(QDataStream & in)
143+
{
144+
FiniteAutomata::operator>>(in);
145+
return in >> m_stackAlphabet >> m_pdaRules;
146+
}
147+
136148
bool operator ==(const CPushDownAutomata& pda1, const CPushDownAutomata& pda2)
137149
{
138150
if (pda1.m_states != pda2.m_states)

src/finite_machine/pushdownautomata.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,16 @@ class CPushDownAutomata : public FiniteAutomata
2626
bool RenameState(QString oldStateName, QString newStateName);
2727
static bool AreEquivalent(CPushDownAutomata pda1, CPushDownAutomata pda2);
2828
static bool AreEquivalentSimpleImplementation(CPushDownAutomata pda1, CPushDownAutomata pda2);
29+
QDataStream& operator<<(QDataStream &out);
30+
QDataStream& operator >> (QDataStream &in);
2931

3032
public:
3133
QSet <QString> m_stackAlphabet;
3234
QSet <CPDACompotutationalRule> m_pdaRules;
3335
};
3436

3537
bool operator==(const CPushDownAutomata& pda1, const CPushDownAutomata& pda2);
38+
QDataStream& operator<<(QDataStream &out, const FiniteAutomata &FA);
39+
QDataStream& operator >> (QDataStream &in, FiniteAutomata &FA);
3640

3741
#endif // PUSHDOWNAUTOMATA_H

src/mainwindow.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -684,6 +684,12 @@ void MainWindow::on_action_save_triggered()
684684
out << ((CFADeterminizationWidget*)m_centralWidget)->GetOutputFA();
685685
}
686686
break;
687+
case CFG_TO_PDA:
688+
out << ((CCfgToPdaWidget*)m_centralWidget)->GetCfg();
689+
if (m_mode != AlgorithmModes::algorithmSteping) {
690+
out << ((CCfgToPdaWidget*)m_centralWidget)->GetPda();
691+
}
692+
break;
687693
// This should never happend
688694
case none:
689695
showStatusMessage(tr("ERROR: No conversion selected!"));

0 commit comments

Comments
 (0)