| 541 | } |
| 542 | |
| 543 | std::string Tr2ControllerExpression::CreateParser( const char* expression, const CcpParser::FunctionView& extraFunctions ) |
| 544 | { |
| 545 | CcpParser::Externals externals; |
| 546 | CcpParser::VariableView varViews[] = { m_controller->GetVariableView() }; |
| 547 | externals.variables = varViews; |
| 548 | CcpParser::FunctionView funcViews[2] = { extraFunctions, s_functions }; |
| 549 | externals.functions = { funcViews, 2 }; |
| 550 | ParserObserver observer; |
| 551 | observer.m_variables = varViews[0]; |
| 552 | auto parsed = CcpParser::Parse( expression, externals, m_program, &observer ); |
| 553 | if( parsed ) |
| 554 | { |
| 555 | m_controller->EnsureTempArenaSize( m_program.GetTempArenaSize() ); |
| 556 | m_variableMask = observer.m_maskOverflow || observer.m_hasNonPureFunctions ? 0ull : observer.m_mask; |
| 557 | return std::string(); |
| 558 | } |
| 559 | else |
| 560 | { |
| 561 | return ToString( parsed, expression ); |
| 562 | } |
| 563 | } |
| 564 | |
| 565 | std::pair<bool, float> Tr2ControllerExpression::Eval( void* extraBuffer ) const |
| 566 | { |
nothing calls this directly
no test coverage detected