14 std::unique_ptr < cli::Arg > m_type;
15 std::shared_ptr < Statement > m_statement;
18 CastStatement ( std::unique_ptr < cli::Arg > type, std::shared_ptr < Statement > statement ) : m_type (
std::move ( type ) ), m_statement (
std::move ( statement ) ) {
21 std::shared_ptr < abstraction::Value >
translateAndEval (
const std::shared_ptr < abstraction::Value > & prev,
Environment & environment )
const override {
22 std::string type = m_type->eval ( environment );
24 std::shared_ptr < abstraction::Value > translatedStatement = m_statement->translateAndEval ( prev, environment );
static std::shared_ptr< abstraction::Value > eval(abstraction::TemporariesHolder &environment, const std::shared_ptr< abstraction::Value > ¶m, const std::string &type)
Definition: CastHelper.cpp:13
void holdTemporary(std::shared_ptr< abstraction::Value > temporary)
Definition: TemporariesHolder.cpp:10
Definition: CastStatement.h:13
CastStatement(std::unique_ptr< cli::Arg > type, std::shared_ptr< Statement > statement)
Definition: CastStatement.h:18
std::shared_ptr< abstraction::Value > translateAndEval(const std::shared_ptr< abstraction::Value > &prev, Environment &environment) const override
Definition: CastStatement.h:21
Definition: Environment.h:29
Definition: Statement.h:14
Definition: FordFulkerson.hpp:16