Пример #1
0
void csp::OpTestSuite_RunAll::Terminate( Host& host )
{
    if( m_pCurrentClosure )
        m_pCurrentClosure->process.Terminate( host );

    UnrefClosures( m_pClosuresHead );
    if( m_pCurrentClosure )
        UnrefClosure( m_pCurrentClosure );
}
Пример #2
0
void csp::OpAlt::Terminate( Host& host )
{
	lua::LuaStack stack = host.LuaState().GetStack();

	m_process.Terminate( host );

	DetachChannels();
	UnrefChannels( stack );
	UnrefArguments( stack );
	UnrefClosures( stack );
	UnrefProcess( stack );
}
Пример #3
0
csp::WorkResult::Enum csp::OpAlt::StartTriggeredProcess( Host& host )
{
	CORE_ASSERT( m_pCaseTriggered );

	lua::LuaStack& stack = host.LuaState().GetStack();

	lua::LuaState thread = stack.NewThread();

	stack.GetTopValue().PushValue();
	m_processRefKey = stack.RefInRegistry();

	m_process.SetLuaThread( thread );
	m_process.SetParentProcess( ThisProcess() );

	lua::LuaStack threadStack = thread.GetStack();
	threadStack.PushRegistryReferenced( m_pCaseTriggered->m_closureRefKey );
	for( int i = 0; i < m_numArguments; ++i )
		threadStack.PushRegistryReferenced( m_arguments[i].refKey );

	int numArguments = m_numArguments == CSP_NO_ARGS ? 0 : m_numArguments;
	WorkResult::Enum result = m_process.StartEvaluation( host, numArguments );
	UnrefClosures( stack );
	return result;
}