diff --git a/alib2data/src/factory/GrammarFactory.cpp b/alib2data/src/factory/GrammarFactory.cpp index 8564bf47daf14b82b01c0216b05bfdf90d063c28..ee75ddfc76057338223ad3ab9814868f73b73e92 100644 --- a/alib2data/src/factory/GrammarFactory.cpp +++ b/alib2data/src/factory/GrammarFactory.cpp @@ -40,19 +40,19 @@ Grammar GrammarFactory::fromTokens(std::list<sax::Token> tokens) { } void GrammarFactory::toFile(const Grammar& grammar, const std::string& filename) { - toFile(grammar.getGrammar(), filename); + toFile(grammar.getData(), filename); } std::string GrammarFactory::toString(const Grammar& grammar) { - return toString(grammar.getGrammar()); + return toString(grammar.getData()); } void GrammarFactory::toStdout(const Grammar& grammar) { - return GrammarFactory::toStdout(grammar.getGrammar()); + return GrammarFactory::toStdout(grammar.getData()); } void GrammarFactory::toStream(const Grammar& grammar, std::ostream& out) { - toStream(grammar.getGrammar(), out); + toStream(grammar.getData(), out); } void GrammarFactory::toFile(const GrammarBase& grammar, const std::string& filename) { diff --git a/alib2data/src/grammar/Grammar.cpp b/alib2data/src/grammar/Grammar.cpp deleted file mode 100644 index fc0fc1ad5a572bcfaf7be556ebc4976cae971952..0000000000000000000000000000000000000000 --- a/alib2data/src/grammar/Grammar.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Grammar.cpp - * - * Created on: Apr 16, 2013 - * Author: Martin Zak - */ - -#include "Grammar.h" - -namespace grammar { - -Grammar::Grammar(const GrammarBase& grammar) : grammar(grammar.clone()) { - -} - -Grammar::Grammar(GrammarBase&& grammar) : grammar(std::move(grammar).plunder()) { - -} - -Grammar::Grammar(const Grammar& other) : grammar(other.getGrammar().clone()) { - -} - -Grammar::Grammar(Grammar&& other) noexcept : grammar(std::move(other.getGrammar()).plunder()) { - other.grammar = NULL; -} - -Grammar& Grammar::operator=(const Grammar& other) { - if(this == &other) return *this; - - delete grammar; - grammar = other.getGrammar().clone(); - - return *this; -} - -Grammar& Grammar::operator=(Grammar&& other) noexcept { - std::swap(this->grammar, other.grammar); - return *this; -} - -Grammar::~Grammar() { - delete grammar; -} - -const GrammarBase& Grammar::getGrammar() const { - return *grammar; -} - -GrammarBase& Grammar::getGrammar() { - return *grammar; -} - -void Grammar::setGrammar(const GrammarBase& grammar) { - delete this->grammar; - this->grammar = grammar.clone(); -} - -void Grammar::setGrammar(GrammarBase&& grammar) { - delete this->grammar; - this->grammar = std::move(grammar).plunder(); -} - -bool Grammar::operator!=(const Grammar& other) const { - return !(*this == other); -} - -bool Grammar::operator==(const Grammar& other) const { - return this->getGrammar() == other.getGrammar(); -} - -std::ostream& operator<<(std::ostream& os, const Grammar& grammar) { - os << grammar.getGrammar(); - return os; -} - -} /* namespace grammar */ - diff --git a/alib2data/src/grammar/Grammar.h b/alib2data/src/grammar/Grammar.h index 95ffefe2bd4d8042f4c21055463314e5e80a44a9..5102031af0653507ff2102128cdfe6301e936529 100644 --- a/alib2data/src/grammar/Grammar.h +++ b/alib2data/src/grammar/Grammar.h @@ -10,36 +10,14 @@ #include "../std/visitor.hpp" #include "GrammarBase.h" +#include "../common/wrapper.hpp" namespace grammar { /** * Wrapper around automata. */ -class Grammar { -protected: - GrammarBase* grammar; -public: - explicit Grammar(const GrammarBase& grammar); - explicit Grammar(GrammarBase&& grammar); - Grammar(const Grammar& other); - Grammar(Grammar&&) noexcept; - Grammar& operator=(const Grammar& other); - Grammar& operator=(Grammar&& other) noexcept; - virtual ~Grammar() noexcept; - - const GrammarBase& getGrammar() const; - GrammarBase& getGrammar(); - - void setGrammar(const GrammarBase& grammar); - void setGrammar(GrammarBase&& grammar); - - bool operator!=(const Grammar& other) const; - - bool operator==(const Grammar& other) const; - - friend std::ostream& operator<<(std::ostream& os, const Grammar& grammar); -}; +typedef alib::wrapper<GrammarBase> Grammar; } /* namespace grammar */ diff --git a/alib2data/src/grammar/GrammarToXMLComposer.cpp b/alib2data/src/grammar/GrammarToXMLComposer.cpp index 90a648879dbad56de99493c59e5095c87a2a492e..008ce281ba5856a6c3f176e82364dcdf2371d7be 100644 --- a/alib2data/src/grammar/GrammarToXMLComposer.cpp +++ b/alib2data/src/grammar/GrammarToXMLComposer.cpp @@ -632,7 +632,7 @@ void GrammarToXMLComposer::composeRuleRightLGRHS(std::list<sax::Token>& out, con std::list<sax::Token> GrammarToXMLComposer::compose(const Grammar& grammar) const { std::list<sax::Token> out; - grammar.getGrammar().Accept((void*) &out, *this); + Visit((void*) &out, grammar); return out; } diff --git a/alib2data/test-src/grammar/GrammarTest.cpp b/alib2data/test-src/grammar/GrammarTest.cpp index 20cb3ed63bb0304fc724c47bb3b9f9bd6acb38c9..d9e17136062d304b3b88ee21bfc81e8ab5ff8b06 100644 --- a/alib2data/test-src/grammar/GrammarTest.cpp +++ b/alib2data/test-src/grammar/GrammarTest.cpp @@ -51,7 +51,7 @@ void GrammarTest::testXMLParser() { std::string tmp = grammar::GrammarFactory::toString(grammar); grammar::Grammar grammar2 = grammar::GrammarFactory::fromString(tmp); - CPPUNIT_ASSERT( grammar == grammar2.getGrammar() ); + CPPUNIT_ASSERT( grammar == grammar2.getData() ); } }