From c338ad39e5167d42a88d1e923b2437a907560de3 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Sun, 8 Oct 2017 11:34:14 +0200 Subject: [PATCH] simplifications in xml and string abstractions --- alib2str/src/abstraction/StringReaderAbstraction.hpp | 11 +++-------- alib2str/src/abstraction/StringReaderRegistry.cpp | 7 ++++--- alib2str/src/abstraction/StringReaderRegistry.hpp | 10 +++++----- alib2str/src/abstraction/StringWriterAbstraction.hpp | 3 +-- alib2xml/src/abstraction/XmlComposerAbstraction.hpp | 2 +- 5 files changed, 14 insertions(+), 19 deletions(-) diff --git a/alib2str/src/abstraction/StringReaderAbstraction.hpp b/alib2str/src/abstraction/StringReaderAbstraction.hpp index ab07251e71..46af459961 100644 --- a/alib2str/src/abstraction/StringReaderAbstraction.hpp +++ b/alib2str/src/abstraction/StringReaderAbstraction.hpp @@ -8,26 +8,21 @@ #ifndef _STRING_READER_ABSTRACTION_HPP_ #define _STRING_READER_ABSTRACTION_HPP_ -#include <abstraction/NullaryOperationAbstraction.hpp> -#include <tuple> -#include <exception/CommonException.h> +#include <abstraction/UnaryOperationAbstraction.hpp> #include <factory/StringDataFactory.hpp> namespace abstraction { template < class ReturnType > -class StringReaderAbstraction : public NullaryOperationAbstraction < ReturnType > { +class StringReaderAbstraction : public UnaryOperationAbstraction < ReturnType, std::string && > { std::string m_string; public: - StringReaderAbstraction ( std::string str ) : m_string ( std::move ( str ) ) { - } - virtual bool run ( ) override { if ( this->isReady ( ) ) return true; - ReturnType res = alib::StringDataFactory::fromString ( std::move ( m_string ) ); + ReturnType res = alib::StringDataFactory::fromString ( std::get < 0 > ( this->m_params )->getRValueReference ( ) ); this->m_data = std::move ( res ); return true; } diff --git a/alib2str/src/abstraction/StringReaderRegistry.cpp b/alib2str/src/abstraction/StringReaderRegistry.cpp index 1046d296de..cd00e8baf7 100644 --- a/alib2str/src/abstraction/StringReaderRegistry.cpp +++ b/alib2str/src/abstraction/StringReaderRegistry.cpp @@ -9,9 +9,10 @@ namespace abstraction { -std::shared_ptr < abstraction::OperationAbstraction > StringReaderRegistry::getAbstraction ( std::string str ) { +std::shared_ptr < abstraction::OperationAbstraction > StringReaderRegistry::getAbstraction ( const std::string & str ) { + std::stringstream ss ( str ); + auto lambda = [ & ] ( const std::pair < std::function < bool ( std::istream & ) >, std::unique_ptr < Entry > > & entry ) { - std::stringstream ss ( str ); return entry.first ( ss ); }; @@ -19,7 +20,7 @@ std::shared_ptr < abstraction::OperationAbstraction > StringReaderRegistry::getA if ( callback == getEntries ( ).end ( ) ) throw exception::CommonException ( "Entry not available." ); - return callback->second->getAbstraction ( std::move ( str ) ); + return callback->second->getAbstraction ( ); } } /* namespace abstraction */ diff --git a/alib2str/src/abstraction/StringReaderRegistry.hpp b/alib2str/src/abstraction/StringReaderRegistry.hpp index f4a4833e12..2b91d8539f 100644 --- a/alib2str/src/abstraction/StringReaderRegistry.hpp +++ b/alib2str/src/abstraction/StringReaderRegistry.hpp @@ -21,7 +21,7 @@ namespace abstraction { class StringReaderRegistry { class Entry { public: - virtual std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( std::string data ) const = 0; + virtual std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( ) const = 0; }; @@ -31,7 +31,7 @@ class StringReaderRegistry { EntryImpl ( ) { } - virtual std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( std::string data ) const override; + virtual std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( ) const override; }; static ext::deque < std::pair < std::function < bool ( std::istream & ) >, std::unique_ptr < Entry > > > & getEntries ( ) { @@ -45,7 +45,7 @@ public: getEntries ( ).push_back ( std::make_pair ( alib::stringApi < ReturnType >::first, std::unique_ptr < Entry > ( new EntryImpl < ReturnType > ( ) ) ) ); } - static std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( std::string data ); + static std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( const std::string & data ); }; } /* namespace abstraction */ @@ -55,8 +55,8 @@ public: namespace abstraction { template < class Return > -std::shared_ptr < abstraction::OperationAbstraction > StringReaderRegistry::EntryImpl < Return >::getAbstraction ( std::string data ) const { - return std::make_shared < abstraction::StringReaderAbstraction < Return > > ( std::move ( data ) ); +std::shared_ptr < abstraction::OperationAbstraction > StringReaderRegistry::EntryImpl < Return >::getAbstraction ( ) const { + return std::make_shared < abstraction::StringReaderAbstraction < Return > > ( ); } } /* namespace abstraction */ diff --git a/alib2str/src/abstraction/StringWriterAbstraction.hpp b/alib2str/src/abstraction/StringWriterAbstraction.hpp index 788b02afcc..1ae64f8052 100644 --- a/alib2str/src/abstraction/StringWriterAbstraction.hpp +++ b/alib2str/src/abstraction/StringWriterAbstraction.hpp @@ -9,13 +9,12 @@ #define _STRING_WRITER_ABSTRACTION_HPP_ #include <abstraction/UnaryOperationAbstraction.hpp> -#include <tuple> #include <factory/StringDataFactory.hpp> namespace abstraction { template < class ParamType > -class StringWriterAbstraction : public UnaryOperationAbstraction < std::string, ParamType > { +class StringWriterAbstraction : public UnaryOperationAbstraction < std::string, const ParamType & > { public: virtual bool run ( ) override { if ( ! this->inputsReady ( ) ) diff --git a/alib2xml/src/abstraction/XmlComposerAbstraction.hpp b/alib2xml/src/abstraction/XmlComposerAbstraction.hpp index 604af3be51..e308e8fba0 100644 --- a/alib2xml/src/abstraction/XmlComposerAbstraction.hpp +++ b/alib2xml/src/abstraction/XmlComposerAbstraction.hpp @@ -14,7 +14,7 @@ namespace abstraction { template < class ParamType > -class XmlComposerAbstraction : public UnaryOperationAbstraction < ext::deque < sax::Token >, ParamType > { +class XmlComposerAbstraction : public UnaryOperationAbstraction < ext::deque < sax::Token >, const ParamType & > { public: virtual bool run ( ) override { if ( ! this->inputsReady ( ) ) -- GitLab