From 9229b67bea428306ca2c9810804386659a66b6eb Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Tue, 2 Oct 2018 11:19:49 +0200
Subject: [PATCH] remove string wrapper

---
 alib2aux/src/convert/DotConverter.h           |  4 ++--
 alib2aux/src/convert/GasTexConverter.h        |  4 ++--
 alib2aux/src/convert/LatexTable.h             |  4 ++--
 alib2aux/src/convert/TikZConverter.h          |  4 ++--
 alib2data/src/string/String.cpp               |  6 ++---
 alib2data/src/string/String.h                 | 22 +++++++------------
 alib2data/src/string/xml/CyclicString.cpp     |  4 +---
 alib2data/src/string/xml/Epsilon.cpp          |  4 +---
 alib2data/src/string/xml/LinearString.cpp     |  4 +---
 .../src/string/xml/WildcardLinearString.cpp   |  4 +---
 alib2data/test-src/string/StringTest.cpp      | 22 +++++++++----------
 .../string/LinearStringTerminatingSymbol.cpp  |  3 +--
 12 files changed, 34 insertions(+), 51 deletions(-)

diff --git a/alib2aux/src/convert/DotConverter.h b/alib2aux/src/convert/DotConverter.h
index cdf0f304a6..86a6ad057b 100644
--- a/alib2aux/src/convert/DotConverter.h
+++ b/alib2aux/src/convert/DotConverter.h
@@ -39,10 +39,10 @@
 #include <automaton/PDA/SinglePopDPDA.h>
 #include <automaton/TM/OneTapeDTM.h>
 
-#include <factory/StringDataFactory.hpp>
-
 #include "common/converterCommon.hpp"
 
