From c637495b4a212f2a305ec8f9df389264d341ec71 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Fri, 22 May 2015 16:16:37 +0200 Subject: [PATCH] move semantics for strings --- alib2data/src/string/CyclicString.cpp | 14 ++------------ alib2data/src/string/CyclicString.h | 6 ++---- alib2data/src/string/LinearString.cpp | 22 +++------------------- alib2data/src/string/LinearString.h | 10 +++------- 4 files changed, 10 insertions(+), 42 deletions(-) diff --git a/alib2data/src/string/CyclicString.cpp b/alib2data/src/string/CyclicString.cpp index ad66f79f17..f759d8c76c 100644 --- a/alib2data/src/string/CyclicString.cpp +++ b/alib2data/src/string/CyclicString.cpp @@ -20,22 +20,12 @@ CyclicString::CyclicString() { } -CyclicString::CyclicString(const std::set<alphabet::Symbol>& alphabet, const std::vector<alphabet::Symbol>& data) { - this->alphabet = alphabet; - setContent(data); -} - -CyclicString::CyclicString(std::set<alphabet::Symbol>&& alphabet, std::vector<alphabet::Symbol>&& data) { +CyclicString::CyclicString(std::set<alphabet::Symbol> alphabet, std::vector<alphabet::Symbol> data) { this->alphabet = std::move(alphabet); setContent(std::move(data)); } -CyclicString::CyclicString(const std::vector<alphabet::Symbol>& data) { - alphabet = std::set<alphabet::Symbol>(data.begin(), data.end()); - setContent(std::move(data)); -} - -CyclicString::CyclicString(std::vector<alphabet::Symbol>&& data) { +CyclicString::CyclicString(std::vector<alphabet::Symbol> data) { alphabet = std::set<alphabet::Symbol>(data.begin(), data.end()); setContent(std::move(data)); } diff --git a/alib2data/src/string/CyclicString.h b/alib2data/src/string/CyclicString.h index e90195188f..2bfc309f56 100644 --- a/alib2data/src/string/CyclicString.h +++ b/alib2data/src/string/CyclicString.h @@ -27,10 +27,8 @@ class CyclicString : public std::acceptor<CyclicString, VisitableStringBase, std std::vector<alphabet::Symbol> m_Data; public: explicit CyclicString(); - explicit CyclicString(const std::set<alphabet::Symbol>& alphabet, const std::vector<alphabet::Symbol>& data); - explicit CyclicString(std::set<alphabet::Symbol>&& alphabet, std::vector<alphabet::Symbol>&& data); - explicit CyclicString(const std::vector<alphabet::Symbol>& data); - explicit CyclicString(std::vector<alphabet::Symbol>&& data); + explicit CyclicString(std::set<alphabet::Symbol> alphabet, std::vector<alphabet::Symbol> data); + explicit CyclicString(std::vector<alphabet::Symbol> data); explicit CyclicString(const std::string& string); explicit CyclicString(const char* string); explicit CyclicString(const Epsilon& epsilon); diff --git a/alib2data/src/string/LinearString.cpp b/alib2data/src/string/LinearString.cpp index 93ee9968ce..e718983f5c 100644 --- a/alib2data/src/string/LinearString.cpp +++ b/alib2data/src/string/LinearString.cpp @@ -20,22 +20,12 @@ LinearString::LinearString() { } -LinearString::LinearString(const std::set<alphabet::Symbol>& alphabet, const std::vector<alphabet::Symbol>& data) { - this->alphabet = alphabet; - setContent(data); -} - -LinearString::LinearString(std::set<alphabet::Symbol>&& alphabet, std::vector<alphabet::Symbol>&& data) { +LinearString::LinearString(std::set<alphabet::Symbol> alphabet, std::vector<alphabet::Symbol> data) { this->alphabet = std::move(alphabet); setContent(std::move(data)); } -LinearString::LinearString(const std::vector<alphabet::Symbol>& data) { - alphabet = std::set<alphabet::Symbol>(data.begin(), data.end()); - m_Data = data; -} - -LinearString::LinearString(std::vector<alphabet::Symbol>&& data) { +LinearString::LinearString(std::vector<alphabet::Symbol> data) { alphabet = std::set<alphabet::Symbol>(data.begin(), data.end()); m_Data = std::move(data); } @@ -69,13 +59,7 @@ bool LinearString::removeSymbolFromAlphabet(const alphabet::Symbol & symbol) { return alphabet.erase(symbol); } -void LinearString::appendSymbol(const alphabet::Symbol& symbol) { - if(alphabet.count(symbol) == 0) - throw exception::AlibException("Input symbol \"" + (std::string) symbol + "\" not in the alphabet."); - m_Data.push_back(symbol); -} - -void LinearString::appendSymbol(alphabet::Symbol&& symbol) { +void LinearString::appendSymbol(alphabet::Symbol symbol) { if(alphabet.count(symbol) == 0) throw exception::AlibException("Input symbol \"" + (std::string) symbol + "\" not in the alphabet."); m_Data.push_back(std::move(symbol)); diff --git a/alib2data/src/string/LinearString.h b/alib2data/src/string/LinearString.h index 67712ca6f8..6720ba4aa4 100644 --- a/alib2data/src/string/LinearString.h +++ b/alib2data/src/string/LinearString.h @@ -28,10 +28,8 @@ class LinearString : public std::acceptor<LinearString, VisitableStringBase, std public: explicit LinearString(); - explicit LinearString(const std::set<alphabet::Symbol>& alphabet, const std::vector<alphabet::Symbol>& data); - explicit LinearString(std::set<alphabet::Symbol>&& alphabet, std::vector<alphabet::Symbol>&& data); - explicit LinearString(const std::vector<alphabet::Symbol>& data); - explicit LinearString(std::vector<alphabet::Symbol>&& data); + explicit LinearString(std::set<alphabet::Symbol> alphabet, std::vector<alphabet::Symbol> data); + explicit LinearString(std::vector<alphabet::Symbol> data); explicit LinearString(const std::string& string); explicit LinearString(const char* string); explicit LinearString(const Epsilon& epsilon); @@ -44,9 +42,7 @@ public: /** * @param element to append */ - void appendSymbol(const alphabet::Symbol& symbol); - - void appendSymbol(alphabet::Symbol&& symbol); + void appendSymbol(alphabet::Symbol symbol); /** * @return List of symbols forming string (const version). -- GitLab