Exemplo n.º 1
0
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());
}
Exemplo n.º 2
0
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);
}
Exemplo n.º 4
0
 virtual ExecutionResult specificExecute ( 
                           const PluginExecutionParams&,
                           const QList<UUIDObject*>&,
                           const QHash< QString, QList<Plugin*> >& )
 { return ExecutionResult(OkStatus, QString()); }
Exemplo n.º 5
0
ExecutionResult MixClient::lastExecution() const
{
	ReadGuard l(x_executions);
	return m_executions.empty() ? ExecutionResult() : m_executions.back();
}