+#include <factory/StringDataFactory.hpp>
+#include <string/string/LinearString.h>
 #include <regexp/string/UnboundedRegExp.h>
 
 namespace convert {
diff --git a/alib2aux/src/convert/GasTexConverter.h b/alib2aux/src/convert/GasTexConverter.h
index 916b11f5c1..4012398807 100644
--- a/alib2aux/src/convert/GasTexConverter.h
+++ b/alib2aux/src/convert/GasTexConverter.h
@@ -38,10 +38,10 @@
 #include <automaton/PDA/SinglePopNPDA.h>
 #include <automaton/TM/OneTapeDTM.h>
 
-#include <factory/StringDataFactory.hpp>
-
 #include "common/converterCommon.hpp"
 
+#include <factory/StringDataFactory.hpp>
+#include <string/string/LinearString.h>
 #include <regexp/string/UnboundedRegExp.h>
 
 namespace convert {
diff --git a/alib2aux/src/convert/LatexTable.h b/alib2aux/src/convert/LatexTable.h
index afc7ed6d8f..24ca07cd86 100644
--- a/alib2aux/src/convert/LatexTable.h
+++ b/alib2aux/src/convert/LatexTable.h
@@ -20,10 +20,10 @@
 
 #include <automaton/FSM/DFA.h>
 
-#include <factory/StringDataFactory.hpp>
-
 #include "common/converterCommon.hpp"
 
+#include <factory/StringDataFactory.hpp>
+#include <string/string/LinearString.h>
 #include <regexp/string/UnboundedRegExp.h>
 
 namespace convert {
diff --git a/alib2aux/src/convert/TikZConverter.h b/alib2aux/src/convert/TikZConverter.h
index 549434f6d3..f0d3a74b7b 100644
--- a/alib2aux/src/convert/TikZConverter.h
+++ b/alib2aux/src/convert/TikZConverter.h
@@ -40,10 +40,10 @@
 #include <automaton/TM/OneTapeDTM.h>
 #include <grid/GridClasses.hpp>
 
-#include <factory/StringDataFactory.hpp>
-
 #include "common/converterCommon.hpp"
 
+#include <factory/StringDataFactory.hpp>
+#include <string/string/LinearString.h>
 #include <regexp/string/UnboundedRegExp.h>
 
 namespace convert {
diff --git a/alib2data/src/string/String.cpp b/alib2data/src/string/String.cpp
index 43db66f664..86edb3120f 100644
--- a/alib2data/src/string/String.cpp
+++ b/alib2data/src/string/String.cpp
@@ -9,11 +9,11 @@
 
 namespace string {
 
-string::String stringFrom ( const std::string & string ) {
-	return string::String { core::normalize < string::LinearString < char > >::eval ( string::LinearString < char > { string } ) };
+string::LinearString < char > stringFrom ( const std::string & string ) {
+	return string::LinearString < char > { string };
 }
 
-string::String stringFrom ( const char * string ) {
+string::LinearString < char > stringFrom ( const char * string ) {
 	return stringFrom ( ( std::string ) string );
 }
 
diff --git a/alib2data/src/string/String.h b/alib2data/src/string/String.h
index 262f84047d..89c4947e9f 100644
--- a/alib2data/src/string/String.h
+++ b/alib2data/src/string/String.h
@@ -8,13 +8,10 @@
 #ifndef STRING_H_
 #define STRING_H_
 
-#include <base/WrapperBase.hpp>
-#include "StringBase.h"
-
 #include <alib/set>
 #include <alib/vector>
+
 #include <common/DefaultSymbolType.h>
-#include <object/ObjectFactory.h>
 
 #include "LinearString.h"
 
@@ -23,23 +20,20 @@ namespace string {
 /**
  * Wrapper around strings.
  */
-class String : public base::WrapperBase < StringBase > {
-	using base::WrapperBase < StringBase >::WrapperBase;
-
-};
+class String;
 
 template < class SymbolType >
-string::String stringFrom ( const SymbolType & symbol ) {
-	return string::String { string::LinearString < DefaultSymbolType > { ext::vector < DefaultSymbolType > { object::ObjectFactory::make ( symbol ) } } };
+string::LinearString < SymbolType > stringFrom ( const SymbolType & symbol ) {
+	return string::String { string::LinearString < SymbolType > { ext::vector < SymbolType > { symbol } } };
 }
 
-string::String stringFrom ( const std::string & str );
+string::LinearString < char > stringFrom ( const std::string & str );
 
-string::String stringFrom ( const char * str );
+string::LinearString < char > stringFrom ( const char * str );
 
 template < class SymbolType >
-string::String stringFrom ( const ext::vector < SymbolType > & str ) {
-	return string::String { core::normalize < string::LinearString < SymbolType > >::eval ( string::LinearString < SymbolType > { str } ) };
+string::LinearString < SymbolType > stringFrom ( const ext::vector < SymbolType > & str ) {
+	return string::LinearString < SymbolType > { str };
 }
 
 
diff --git a/alib2data/src/string/xml/CyclicString.cpp b/alib2data/src/string/xml/CyclicString.cpp
index 5490855f4d..da261af6f0 100644
--- a/alib2data/src/string/xml/CyclicString.cpp
+++ b/alib2data/src/string/xml/CyclicString.cpp
@@ -7,7 +7,6 @@
 
 #include "CyclicString.h"
 
-#include <string/String.h>
 #include <object/Object.h>
 
 #include <registration/XmlRegistration.hpp>
@@ -17,7 +16,6 @@ namespace {
 static auto xmlWrite = registration::XmlWriterRegister < string::CyclicString < > > ( );
 static auto xmlRead = registration::XmlReaderRegister < string::CyclicString < > > ( );
 
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < string::String, string::CyclicString < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, string::CyclicString < > > ( );
+static auto xmlGroup = registration::XmlRegisterTypeInGroup < object::Object, string::CyclicString < > > ( );
 
 } /* namespace */
diff --git a/alib2data/src/string/xml/Epsilon.cpp b/alib2data/src/string/xml/Epsilon.cpp
index 487b78491f..969866625e 100644
--- a/alib2data/src/string/xml/Epsilon.cpp
+++ b/alib2data/src/string/xml/Epsilon.cpp
@@ -7,7 +7,6 @@
 
 #include "Epsilon.h"
 
-#include <string/String.h>
 #include <object/Object.h>
 
 #include <registration/XmlRegistration.hpp>
@@ -17,7 +16,6 @@ namespace {
 static auto xmlWrite = registration::XmlWriterRegister < string::Epsilon < > > ( );
 static auto xmlRead = registration::XmlReaderRegister < string::Epsilon < > > ( );
 
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < string::String, string::Epsilon < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, string::Epsilon < > > ( );
+static auto xmlGroup = registration::XmlRegisterTypeInGroup < object::Object, string::Epsilon < > > ( );
 
 } /* namespace */
diff --git a/alib2data/src/string/xml/LinearString.cpp b/alib2data/src/string/xml/LinearString.cpp
index 1b8fc88da6..1d8695343a 100644
--- a/alib2data/src/string/xml/LinearString.cpp
+++ b/alib2data/src/string/xml/LinearString.cpp
@@ -7,7 +7,6 @@
 
 #include "LinearString.h"
 
-#include <string/String.h>
 #include <object/Object.h>
 
 #include <registration/XmlRegistration.hpp>
@@ -17,7 +16,6 @@ namespace {
 static auto xmlWrite = registration::XmlWriterRegister < string::LinearString < > > ( );
 static auto xmlRead = registration::XmlReaderRegister < string::LinearString < > > ( );
 
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < string::String, string::LinearString < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, string::LinearString < > > ( );
+static auto xmlGroup = registration::XmlRegisterTypeInGroup < object::Object, string::LinearString < > > ( );
 
 } /* namespace */
diff --git a/alib2data/src/string/xml/WildcardLinearString.cpp b/alib2data/src/string/xml/WildcardLinearString.cpp
index 6ddd1b0c4f..f77343960e 100644
--- a/alib2data/src/string/xml/WildcardLinearString.cpp
+++ b/alib2data/src/string/xml/WildcardLinearString.cpp
@@ -7,7 +7,6 @@
 
 #include "WildcardLinearString.h"
 
-#include <string/String.h>
 #include <object/Object.h>
 
 #include <registration/XmlRegistration.hpp>
@@ -17,7 +16,6 @@ namespace {
 static auto xmlWrite = registration::XmlWriterRegister < string::WildcardLinearString < > > ( );
 static auto xmlRead = registration::XmlReaderRegister < string::WildcardLinearString < > > ( );
 
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < string::String, string::WildcardLinearString < > > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, string::WildcardLinearString < > > ( );
+static auto xmlGroup = registration::XmlRegisterTypeInGroup < object::Object, string::WildcardLinearString < > > ( );
 
 } /* namespace */
diff --git a/alib2data/test-src/string/StringTest.cpp b/alib2data/test-src/string/StringTest.cpp
index 1686f57d94..8824ad930b 100644
--- a/alib2data/test-src/string/StringTest.cpp
+++ b/alib2data/test-src/string/StringTest.cpp
@@ -32,28 +32,26 @@ void StringTest::tearDown ( ) {
 }
 
 void StringTest::testCopyConstruct ( ) {
-	string::LinearString < > linearString;
+	string::LinearString < > string;
 
-	linearString.accessComponent < string::GeneralAlphabet > ( ).set( { DefaultSymbolType ( "1" ), DefaultSymbolType ( "2" ), DefaultSymbolType ( "3" ) } );
-	linearString.setContent ( { DefaultSymbolType ( "1" ), DefaultSymbolType ( "2" ), DefaultSymbolType ( "1" ) } );
-	string::String string ( linearString );
-	string::String string2 ( string );
+	string.accessComponent < string::GeneralAlphabet > ( ).set( { DefaultSymbolType ( "1" ), DefaultSymbolType ( "2" ), DefaultSymbolType ( "3" ) } );
+	string.setContent ( { DefaultSymbolType ( "1" ), DefaultSymbolType ( "2" ), DefaultSymbolType ( "1" ) } );
+	string::LinearString < > string2 ( string );
 
 	CPPUNIT_ASSERT ( string == string2 );
 
-	string::String string3 ( std::move ( string ) );
+	string::LinearString < > string3 ( std::move ( string ) );
 
 	CPPUNIT_ASSERT ( string2 == string3 );
 }
 
 void StringTest::testXMLParser ( ) {
 
-	string::LinearString < > linearString;
+	string::LinearString < > string;
 
-	linearString.accessComponent < string::GeneralAlphabet > ( ).set( { DefaultSymbolType ( "1" ), DefaultSymbolType ( "2" ), DefaultSymbolType ( "3" ) } );
-	linearString.setContent ( { DefaultSymbolType ( "1" ), DefaultSymbolType ( "2" ), DefaultSymbolType ( "1" ) } );
+	string.accessComponent < string::GeneralAlphabet > ( ).set( { DefaultSymbolType ( "1" ), DefaultSymbolType ( "2" ), DefaultSymbolType ( "3" ) } );
+	string.setContent ( { DefaultSymbolType ( "1" ), DefaultSymbolType ( "2" ), DefaultSymbolType ( "1" ) } );
 
-	string::String string ( linearString );
 	{
 		ext::deque < sax::Token > tokens = factory::XmlDataFactory::toTokens ( string );
 		std::string tmp = sax::SaxComposeInterface::composeMemory ( tokens );
@@ -61,14 +59,14 @@ void StringTest::testXMLParser ( ) {
 		std::cout << tmp << std::endl;
 
 		ext::deque < sax::Token > tokens2 = sax::SaxParseInterface::parseMemory ( tmp );
-		string::String string2 = factory::XmlDataFactory::fromTokens ( std::move( tokens2 ) );
+		string::LinearString < > string2 = factory::XmlDataFactory::fromTokens ( std::move( tokens2 ) );
 
 		CPPUNIT_ASSERT ( string == string2 );
 	}
 	{
 		std::string tmp = factory::XmlDataFactory::toString ( string );
 		std::cout << tmp << std::endl;
-		string::String string2 = factory::XmlDataFactory::fromString ( tmp );
+		string::LinearString < > string2 = factory::XmlDataFactory::fromString ( tmp );
 
 		CPPUNIT_ASSERT ( string == string2 );
 	}
diff --git a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.cpp b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.cpp
index e6b7df98b5..8e7cbd6b26 100644
--- a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.cpp
+++ b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.cpp
@@ -145,7 +145,6 @@ static auto valuePrinter = registration::ValuePrinterRegister < string::LinearSt
 static auto xmlWrite = registration::XmlWriterRegister < string::LinearStringTerminatingSymbol > ( );
 static auto xmlRead = registration::XmlReaderRegister < string::LinearStringTerminatingSymbol > ( );
 
-static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < string::String, string::LinearStringTerminatingSymbol > ( );
-static auto xmlGroup2 = registration::XmlRegisterTypeInGroup < object::Object, string::LinearStringTerminatingSymbol > ( );
+static auto xmlGroup1 = registration::XmlRegisterTypeInGroup < object::Object, string::LinearStringTerminatingSymbol > ( );
 
 } /* namespace */
-- 
GitLab