From 56caa0d9c3a19a57f0dbbf3da0ec87d0d9127e28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Pecka?= <peckato1@fit.cvut.cz> Date: Sun, 2 Mar 2014 13:01:29 +0100 Subject: [PATCH] Allow to call RegExp::toXML on const regexp --- alib/src/regexp/RegExp.cpp | 4 ++-- alib/src/regexp/RegExp.h | 4 ++-- alib/src/regexp/RegExpPrinter.cpp | 30 +++++++++++++++--------------- alib/src/regexp/RegExpPrinter.h | 18 +++++++++--------- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/alib/src/regexp/RegExp.cpp b/alib/src/regexp/RegExp.cpp index 621b004152..2200f3999f 100644 --- a/alib/src/regexp/RegExp.cpp +++ b/alib/src/regexp/RegExp.cpp @@ -81,11 +81,11 @@ bool RegExp::containsEmptyString() const { return false; } -void RegExp::toXML(ostream& out) { +void RegExp::toXML(ostream& out) const { RegExpPrinter::toXML(*this, out); } -ostream& operator <<(ostream& out, RegExp& regexp) { +ostream& operator <<(ostream& out, const RegExp& regexp) { regexp.toXML(out); return out; } diff --git a/alib/src/regexp/RegExp.h b/alib/src/regexp/RegExp.h index f16133cc5f..9f6e624842 100644 --- a/alib/src/regexp/RegExp.h +++ b/alib/src/regexp/RegExp.h @@ -69,14 +69,14 @@ public: * Prints XML representation of the RegExp to the output stream. * @param out output stream to which print the RegExp */ - void toXML(ostream& out); + void toXML(ostream& out) const; /** * Prints XML representation of the RegExp to the output stream. * @param out output stream to which print the RegExp * @param regexp RegExp to print */ - friend ostream& operator<<(ostream& out, RegExp& regexp); + friend ostream& operator<<(ostream& out, const RegExp& regexp); bool operator<(const RegExp&) const; bool operator<=(const RegExp&) const; diff --git a/alib/src/regexp/RegExpPrinter.cpp b/alib/src/regexp/RegExpPrinter.cpp index 223ab54691..5c9afdc77f 100644 --- a/alib/src/regexp/RegExpPrinter.cpp +++ b/alib/src/regexp/RegExpPrinter.cpp @@ -11,44 +11,44 @@ namespace regexp { const string RegExpPrinter::INDENTATION = "\t"; -void RegExpPrinter::toXML(RegExp& regexp, ostream& out) { +void RegExpPrinter::toXML(const RegExp& regexp, ostream& out) { out << "<regexp>\n"; printElement(regexp.getRegExp(), out, INDENTATION); out << "</regexp>\n"; } -void RegExpPrinter::printElement(RegExpElement* element, ostream& out, string prefix) { - Alternation* alternation = dynamic_cast<Alternation*>(element); +void RegExpPrinter::printElement(const RegExpElement* element, ostream& out, const string & prefix) { + const Alternation* alternation = dynamic_cast<const Alternation*>(element); if (alternation) { printAlternation(alternation, out, prefix); return; } - Concatenation* concatenation = dynamic_cast<Concatenation*>(element); + const Concatenation* concatenation = dynamic_cast<const Concatenation*>(element); if(concatenation) { printConcatenation(concatenation,out, prefix); return; } - Iteration* iteration = dynamic_cast<Iteration*>(element); + const Iteration* iteration = dynamic_cast<const Iteration*>(element); if (iteration) { printIteration(iteration, out, prefix); return; } - RegExpEpsilon* epsilon = dynamic_cast<RegExpEpsilon*>(element); + const RegExpEpsilon* epsilon = dynamic_cast<const RegExpEpsilon*>(element); if (epsilon) { printEpsilon(epsilon, out, prefix); return; } - RegExpEmpty* empty = dynamic_cast<RegExpEmpty*>(element); + const RegExpEmpty* empty = dynamic_cast<const RegExpEmpty*>(element); if (empty) { printEmpty(empty, out, prefix); return; } - RegExpSymbol* symbol = dynamic_cast<RegExpSymbol*>(element); + const RegExpSymbol* symbol = dynamic_cast<const RegExpSymbol*>(element); if (symbol) { printSymbol(symbol, out, prefix); return; @@ -56,43 +56,43 @@ void RegExpPrinter::printElement(RegExpElement* element, ostream& out, string pr } -void RegExpPrinter::printContent(list<RegExpElement*>& content, ostream& out, string prefix) { +void RegExpPrinter::printContent(const list<RegExpElement*>& content, ostream& out, const string & prefix) { for (auto element : content) { printElement(element, out, prefix); } } -void RegExpPrinter::printAlternation(Alternation* alternation, ostream& out, string prefix) { +void RegExpPrinter::printAlternation(const Alternation* alternation, ostream& out, const string & prefix) { out << prefix << "<alternation>\n"; printContent(alternation->getElements(), out, prefix + INDENTATION); out << prefix << "</alternation>\n"; } -void RegExpPrinter::printConcatenation(Concatenation* concatenation, ostream& out, string prefix) { +void RegExpPrinter::printConcatenation(const Concatenation* concatenation, ostream& out, const string & prefix) { out << prefix <<"<concatenation>\n"; printContent(concatenation->getElements(), out, prefix + INDENTATION); out << prefix <<"</concatenation>\n"; } -void RegExpPrinter::printIteration(Iteration* iteration, ostream& out, string prefix) { +void RegExpPrinter::printIteration(const Iteration* iteration, ostream& out, const string & prefix) { out << prefix << "<iteration>\n"; printElement(iteration->getElement(), out, prefix + INDENTATION); out << prefix << "</iteration>\n"; } -void RegExpPrinter::printSymbol(RegExpSymbol* symbol, ostream& out, string prefix) { +void RegExpPrinter::printSymbol(const RegExpSymbol* symbol, ostream& out, const string & prefix) { out << prefix << "<symbol>"; out << symbol->getSymbol(); out << "</symbol>\n"; } -void RegExpPrinter::printEpsilon(RegExpEpsilon* symbol, ostream& out, string prefix) { +void RegExpPrinter::printEpsilon(const RegExpEpsilon* symbol, ostream& out, const string & prefix) { out << prefix << "<epsilon>"; out << "</epsilon>\n"; } -void RegExpPrinter::printEmpty(RegExpEmpty* symbol, ostream& out, string prefix) { +void RegExpPrinter::printEmpty(const RegExpEmpty* symbol, ostream& out, const string & prefix) { out << prefix << "<empty>"; out << "</empty>\n"; } diff --git a/alib/src/regexp/RegExpPrinter.h b/alib/src/regexp/RegExpPrinter.h index 49ba46d027..d152e7d41b 100644 --- a/alib/src/regexp/RegExpPrinter.h +++ b/alib/src/regexp/RegExpPrinter.h @@ -27,15 +27,15 @@ using namespace std; class RegExpPrinter { protected: static const string INDENTATION; - static void printElement(RegExpElement* element, ostream& out, string prefix); - static void printContent(list<RegExpElement*>& content, ostream& out, string prefix); - static void printAlternation(Alternation* alternation, ostream& out, string prefix); - static void printConcatenation(Concatenation* concatenation, ostream& out, string prefix); + static void printElement(const RegExpElement* element, ostream& out, const string & prefix); + static void printContent(const list<RegExpElement*>& content, ostream& out, const string & prefix); + static void printAlternation(const Alternation* alternation, ostream& out, const string & prefix); + static void printConcatenation(const Concatenation* concatenation, ostream& out, const string & prefix); - static void printIteration(Iteration* iteration, ostream& out, string prefix); - static void printSymbol(RegExpSymbol* symbol, ostream& out, string prefix); - static void printEpsilon(RegExpEpsilon* symbol, ostream& out, string prefix); - static void printEmpty(RegExpEmpty* symbol, ostream& out, string prefix); + static void printIteration(const Iteration* iteration, ostream& out, const string & prefix); + static void printSymbol(const RegExpSymbol* symbol, ostream& out, const string & prefix); + static void printEpsilon(const RegExpEpsilon* symbol, ostream& out, const string & prefix); + static void printEmpty(const RegExpEmpty* symbol, ostream& out, const string & prefix); public: /** @@ -43,7 +43,7 @@ public: * @param regexp RegExp to print * @param out output stream to which print the RegExp */ - static void toXML(RegExp& regexp, ostream& out); + static void toXML(const RegExp& regexp, ostream& out); }; } /* namespace regexp */ -- GitLab