本文整理汇总了C++中ExprResult::GetValue方法的典型用法代码示例。如果您正苦于以下问题:C++ ExprResult::GetValue方法的具体用法?C++ ExprResult::GetValue怎么用?C++ ExprResult::GetValue使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ExprResult
的用法示例。
在下文中一共展示了ExprResult::GetValue方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: result
// =======================
ExprResult AddExpression::Evaluate
// =======================
(
Context& context
) const
{
// Create a result, and initialise its type as error.
ExprResult result( m_strPrecision );
result.SetStatus( ExprResult::UNDEF_STATUS );
// Evaluate the two operands of the addition expression.
ExprResult left = m_pOperand1->Evaluate( context );
ExprResult right = m_pOperand2->Evaluate( context );
// Convert any possible variable to its contents.
left.ConvertFromVar( context );
right.ConvertFromVar( context );
// Check if both the operands were evaluated as OK.
if ( left.IsOK() && right.IsOK() )
{
// Check if both operands have either an arithmetic type or type
// UNSPECIFIED which can be interpreted as an arithmetic type.
if ( ( left.IsNumber() || ( left.IsUnspecified() && left.InterpretAsNumber() ) )
&& ( right.IsNumber() || ( right.IsUnspecified() && right.InterpretAsNumber() ) ) )
{
// The (numerical) values of both operands can be added.
result = Add( left, right );
}
else
{
// The values of both operands can be concatenated.
result = Concatenate( left, right );
}
}
else
{
// Check if an error was found in the left operand.
if ( !left.IsOK() )
{
// Set as status and value of the result, those of the left operand.
result.SetStatus( left.GetStatus() );
result.SetValue( left.GetValue() );
}
else
{
// Set as status and value of the result, those of the right operand.
result.SetStatus( right.GetStatus() );
result.SetValue( right.GetValue() );
}
}
return result;
}