void HqlCppCaseInfo::addPair(IHqlExpression * expr) { pairs.append(*LINK(expr)); IHqlExpression * compareValue = expr->queryChild(0); if (!compareValue->queryValue()) constantCases = false; if (!expr->queryChild(1)->queryValue()) constantValues = false; if (cond && !complexCompare) { ITypeInfo * valueType = compareValue->queryType(); if (valueType != cond->queryType()) complexCompare = isCompare3Valued(compareValue->queryType()); } updateResultType(expr->queryChild(1)); }
void HqlCppCaseInfo::addPair(IHqlExpression * expr) { IHqlExpression * compareExpr = expr->queryChild(0); IHqlExpression * resultExpr = expr->queryChild(1); if (allResultsMatch && pairs.ordinality()) { if (pairs.tos().queryChild(1) != resultExpr) allResultsMatch = false; } pairs.append(*LINK(expr)); if (!compareExpr->queryValue()) { constantCases = false; } else if (constantCases) { if (!lowestCompareExpr || compareValues(compareExpr, lowestCompareExpr) < 0) lowestCompareExpr.set(compareExpr); if (!highestCompareExpr || compareValues(compareExpr, highestCompareExpr) > 0) highestCompareExpr.set(compareExpr); } if (!expr->queryChild(1)->queryValue()) constantValues = false; if (cond && !complexCompare) { ITypeInfo * valueType = compareExpr->queryType(); if (valueType != cond->queryType()) complexCompare = isCompare3Valued(compareExpr->queryType()); } updateResultType(resultExpr); }