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 { ...@@ -8,25 +8,12 @@ class StatementList final : public Statement {
ext::vector < std::shared_ptr < Statement > > m_statements; ext::vector < std::shared_ptr < Statement > > m_statements;
   
public: 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 { 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 > next = m_statements [ 0 ]->translateAndEval ( nullptr, environment ); void append ( std::shared_ptr < Statement > statement );
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 ) );
}
   
}; };
   
} /* namespace cli */ } /* 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