From 6b467854fce4ecee96726248f6e23615e5578e69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Tr=C3=A1vn=C3=AD=C4=8Dek?= <jan.travnicek@fit.cvut.cz> Date: Tue, 15 Mar 2022 16:37:50 +0100 Subject: [PATCH] abstraction: move code to cpp --- alib2cli/src/ast/statements/StatementList.cpp | 23 +++++++++++++++++++ alib2cli/src/ast/statements/StatementList.h | 19 +++------------ 2 files changed, 26 insertions(+), 16 deletions(-) create mode 100644 alib2cli/src/ast/statements/StatementList.cpp diff --git a/alib2cli/src/ast/statements/StatementList.cpp b/alib2cli/src/ast/statements/StatementList.cpp new file mode 100644 index 0000000000..ffbb939124 --- /dev/null +++ b/alib2cli/src/ast/statements/StatementList.cpp @@ -0,0 +1,23 @@ +#include <ast/statements/StatementList.h> + +namespace cli { + +StatementList::StatementList ( ext::vector < std::shared_ptr < Statement > > statements ) : m_statements ( std::move ( statements ) ) { +} + +std::shared_ptr < abstraction::Value > StatementList::translateAndEval ( const std::shared_ptr < abstraction::Value > &, Environment & environment ) const { + if ( m_statements.empty ( ) ) + throw std::invalid_argument ( "Statement list can't be empty" ); + + std::shared_ptr < abstraction::Value > next = m_statements [ 0 ]->translateAndEval ( nullptr, environment ); + for ( size_t i = 1; i < m_statements.size ( ); ++ i ) + next = m_statements [ i ]->translateAndEval ( next, environment ); + + return next; +} + +void StatementList::append ( std::shared_ptr < Statement > statement ) { + m_statements.emplace_back ( std::move ( statement ) ); +} + +} /* namespace cli */ diff --git a/alib2cli/src/ast/statements/StatementList.h b/alib2cli/src/ast/statements/StatementList.h index f1d1782445..74bf355ffa 100644 --- a/alib2cli/src/ast/statements/StatementList.h +++ b/alib2cli/src/ast/statements/StatementList.h @@ -8,25 +8,12 @@ class StatementList final : public Statement { ext::vector < std::shared_ptr < Statement > > m_statements; public: - StatementList ( ext::vector < std::shared_ptr < Statement > > statements ) : m_statements ( std::move ( statements ) ) { - } + StatementList ( ext::vector < std::shared_ptr < Statement > > statements ); - std::shared_ptr < abstraction::Value > translateAndEval ( const std::shared_ptr < abstraction::Value > &, Environment & environment ) const override { - if ( m_statements.empty ( ) ) - throw std::invalid_argument ( "Statement list can't be empty" ); + std::shared_ptr < abstraction::Value > translateAndEval ( const std::shared_ptr < abstraction::Value > &, Environment & environment ) const override; - std::shared_ptr < abstraction::Value > next = m_statements [ 0 ]->translateAndEval ( nullptr, environment ); - for ( size_t i = 1; i < m_statements.size ( ); ++ i ) - next = m_statements [ i ]->translateAndEval ( next, environment ); - - return next; - } - - void append ( std::shared_ptr < Statement > statement ) { - m_statements.emplace_back ( std::move ( statement ) ); - } + void append ( std::shared_ptr < Statement > statement ); }; } /* namespace cli */ - -- GitLab