Commit 76fafd21 authored by Olivier Teulière's avatar Olivier Teulière

* skins2/parser/interpreter.cpp: parse the "or" operator

 * skins2/parser/expr_evaluator.cpp: small fix for enhanced flexibility
parent fec56cbe
...@@ -69,7 +69,7 @@ void ExprEvaluator::parse( const string &rExpr ) ...@@ -69,7 +69,7 @@ void ExprEvaluator::parse( const string &rExpr )
{ {
// Skip white spaces // Skip white spaces
end = begin; end = begin;
while( pString[end] && pString[end] != ' ' ) while( pString[end] && pString[end] != ' ' && pString[end] != ')' )
{ {
end++; end++;
} }
......
...@@ -211,6 +211,32 @@ VarBool *Interpreter::getVarBool( const string &rName, Theme *pTheme ) ...@@ -211,6 +211,32 @@ VarBool *Interpreter::getVarBool( const string &rName, Theme *pTheme )
// Register this variable in the manager // Register this variable in the manager
pVarManager->registerVar( VariablePtr( pNewVar ) ); pVarManager->registerVar( VariablePtr( pNewVar ) );
} }
else if( token == "or" )
{
// Get the 2 last variables on the stack
if( varStack.empty() )
{
msg_Err( getIntf(), "Invalid boolean expression: %s",
rName.c_str());
return NULL;
}
VarBool *pVar1 = varStack.back();
varStack.pop_back();
if( varStack.empty() )
{
msg_Err( getIntf(), "Invalid boolean expression: %s",
rName.c_str());
return NULL;
}
VarBool *pVar2 = varStack.back();
varStack.pop_back();
// Create a composite boolean variable
VarBool *pNewVar = new VarBoolOrBool( getIntf(), *pVar1, *pVar2 );
varStack.push_back( pNewVar );
// Register this variable in the manager
pVarManager->registerVar( VariablePtr( pNewVar ) );
}
else if( token == "not" ) else if( token == "not" )
{ {
// Get the last variable on the stack // Get the last variable on the stack
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment