in src/qmf/Expression.cpp [381:439]
bool Expression::greaterEqual(const Variant& left, const Variant& right) const
{
switch (left.getType()) {
case VAR_UINT8: case VAR_UINT16: case VAR_UINT32: case VAR_UINT64:
case VAR_INT8: case VAR_INT16: case VAR_INT32: case VAR_INT64:
switch (right.getType()) {
case VAR_UINT8: case VAR_UINT16: case VAR_UINT32: case VAR_UINT64:
case VAR_INT8: case VAR_INT16: case VAR_INT32: case VAR_INT64:
return left.asInt64() >= right.asInt64();
case VAR_STRING:
try {
return left.asInt64() >= right.asInt64();
} catch (std::exception&) {}
break;
default:
break;
}
break;
case VAR_FLOAT: case VAR_DOUBLE:
switch (right.getType()) {
case VAR_FLOAT: case VAR_DOUBLE:
return left.asDouble() >= right.asDouble();
case VAR_STRING:
try {
return left.asDouble() >= right.asDouble();
} catch (std::exception&) {}
break;
default:
break;
}
break;
case VAR_STRING:
switch (right.getType()) {
case VAR_UINT8: case VAR_UINT16: case VAR_UINT32: case VAR_UINT64:
case VAR_INT8: case VAR_INT16: case VAR_INT32: case VAR_INT64:
try {
return left.asInt64() >= right.asInt64();
} catch (std::exception&) {}
break;
case VAR_FLOAT: case VAR_DOUBLE:
try {
return left.asDouble() >= right.asDouble();
} catch (std::exception&) {}
break;
case VAR_STRING:
return left.asString() >= right.asString();
default:
break;
}
default:
break;
}
return false;
}