const ExecutionResult InvokeStatement::Execute( const shared_ptr<ExecutionContext> context, const shared_ptr<ExecutionContext> closure) const { auto result = m_expression->Evaluate(context, closure); return ExecutionResult(result->GetErrors()); }
const ExecutionResult ExitStatement::Execute( const shared_ptr<ExecutionContext> context, const shared_ptr<ExecutionContext> closure) const { plain_shared_ptr<int> exit_code = make_shared<int>(0); if (m_exit_expression) { const_shared_ptr<Result> evaluation = m_exit_expression->Evaluate( context, closure); if (!ErrorList::IsTerminator(evaluation->GetErrors())) { return ExecutionResult(evaluation->GetErrors()); } else { exit_code = evaluation->GetData<int>(); } } return ExecutionResult(exit_code); }
const ExecutionResult ComplexInstantiationStatement::Execute( const shared_ptr<ExecutionContext> context, const shared_ptr<ExecutionContext> closure) const { auto type_result = m_type_specifier->GetType(context->GetTypeTable(), RESOLVE); auto errors = type_result->GetErrors(); if (ErrorList::IsTerminator(errors)) { auto type = type_result->GetData<TypeDefinition>(); auto as_complex = dynamic_pointer_cast<const ComplexType>(type); if (as_complex) { errors = as_complex->Instantiate(context, m_type_specifier, GetName(), GetInitializerExpression()); } else { //type does not exist errors = ErrorList::From( make_shared<Error>(Error::RUNTIME, Error::UNDECLARED_TYPE, m_type_specifier_location.begin, m_type_specifier->ToString()), errors); } } return ExecutionResult(errors); }
virtual ExecutionResult specificExecute ( const PluginExecutionParams&, const QList<UUIDObject*>&, const QHash< QString, QList<Plugin*> >& ) { return ExecutionResult(OkStatus, QString()); }
ExecutionResult MixClient::lastExecution() const { ReadGuard l(x_executions); return m_executions.empty() ? ExecutionResult() : m_executions.back(); }