From 9a380daa27e987f9443a9bc2f40200b081cd3c19 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Wed, 24 Apr 2019 23:10:25 +0200
Subject: [PATCH] apply some cppcheck proposed changes

---
 .../abstraction/AnyaryOperationAbstraction.hpp   |  8 ++++----
 .../src/registry/ContainerRegistry.cpp           | 12 ++++++++----
 .../src/registry/ContainerRegistry.hpp           |  4 ++--
 alib2std/src/extensions/container/ptr_value.hpp  |  3 +++
 aql2/src/prompt/ReadlinePromptHistory.h          | 16 +++++++++-------
 5 files changed, 26 insertions(+), 17 deletions(-)

diff --git a/alib2abstraction/src/abstraction/AnyaryOperationAbstraction.hpp b/alib2abstraction/src/abstraction/AnyaryOperationAbstraction.hpp
index f1208513aa..4d08220410 100644
--- a/alib2abstraction/src/abstraction/AnyaryOperationAbstraction.hpp
+++ b/alib2abstraction/src/abstraction/AnyaryOperationAbstraction.hpp
@@ -52,11 +52,11 @@ public:
 	}
 
 	virtual bool inputsAttached ( ) const override {
-		for ( const std::pair < std::shared_ptr < OperationAbstraction >, bool > & param : m_params )
-			if ( ! ( bool ) param.first )
-				return false;
+		auto attached_lambda = [ ] ( const std::pair < std::shared_ptr < OperationAbstraction >, bool > & param ) {
+			return ( bool ) param.first;
+		};
 
-		return true;
+		return std::all_of ( m_params.begin ( ), m_params.end ( ), attached_lambda );
 	}
 
 	virtual bool eval ( ) override {
diff --git a/alib2abstraction/src/registry/ContainerRegistry.cpp b/alib2abstraction/src/registry/ContainerRegistry.cpp
index a1a4e7ea4b..21f317fdfe 100644
--- a/alib2abstraction/src/registry/ContainerRegistry.cpp
+++ b/alib2abstraction/src/registry/ContainerRegistry.cpp
@@ -25,11 +25,15 @@ std::shared_ptr < abstraction::OperationAbstraction > ContainerRegistry::getAbst
 	if ( group == getEntries ( ).end ( ) )
 		throw std::invalid_argument ( "Entry " + container + " not available" );
 
-	for ( const ext::pair < std::string, std::unique_ptr < Entry > > & entry : group->second )
-		if ( ext::is_same_type ( param, ext::erase_template_info ( entry.first ) ) )
-			return entry.second->getAbstraction ( );
+	auto is_same_type_lambda = [ & ] ( const ext::pair < std::string, std::unique_ptr < Entry > > & entry ) {
+		return ext::is_same_type ( param, ext::erase_template_info ( entry.first ) );
+	};
+
+	auto iter = std::find_if ( group->second.begin ( ), group->second.end ( ), is_same_type_lambda );
+	if ( iter == group->second.end ( ) )
+		throw std::invalid_argument ( "Entry for " + container + " parametrized with " + param + " not available." );
 
-	throw std::invalid_argument ( "Entry for " + container + " parametrized with " + param + " not available." );
+	return iter->second->getAbstraction ( );
 }
 
 ext::set < std::string > ContainerRegistry::listOverloads ( const std::string & container ) {
diff --git a/alib2abstraction/src/registry/ContainerRegistry.hpp b/alib2abstraction/src/registry/ContainerRegistry.hpp
index 8360f4c530..538fb86c32 100644
--- a/alib2abstraction/src/registry/ContainerRegistry.hpp
+++ b/alib2abstraction/src/registry/ContainerRegistry.hpp
@@ -44,7 +44,7 @@ private:
 	static ext::map < std::string, ext::list < ext::pair < std::string, std::unique_ptr < Entry > > > > & getEntries ( );
 
 public:
-	static void unregisterSet ( std::string param ) {
+	static void unregisterSet ( const std::string & param ) {
 		std::string container = "Set";
 
 		auto & group = getEntries ( ) [ container ];
@@ -71,7 +71,7 @@ public:
 			if ( entry.first == param )
 				throw std::invalid_argument ( "Callback for " + param + " in contaier " + container + " already registered." );
 
-		group.insert ( group.end ( ), ext::make_pair ( param, std::make_unique < SetEntryImpl < ParamTypes > > ( ) ) );
+		group.insert ( group.end ( ), ext::make_pair ( std::move ( param ), std::make_unique < SetEntryImpl < ParamTypes > > ( ) ) );
 	}
 
 	template < class ParamTypes >
diff --git a/alib2std/src/extensions/container/ptr_value.hpp b/alib2std/src/extensions/container/ptr_value.hpp
index 3606667c73..d66bf7302a 100644
--- a/alib2std/src/extensions/container/ptr_value.hpp
+++ b/alib2std/src/extensions/container/ptr_value.hpp
@@ -109,6 +109,9 @@ public:
 	 * \param other the other instance
 	 */
 	ptr_value & operator = ( const ptr_value & other ) {
+		if ( this == & other )
+			return *this;
+
 		delete m_data;
 		m_data = ext::clone ( other.m_data );
 		return * this;
diff --git a/aql2/src/prompt/ReadlinePromptHistory.h b/aql2/src/prompt/ReadlinePromptHistory.h
index 87d076bb93..4e37c80807 100644
--- a/aql2/src/prompt/ReadlinePromptHistory.h
+++ b/aql2/src/prompt/ReadlinePromptHistory.h
@@ -65,13 +65,15 @@ class ReadlinePromptHistory {
 	template < class Callable >
 	static void history_transform ( Callable callable ) {
 		HIST_ENTRY ** history = history_list ( );
-		int i = 0;
-		if ( history ) while ( * history ) {
-			char * tmp = callable ( ( * history )->line );
-			replace_history_entry ( i, tmp, ( * history )->data );
-			free ( tmp );
-			++ history;
-			++ i;
+		if ( history ) {
+			unsigned i = 0;
+			while ( * history ) {
+				char * tmp = callable ( ( * history )->line );
+				replace_history_entry ( i, tmp, ( * history )->data );
+				free ( tmp );
+				++ history;
+				++ i;
+			}
 		}
 	}
 
-- 
GitLab