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