Skip to content
Snippets Groups Projects
Commit c637495b authored by Jan Trávníček's avatar Jan Trávníček
Browse files

move semantics for strings

parent ec10b4ea
No related branches found
No related tags found
No related merge requests found
...@@ -20,22 +20,12 @@ CyclicString::CyclicString() { ...@@ -20,22 +20,12 @@ CyclicString::CyclicString() {
   
} }
   
CyclicString::CyclicString(const std::set<alphabet::Symbol>& alphabet, const std::vector<alphabet::Symbol>& data) { CyclicString::CyclicString(std::set<alphabet::Symbol> alphabet, std::vector<alphabet::Symbol> data) {
this->alphabet = alphabet;
setContent(data);
}
CyclicString::CyclicString(std::set<alphabet::Symbol>&& alphabet, std::vector<alphabet::Symbol>&& data) {
this->alphabet = std::move(alphabet); this->alphabet = std::move(alphabet);
setContent(std::move(data)); setContent(std::move(data));
} }
   
CyclicString::CyclicString(const 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));
}
CyclicString::CyclicString(std::vector<alphabet::Symbol>&& data) {
alphabet = std::set<alphabet::Symbol>(data.begin(), data.end()); alphabet = std::set<alphabet::Symbol>(data.begin(), data.end());
setContent(std::move(data)); setContent(std::move(data));
} }
......
...@@ -27,10 +27,8 @@ class CyclicString : public std::acceptor<CyclicString, VisitableStringBase, std ...@@ -27,10 +27,8 @@ class CyclicString : public std::acceptor<CyclicString, VisitableStringBase, std
std::vector<alphabet::Symbol> m_Data; std::vector<alphabet::Symbol> m_Data;
public: public:
explicit CyclicString(); 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(std::set<alphabet::Symbol>&& alphabet, std::vector<alphabet::Symbol>&& data); explicit CyclicString(std::vector<alphabet::Symbol> data);
explicit CyclicString(const std::vector<alphabet::Symbol>& data);
explicit CyclicString(std::vector<alphabet::Symbol>&& data);
explicit CyclicString(const std::string& string); explicit CyclicString(const std::string& string);
explicit CyclicString(const char* string); explicit CyclicString(const char* string);
explicit CyclicString(const Epsilon& epsilon); explicit CyclicString(const Epsilon& epsilon);
......
...@@ -20,22 +20,12 @@ LinearString::LinearString() { ...@@ -20,22 +20,12 @@ LinearString::LinearString() {
   
} }
   
LinearString::LinearString(const std::set<alphabet::Symbol>& alphabet, const std::vector<alphabet::Symbol>& data) { LinearString::LinearString(std::set<alphabet::Symbol> alphabet, std::vector<alphabet::Symbol> data) {
this->alphabet = alphabet;
setContent(data);
}
LinearString::LinearString(std::set<alphabet::Symbol>&& alphabet, std::vector<alphabet::Symbol>&& data) {
this->alphabet = std::move(alphabet); this->alphabet = std::move(alphabet);
setContent(std::move(data)); setContent(std::move(data));
} }
   
LinearString::LinearString(const std::vector<alphabet::Symbol>& data) { LinearString::LinearString(std::vector<alphabet::Symbol> data) {
alphabet = std::set<alphabet::Symbol>(data.begin(), data.end());
m_Data = data;
}
LinearString::LinearString(std::vector<alphabet::Symbol>&& data) {
alphabet = std::set<alphabet::Symbol>(data.begin(), data.end()); alphabet = std::set<alphabet::Symbol>(data.begin(), data.end());
m_Data = std::move(data); m_Data = std::move(data);
} }
...@@ -69,13 +59,7 @@ bool LinearString::removeSymbolFromAlphabet(const alphabet::Symbol & symbol) { ...@@ -69,13 +59,7 @@ bool LinearString::removeSymbolFromAlphabet(const alphabet::Symbol & symbol) {
return alphabet.erase(symbol); return alphabet.erase(symbol);
} }
   
void LinearString::appendSymbol(const 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(symbol);
}
void LinearString::appendSymbol(alphabet::Symbol&& symbol) {
if(alphabet.count(symbol) == 0) if(alphabet.count(symbol) == 0)
throw exception::AlibException("Input symbol \"" + (std::string) symbol + "\" not in the alphabet."); throw exception::AlibException("Input symbol \"" + (std::string) symbol + "\" not in the alphabet.");
m_Data.push_back(std::move(symbol)); m_Data.push_back(std::move(symbol));
......
...@@ -28,10 +28,8 @@ class LinearString : public std::acceptor<LinearString, VisitableStringBase, std ...@@ -28,10 +28,8 @@ class LinearString : public std::acceptor<LinearString, VisitableStringBase, std
   
public: public:
explicit LinearString(); 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(std::set<alphabet::Symbol>&& alphabet, std::vector<alphabet::Symbol>&& data); explicit LinearString(std::vector<alphabet::Symbol> data);
explicit LinearString(const std::vector<alphabet::Symbol>& data);
explicit LinearString(std::vector<alphabet::Symbol>&& data);
explicit LinearString(const std::string& string); explicit LinearString(const std::string& string);
explicit LinearString(const char* string); explicit LinearString(const char* string);
explicit LinearString(const Epsilon& epsilon); explicit LinearString(const Epsilon& epsilon);
...@@ -44,9 +42,7 @@ public: ...@@ -44,9 +42,7 @@ public:
/** /**
* @param element to append * @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). * @return List of symbols forming string (const version).
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment