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