From 9edd84946da5c4d710689ccad8f4a95c62090395 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Fri, 1 Dec 2017 08:11:31 +0100
Subject: [PATCH] tiny improvement in xml api

---
 alib2xml/src/common/xml/AlgorithmCategories.cpp | 6 ++++--
 alib2xml/src/common/xml/AlgorithmCategories.hpp | 2 +-
 alib2xml/src/common/xml/ParamQualifiers.cpp     | 6 ++++--
 alib2xml/src/common/xml/ParamQualifiers.hpp     | 2 +-
 alib2xml/src/container/xml/ObjectsVariant.h     | 6 +++---
 5 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/alib2xml/src/common/xml/AlgorithmCategories.cpp b/alib2xml/src/common/xml/AlgorithmCategories.cpp
index 2c61564019..5e35582629 100644
--- a/alib2xml/src/common/xml/AlgorithmCategories.cpp
+++ b/alib2xml/src/common/xml/AlgorithmCategories.cpp
@@ -16,8 +16,10 @@ bool xmlApi < abstraction::AlgorithmCategories::AlgorithmCategory >::first ( con
 	return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
 }
 
-std::string xmlApi < abstraction::AlgorithmCategories::AlgorithmCategory >::xmlTagName ( ) {
-	return "AlgorithmCategory";
+const std::string & xmlApi < abstraction::AlgorithmCategories::AlgorithmCategory >::xmlTagName ( ) {
+	static std::string xmlTagName = "AlgorithmCategory";
+
+	return xmlTagName;
 }
 
 void xmlApi < abstraction::AlgorithmCategories::AlgorithmCategory >::compose ( ext::deque < sax::Token > & out, abstraction::AlgorithmCategories::AlgorithmCategory category ) {
diff --git a/alib2xml/src/common/xml/AlgorithmCategories.hpp b/alib2xml/src/common/xml/AlgorithmCategories.hpp
index 977a7c70cc..7e5a963526 100644
--- a/alib2xml/src/common/xml/AlgorithmCategories.hpp
+++ b/alib2xml/src/common/xml/AlgorithmCategories.hpp
@@ -10,7 +10,7 @@ template < >
 struct xmlApi < abstraction::AlgorithmCategories::AlgorithmCategory > {
 	static abstraction::AlgorithmCategories::AlgorithmCategory parse ( ext::deque < sax::Token >::iterator & input );
 	static bool first ( const ext::deque < sax::Token >::const_iterator & input );
-	static std::string xmlTagName ( );
+	static const std::string & xmlTagName ( );
 	static void compose ( ext::deque < sax::Token > & output, abstraction::AlgorithmCategories::AlgorithmCategory category );
 };
 
diff --git a/alib2xml/src/common/xml/ParamQualifiers.cpp b/alib2xml/src/common/xml/ParamQualifiers.cpp
index 7f98f132da..9b9abb699e 100644
--- a/alib2xml/src/common/xml/ParamQualifiers.cpp
+++ b/alib2xml/src/common/xml/ParamQualifiers.cpp
@@ -25,8 +25,10 @@ bool xmlApi < abstraction::ParamQualifiers::ParamQualifier >::first ( const ext:
 	return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, xmlTagName ( ) );
 }
 
-std::string xmlApi < abstraction::ParamQualifiers::ParamQualifier >::xmlTagName ( ) {
-	return "ParamQualifier";
+const std::string & xmlApi < abstraction::ParamQualifiers::ParamQualifier >::xmlTagName ( ) {
+	static std::string xmlTagName = "ParamQualifier";
+
+	return xmlTagName;
 }
 
 void xmlApi < abstraction::ParamQualifiers::ParamQualifier >::compose ( ext::deque < sax::Token > & out, abstraction::ParamQualifiers::ParamQualifier paramQualifier ) {
diff --git a/alib2xml/src/common/xml/ParamQualifiers.hpp b/alib2xml/src/common/xml/ParamQualifiers.hpp
index 16416ae02a..88047d619a 100644
--- a/alib2xml/src/common/xml/ParamQualifiers.hpp
+++ b/alib2xml/src/common/xml/ParamQualifiers.hpp
@@ -10,7 +10,7 @@ template < >
 struct xmlApi < abstraction::ParamQualifiers::ParamQualifier > {
 	static abstraction::ParamQualifiers::ParamQualifier parse ( ext::deque < sax::Token >::iterator & input );
 	static bool first ( const ext::deque < sax::Token >::const_iterator & input );
-	static std::string xmlTagName ( );
+	static const std::string & xmlTagName ( );
 	static void compose ( ext::deque < sax::Token > & output, abstraction::ParamQualifiers::ParamQualifier );
 };
 
diff --git a/alib2xml/src/container/xml/ObjectsVariant.h b/alib2xml/src/container/xml/ObjectsVariant.h
index cee05d7ffe..835dc4fd27 100644
--- a/alib2xml/src/container/xml/ObjectsVariant.h
+++ b/alib2xml/src/container/xml/ObjectsVariant.h
@@ -74,7 +74,7 @@ template < typename ... Ts >
 struct xmlApi < ext::variant < Ts ... > > {
 	static ext::variant < Ts ... > parse ( ext::deque < sax::Token >::iterator & input );
 	static bool first ( const ext::deque < sax::Token >::const_iterator & input );
-	static std::string xmlTagName ( );
+	static const std::string & xmlTagName ( );
 	static void compose ( ext::deque < sax::Token > & output, const ext::variant < Ts ... > & data );
 };
 
@@ -89,8 +89,8 @@ bool xmlApi < ext::variant < Ts ... > >::first ( const ext::deque < sax::Token >
 }
 
 template < typename ... Ts >
-std::string xmlApi < ext::variant < Ts ... > >::xmlTagName ( ) {
-	throw ::exception::CommonException ( "Variant does not have xmlTagName." );
+const std::string & xmlApi < ext::variant < Ts ... > >::xmlTagName ( ) {
+	throw exception::CommonException ( "Variant does not have xmlTagName." );
 }
 
 template < typename ... Ts >
-- 
GitLab