From 5000b64f1e0fc47242f401f19ab0344753927fd9 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Mon, 22 Sep 2014 08:53:14 +0200
Subject: [PATCH] retrieve alphabets as references

---
 alib2data/src/regexp/RegExpAlphabetGetter.cpp | 14 +++++++-------
 alib2data/src/regexp/RegExpAlphabetGetter.h   |  2 +-
 alib2data/src/string/StringAlphabetGetter.cpp | 18 +++++++++---------
 alib2data/src/string/StringAlphabetGetter.h   |  2 +-
 alib2data/src/string/common/StringAlphabet.h  |  4 ++--
 5 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/alib2data/src/regexp/RegExpAlphabetGetter.cpp b/alib2data/src/regexp/RegExpAlphabetGetter.cpp
index c348820451..02a719fffb 100644
--- a/alib2data/src/regexp/RegExpAlphabetGetter.cpp
+++ b/alib2data/src/regexp/RegExpAlphabetGetter.cpp
@@ -10,19 +10,19 @@
 namespace regexp {
 
 void RegExpAlphabetGetter::Visit(void* userData, const UnboundedRegExp& regexp) const {
-	std::set<alphabet::Symbol> &res = *((std::set<alphabet::Symbol>*) userData);
-	res = regexp.getAlphabet();
+	const std::set<alphabet::Symbol>* &res = *((const std::set<alphabet::Symbol>**) userData);
+	res = &regexp.getAlphabet();
 }
 
 void RegExpAlphabetGetter::Visit(void* userData, const FormalRegExp& regexp) const {
-	std::set<alphabet::Symbol> &res = *((std::set<alphabet::Symbol>*) userData);
-	res = regexp.getAlphabet();
+	const std::set<alphabet::Symbol>* &res = *((const std::set<alphabet::Symbol>**) userData);
+	res = &regexp.getAlphabet();
 }
 
-std::set<alphabet::Symbol> RegExpAlphabetGetter::getAlphabet(const RegExp& regexp) const {
-	std::set<alphabet::Symbol> res;
+const std::set<alphabet::Symbol>& RegExpAlphabetGetter::getAlphabet(const RegExp& regexp) const {
+	const std::set<alphabet::Symbol>* res;
 	regexp.getData().Accept((void*) &res, *this);
-	return std::move(res);
+	return *res;
 }
 
 const RegExpAlphabetGetter RegExpAlphabetGetter::REG_EXP_ALPHABET_GETTER;
diff --git a/alib2data/src/regexp/RegExpAlphabetGetter.h b/alib2data/src/regexp/RegExpAlphabetGetter.h
index d278c1153f..88cea5e1c1 100644
--- a/alib2data/src/regexp/RegExpAlphabetGetter.h
+++ b/alib2data/src/regexp/RegExpAlphabetGetter.h
@@ -26,7 +26,7 @@ public:
 	 * @param regexp RegExp to print
 	 * @returns string representation of regexp
 	 */
-	std::set<alphabet::Symbol> getAlphabet(const RegExp& regexp) const;
+	const std::set<alphabet::Symbol>& getAlphabet(const RegExp& regexp) const;
 
 	static const RegExpAlphabetGetter REG_EXP_ALPHABET_GETTER;
 };
diff --git a/alib2data/src/string/StringAlphabetGetter.cpp b/alib2data/src/string/StringAlphabetGetter.cpp
index 68a0b72cd2..f85d76385e 100644
--- a/alib2data/src/string/StringAlphabetGetter.cpp
+++ b/alib2data/src/string/StringAlphabetGetter.cpp
@@ -10,24 +10,24 @@
 namespace string {
 
 void StringAlphabetGetter::Visit(void* userData, const CyclicString& string) const {
-	std::set<alphabet::Symbol> &res = *((std::set<alphabet::Symbol>*) userData);
-	res = string.getAlphabet();
+	const std::set<alphabet::Symbol>* &res = *((const std::set<alphabet::Symbol>**) userData);
+	res = &string.getAlphabet();
 }
 
 void StringAlphabetGetter::Visit(void* userData, const Epsilon& string) const {
-	std::set<alphabet::Symbol> &res = *((std::set<alphabet::Symbol>*) userData);
-	res = string.getAlphabet();
+	const std::set<alphabet::Symbol>* &res = *((const std::set<alphabet::Symbol>**) userData);
+	res = &string.getAlphabet();
 }
 
 void StringAlphabetGetter::Visit(void* userData, const LinearString& string) const {
-	std::set<alphabet::Symbol> &res = *((std::set<alphabet::Symbol>*) userData);
-	res = string.getAlphabet();
+	const std::set<alphabet::Symbol>* &res = *((const std::set<alphabet::Symbol>**) userData);
+	res = &string.getAlphabet();
 }
 
-std::set<alphabet::Symbol> StringAlphabetGetter::getAlphabet(const String& string) const {
-	std::set<alphabet::Symbol> res;
+const std::set<alphabet::Symbol>& StringAlphabetGetter::getAlphabet(const String& string) const {
+	const std::set<alphabet::Symbol>* res;
 	string.getData().Accept((void*) &res, *this);
-	return std::move(res);
+	return *res;
 }
 
 const StringAlphabetGetter StringAlphabetGetter::STRING_ALPHABET_GETTER;
diff --git a/alib2data/src/string/StringAlphabetGetter.h b/alib2data/src/string/StringAlphabetGetter.h
index c3f84c738a..ec391dba5e 100644
--- a/alib2data/src/string/StringAlphabetGetter.h
+++ b/alib2data/src/string/StringAlphabetGetter.h
@@ -28,7 +28,7 @@ public:
 	 * @param string String to print
 	 * @returns string representation of string
 	 */
-	std::set<alphabet::Symbol> getAlphabet(const String& string) const;
+	const std::set<alphabet::Symbol>& getAlphabet(const String& string) const;
 
 	static const StringAlphabetGetter STRING_ALPHABET_GETTER;
 };
diff --git a/alib2data/src/string/common/StringAlphabet.h b/alib2data/src/string/common/StringAlphabet.h
index 5838ed4608..6bb3fffe39 100644
--- a/alib2data/src/string/common/StringAlphabet.h
+++ b/alib2data/src/string/common/StringAlphabet.h
@@ -26,8 +26,8 @@ public:
 	 * @param symbol Symbol to add
 	 */
 	bool addSymbolToAlphabet(const alphabet::Symbol& symbol);
-	
-    /**
+
+	/**
 	 * Adds input symbols to input alphabet.
 	 * @param symbols Symbol to add
 	 */
-- 
GitLab