Skip to content
Snippets Groups Projects
Commit 6b467854 authored by Jan Trávníček's avatar Jan Trávníček
Browse files

abstraction: move code to cpp

parent 245f30cb
No related branches found
No related tags found
1 merge request!227Merge jt
#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 */
......@@ -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 */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment