diff --git a/alib/src/regexp/RegExp.cpp b/alib/src/regexp/RegExp.cpp index 621b00415264f179667d187fc98a9a04465a82b1..2200f3999faf593907834c41f67a985f834aa29a 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 f16133cc5fa38305e2701f569705de2b5fca3317..9f6e62484221f68dd9c5f9be6787aff70df18596 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 223ab546911f2e457c2a9f3558d7cc2da972c8b3..5c9afdc77fe63f34aa2e43e6ee3377648facf1a1 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 49ba46d027298d068fde7355c487f239a57fc75e..d152e7d41b480a7c9aafbb4119024a61e03408d2 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 */