From 37a9231bd5160d2efd1877df6027560ffaf001e3 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Fri, 21 Jun 2019 12:18:59 +0200 Subject: [PATCH] cleanup --- .../abstraction/NaryOperationAbstraction.cpp | 13 +++++++++ .../ReturnValueOperationAbstraction.cpp | 28 +++++++++++++++++++ .../src/common/AlgorithmHelper.cpp | 4 +-- alib2abstraction/src/common/AlgorithmHelper.h | 2 +- alib2cli/src/ast/Statement.h | 2 -- alib2cli/src/ast/statements/CastStatement.h | 4 --- .../src/ast/statements/ContainerStatement.cpp | 14 ++-------- .../src/ast/statements/ContainerStatement.h | 3 -- alib2cli/src/ast/statements/FileStatement.h | 3 -- .../src/ast/statements/ImmediateStatement.h | 3 -- .../ast/statements/PreviousResultStatement.h | 3 -- .../src/ast/statements/ResultFileStatement.h | 4 --- .../src/ast/statements/ResultPrintStatement.h | 4 --- .../ast/statements/ResultVariableStatement.h | 4 --- .../src/ast/statements/SingleStatement.cpp | 9 +----- alib2cli/src/ast/statements/SingleStatement.h | 3 -- alib2cli/src/ast/statements/StatementList.h | 3 -- alib2cli/src/ast/statements/ValueStatement.h | 3 -- .../src/ast/statements/VariableStatement.h | 3 -- .../src/InputFileTypeRegistration.cpp | 3 ++ .../src/OutputFileTypeRegistration.cpp | 3 ++ .../src/InputFileTypeRegistration.cpp | 3 ++ .../src/OutputFileTypeRegistration.cpp | 3 ++ 23 files changed, 59 insertions(+), 65 deletions(-) create mode 100644 alib2abstraction/src/abstraction/NaryOperationAbstraction.cpp create mode 100644 alib2abstraction/src/abstraction/ReturnValueOperationAbstraction.cpp diff --git a/alib2abstraction/src/abstraction/NaryOperationAbstraction.cpp b/alib2abstraction/src/abstraction/NaryOperationAbstraction.cpp new file mode 100644 index 0000000000..28824adcda --- /dev/null +++ b/alib2abstraction/src/abstraction/NaryOperationAbstraction.cpp @@ -0,0 +1,13 @@ +/* + * NaryOperationAbstraction.hpp + * + * Created on: 20. 8. 2017 + * Author: Jan Travnicek + */ + +#include "NaryOperationAbstraction.hpp" + +template class abstraction::NaryOperationAbstractionImpl < 0 >; +template class abstraction::NaryOperationAbstractionImpl < 1 >; +template class abstraction::NaryOperationAbstractionImpl < 2 >; +template class abstraction::NaryOperationAbstractionImpl < 3 >; diff --git a/alib2abstraction/src/abstraction/ReturnValueOperationAbstraction.cpp b/alib2abstraction/src/abstraction/ReturnValueOperationAbstraction.cpp new file mode 100644 index 0000000000..5c1263a994 --- /dev/null +++ b/alib2abstraction/src/abstraction/ReturnValueOperationAbstraction.cpp @@ -0,0 +1,28 @@ +/* + * ValueOperationAbstraction.cpp + * + * Created on: 11. 7. 2017 + * Author: Jan Travnicek + */ + +#include <abstraction/ReturnValueOperationAbstraction.hpp> + +namespace abstraction { + +ext::type_index ReturnValueOperationAbstraction < void >::getReturnTypeIndex ( ) const { + return ext::type_index ( typeid ( void ) ); +} + +ext::set < abstraction::ParamQualifiers::ParamQualifier > ReturnValueOperationAbstraction < void >::getReturnTypeQualifiers ( ) const { + return abstraction::ParamQualifiers::paramQualifiers < void > ( ); +} + +bool ReturnValueOperationAbstraction < void >::evaluated ( ) const { + return false; +} + +std::shared_ptr < abstraction::OperationAbstraction > ReturnValueOperationAbstraction < void >::getVariableOperationAbstraction ( ) { + throw std::domain_error ( "Cannot create variable of void type" ); +} + +} /* namespace abstraction */ diff --git a/alib2abstraction/src/common/AlgorithmHelper.cpp b/alib2abstraction/src/common/AlgorithmHelper.cpp index 5527a5440e..516bc7529a 100644 --- a/alib2abstraction/src/common/AlgorithmHelper.cpp +++ b/alib2abstraction/src/common/AlgorithmHelper.cpp @@ -12,7 +12,7 @@ namespace abstraction { -std::shared_ptr < abstraction::OperationAbstraction > AlgorithmHelper::eval ( const std::string & name, const ext::vector < std::string > & templateParams, const ext::vector < std::shared_ptr < abstraction::OperationAbstraction > > & params, std::vector < bool > & moves, AlgorithmCategories::AlgorithmCategory category ) { +std::shared_ptr < abstraction::OperationAbstraction > AlgorithmHelper::eval ( const std::string & name, const ext::vector < std::string > & templateParams, const ext::vector < std::shared_ptr < abstraction::OperationAbstraction > > & params, const std::vector < bool > & moves, AlgorithmCategories::AlgorithmCategory category ) { ext::vector < std::string > paramTypes; ext::vector < ext::set < abstraction::ParamQualifiers::ParamQualifier > > paramTypeQualifiers; for ( const std::shared_ptr < abstraction::OperationAbstraction > & param : params ) { @@ -29,7 +29,6 @@ std::shared_ptr < abstraction::OperationAbstraction > AlgorithmHelper::eval ( co casted_params.push_back ( param ); } else { casted_params.push_back ( abstraction::CastHelper::eval ( param, algo->getParamType ( i ), moves [ i ] ) ); - moves [ i ] = true; } ++ i; } @@ -61,5 +60,4 @@ std::shared_ptr < abstraction::OperationAbstraction > AlgorithmHelper::eval ( co return algo; } - } /* namespace abstraction */ diff --git a/alib2abstraction/src/common/AlgorithmHelper.h b/alib2abstraction/src/common/AlgorithmHelper.h index 59033af8e1..49cb0a7d7d 100644 --- a/alib2abstraction/src/common/AlgorithmHelper.h +++ b/alib2abstraction/src/common/AlgorithmHelper.h @@ -18,7 +18,7 @@ namespace abstraction { class AlgorithmHelper { public: - static std::shared_ptr < abstraction::OperationAbstraction > eval ( const std::string & name, const ext::vector < std::string > & templateParams, const ext::vector < std::shared_ptr < abstraction::OperationAbstraction > > & params, std::vector < bool > & moves, AlgorithmCategories::AlgorithmCategory category ); + static std::shared_ptr < abstraction::OperationAbstraction > eval ( const std::string & name, const ext::vector < std::string > & templateParams, const ext::vector < std::shared_ptr < abstraction::OperationAbstraction > > & params, const std::vector < bool > & moves, AlgorithmCategories::AlgorithmCategory category ); }; diff --git a/alib2cli/src/ast/Statement.h b/alib2cli/src/ast/Statement.h index cffb0e994e..398fd0baa0 100644 --- a/alib2cli/src/ast/Statement.h +++ b/alib2cli/src/ast/Statement.h @@ -12,8 +12,6 @@ public: virtual ~Statement ( ) noexcept = default; virtual std::shared_ptr < abstraction::OperationAbstraction > translateAndEval ( const std::shared_ptr < abstraction::OperationAbstraction > & prev, Environment & environment ) const = 0; - - virtual bool getImplicitMove ( ) const = 0; }; } /* namespace cli */ diff --git a/alib2cli/src/ast/statements/CastStatement.h b/alib2cli/src/ast/statements/CastStatement.h index 1c66b10e1b..59c913faa4 100644 --- a/alib2cli/src/ast/statements/CastStatement.h +++ b/alib2cli/src/ast/statements/CastStatement.h @@ -23,10 +23,6 @@ public: return abstraction::CastHelper::eval ( translatedStatement, type, m_move ); } - bool getImplicitMove ( ) const override { - return true; - } - }; } /* namespace cli */ diff --git a/alib2cli/src/ast/statements/ContainerStatement.cpp b/alib2cli/src/ast/statements/ContainerStatement.cpp index 976d2c0f2b..0d514e1757 100644 --- a/alib2cli/src/ast/statements/ContainerStatement.cpp +++ b/alib2cli/src/ast/statements/ContainerStatement.cpp @@ -18,28 +18,20 @@ std::shared_ptr < abstraction::OperationAbstraction > ContainerStatement::transl std::shared_ptr < abstraction::OperationAbstraction > algo = abstraction::Registry::getContainerAbstraction ( m_container, m_type->getType ( ) ); - ext::vector < bool > moves ( m_moves.size ( ) ); - unsigned i = 0; - for ( const std::shared_ptr < Statement > & param : m_params ) { - moves [ i ] = m_moves [ i ] | param->getImplicitMove ( ); - ++ i; - } - - i = 0; + int i = 0; ext::vector < std::shared_ptr < abstraction::OperationAbstraction > > casted_params; for ( const std::shared_ptr < abstraction::OperationAbstraction > & param : params ) { if ( abstraction::Registry::isCastNoOp ( algo->getParamType ( i ), param->getReturnType ( ) ) ) { casted_params.push_back ( param ); } else { - casted_params.push_back ( abstraction::CastHelper::eval ( param, algo->getParamType ( i ), moves [ i ] ) ); - moves [ i ] = true; + casted_params.push_back ( abstraction::CastHelper::eval ( param, algo->getParamType ( i ), m_moves [ i ] ) ); } ++ i; } i = 0; for ( const std::shared_ptr < abstraction::OperationAbstraction > & param : casted_params ) { - if ( ! algo->attachInput ( param, i, moves [ i ], true ) ) + if ( ! algo->attachInput ( param, i, m_moves [ i ], true ) ) throw std::invalid_argument ( "Can't connect param at " + ext::to_string ( i ) + " of algorithm " + m_container + " with result of type " + param->getReturnType ( ) + "." ); ++ i; } diff --git a/alib2cli/src/ast/statements/ContainerStatement.h b/alib2cli/src/ast/statements/ContainerStatement.h index fdca5a9358..15afd19278 100644 --- a/alib2cli/src/ast/statements/ContainerStatement.h +++ b/alib2cli/src/ast/statements/ContainerStatement.h @@ -17,9 +17,6 @@ public: std::shared_ptr < abstraction::OperationAbstraction > translateAndEval ( const std::shared_ptr < abstraction::OperationAbstraction > & prev, Environment & environment ) const override; - bool getImplicitMove ( ) const override { - return true; - } }; } /* namespace cli */ diff --git a/alib2cli/src/ast/statements/FileStatement.h b/alib2cli/src/ast/statements/FileStatement.h index 80e492823d..ceaeff0540 100644 --- a/alib2cli/src/ast/statements/FileStatement.h +++ b/alib2cli/src/ast/statements/FileStatement.h @@ -17,9 +17,6 @@ public: std::shared_ptr < abstraction::OperationAbstraction > translateAndEval ( const std::shared_ptr < abstraction::OperationAbstraction > &, Environment & environment ) const override; - bool getImplicitMove ( ) const override { - return true; - } }; } /* namespace cli */ diff --git a/alib2cli/src/ast/statements/ImmediateStatement.h b/alib2cli/src/ast/statements/ImmediateStatement.h index 75f910acfc..96f04b0b85 100644 --- a/alib2cli/src/ast/statements/ImmediateStatement.h +++ b/alib2cli/src/ast/statements/ImmediateStatement.h @@ -18,9 +18,6 @@ public: return std::make_shared < abstraction::ImmediateValueAbstraction < Type > > ( m_data ); } - bool getImplicitMove ( ) const override { - return true; - } }; } /* namespace cli */ diff --git a/alib2cli/src/ast/statements/PreviousResultStatement.h b/alib2cli/src/ast/statements/PreviousResultStatement.h index 5dd56bcea0..fd7855fb23 100644 --- a/alib2cli/src/ast/statements/PreviousResultStatement.h +++ b/alib2cli/src/ast/statements/PreviousResultStatement.h @@ -14,9 +14,6 @@ public: return prev; } - bool getImplicitMove ( ) const override { - return false; - } }; } /* namespace cli */ diff --git a/alib2cli/src/ast/statements/ResultFileStatement.h b/alib2cli/src/ast/statements/ResultFileStatement.h index 97a7e2a536..72678e62b0 100644 --- a/alib2cli/src/ast/statements/ResultFileStatement.h +++ b/alib2cli/src/ast/statements/ResultFileStatement.h @@ -30,10 +30,6 @@ public: return res; } - bool getImplicitMove ( ) const override { - return false; - } - }; } /* namespace cli */ diff --git a/alib2cli/src/ast/statements/ResultPrintStatement.h b/alib2cli/src/ast/statements/ResultPrintStatement.h index 54a3fe4f57..e43e3b4f76 100644 --- a/alib2cli/src/ast/statements/ResultPrintStatement.h +++ b/alib2cli/src/ast/statements/ResultPrintStatement.h @@ -24,10 +24,6 @@ public: return res; } - bool getImplicitMove ( ) const override { - return false; - } - }; } /* namespace cli */ diff --git a/alib2cli/src/ast/statements/ResultVariableStatement.h b/alib2cli/src/ast/statements/ResultVariableStatement.h index bc98979183..f3bda09aa8 100644 --- a/alib2cli/src/ast/statements/ResultVariableStatement.h +++ b/alib2cli/src/ast/statements/ResultVariableStatement.h @@ -19,10 +19,6 @@ public: return res; } - bool getImplicitMove ( ) const override { - return false; - } - }; } /* namespace cli */ diff --git a/alib2cli/src/ast/statements/SingleStatement.cpp b/alib2cli/src/ast/statements/SingleStatement.cpp index bd77d7b1fd..5c249ca512 100644 --- a/alib2cli/src/ast/statements/SingleStatement.cpp +++ b/alib2cli/src/ast/statements/SingleStatement.cpp @@ -14,13 +14,6 @@ std::shared_ptr < abstraction::OperationAbstraction > SingleStatement::translate params.push_back ( param->translateAndEval ( prev, environment ) ); } - ext::vector < bool > moves ( m_moves.size ( ) ); - unsigned i = 0; - for ( const std::shared_ptr < Statement > & param : m_params ) { - moves [ i ] = m_moves [ i ] | param->getImplicitMove ( ); - ++ i; - } - std::string name = m_name->eval ( environment ); ext::vector < std::string > templateParams; @@ -31,7 +24,7 @@ std::shared_ptr < abstraction::OperationAbstraction > SingleStatement::translate if ( m_category ) category = m_category->getCategory ( ); - return abstraction::AlgorithmHelper::eval ( name, templateParams, params, moves, category ); + return abstraction::AlgorithmHelper::eval ( name, templateParams, params, m_moves, category ); } } /* namespace cli */ diff --git a/alib2cli/src/ast/statements/SingleStatement.h b/alib2cli/src/ast/statements/SingleStatement.h index 8502a5b031..2f6265f5b0 100644 --- a/alib2cli/src/ast/statements/SingleStatement.h +++ b/alib2cli/src/ast/statements/SingleStatement.h @@ -19,9 +19,6 @@ public: std::shared_ptr < abstraction::OperationAbstraction > translateAndEval ( const std::shared_ptr < abstraction::OperationAbstraction > & prev, Environment & environment ) const override; - bool getImplicitMove ( ) const override { - return false; - } }; } /* namespace cli */ diff --git a/alib2cli/src/ast/statements/StatementList.h b/alib2cli/src/ast/statements/StatementList.h index 842bc9f163..3fbe8c7144 100644 --- a/alib2cli/src/ast/statements/StatementList.h +++ b/alib2cli/src/ast/statements/StatementList.h @@ -27,9 +27,6 @@ public: m_statements.emplace_back ( std::move ( statement ) ); } - bool getImplicitMove ( ) const override { - return false; - } }; } /* namespace cli */ diff --git a/alib2cli/src/ast/statements/ValueStatement.h b/alib2cli/src/ast/statements/ValueStatement.h index ec526380ad..94f8d52fb7 100644 --- a/alib2cli/src/ast/statements/ValueStatement.h +++ b/alib2cli/src/ast/statements/ValueStatement.h @@ -17,9 +17,6 @@ public: return std::make_shared < abstraction::ImmediateValueAbstraction < std::string > > ( m_arg->eval ( environment ) ); } - bool getImplicitMove ( ) const override { - return true; - } }; } /* namespace cli */ diff --git a/alib2cli/src/ast/statements/VariableStatement.h b/alib2cli/src/ast/statements/VariableStatement.h index f3a655e30c..7a9c9851dd 100644 --- a/alib2cli/src/ast/statements/VariableStatement.h +++ b/alib2cli/src/ast/statements/VariableStatement.h @@ -17,9 +17,6 @@ public: return environment.getVariable ( m_name->eval ( environment ) ); } - bool getImplicitMove ( ) const override { - return false; - } }; } /* namespace cli */ diff --git a/alib2raw_cli_integration/src/InputFileTypeRegistration.cpp b/alib2raw_cli_integration/src/InputFileTypeRegistration.cpp index cbd4faf4c9..1e7f823f73 100644 --- a/alib2raw_cli_integration/src/InputFileTypeRegistration.cpp +++ b/alib2raw_cli_integration/src/InputFileTypeRegistration.cpp @@ -7,6 +7,9 @@ #include <abstraction/WrapperAbstraction.hpp> #include <abstraction/PackingAbstraction.hpp> +#include <registry/Registry.h> +#include <common/AlgorithmCategories.hpp> + namespace { std::shared_ptr < abstraction::OperationAbstraction > dummy4 ( const std::string & typehint, const ext::vector < std::string > & ) { diff --git a/alib2raw_cli_integration/src/OutputFileTypeRegistration.cpp b/alib2raw_cli_integration/src/OutputFileTypeRegistration.cpp index 668c59300a..cbbd101832 100644 --- a/alib2raw_cli_integration/src/OutputFileTypeRegistration.cpp +++ b/alib2raw_cli_integration/src/OutputFileTypeRegistration.cpp @@ -8,6 +8,9 @@ #include <abstraction/PackingAbstraction.hpp> +#include <registry/Registry.h> +#include <common/AlgorithmCategories.hpp> + namespace { std::shared_ptr < abstraction::OperationAbstraction > dummy4 ( const std::string & typehint ) { diff --git a/alib2str_cli_integration/src/InputFileTypeRegistration.cpp b/alib2str_cli_integration/src/InputFileTypeRegistration.cpp index b6eed2f023..2ed435e197 100644 --- a/alib2str_cli_integration/src/InputFileTypeRegistration.cpp +++ b/alib2str_cli_integration/src/InputFileTypeRegistration.cpp @@ -7,6 +7,9 @@ #include <abstraction/WrapperAbstraction.hpp> #include <abstraction/PackingAbstraction.hpp> +#include <registry/Registry.h> +#include <common/AlgorithmCategories.hpp> + namespace { std::shared_ptr < abstraction::OperationAbstraction > dummy3 ( const std::string & typehint, const ext::vector < std::string > & ) { diff --git a/alib2str_cli_integration/src/OutputFileTypeRegistration.cpp b/alib2str_cli_integration/src/OutputFileTypeRegistration.cpp index 1b32d89648..22c682adb6 100644 --- a/alib2str_cli_integration/src/OutputFileTypeRegistration.cpp +++ b/alib2str_cli_integration/src/OutputFileTypeRegistration.cpp @@ -8,6 +8,9 @@ #include <abstraction/PackingAbstraction.hpp> +#include <registry/Registry.h> +#include <common/AlgorithmCategories.hpp> + namespace { std::shared_ptr < abstraction::OperationAbstraction > dummy3 ( const std::string & typehint ) { -- GitLab