E9 - Relational Operators

- Added missing-data handling for the relational operators <, <=, >
  and >=.
This commit is contained in:
Paul Beckingham 2011-08-21 16:54:50 -04:00
parent f11c8ee5c6
commit e0ecb7a2d8

View file

@ -289,6 +289,11 @@ void E9::operator_lt (Arg& result, Arg& left, Arg& right)
} }
else if (left._type == Arg::type_date || else if (left._type == Arg::type_date ||
right._type == Arg::type_date) right._type == Arg::type_date)
{
if (left._value == "" ||
right._value == "")
result._value = "false";
else
{ {
Date left_date (left._value, _dateformat); Date left_date (left._value, _dateformat);
Date right_date (right._value, _dateformat); Date right_date (right._value, _dateformat);
@ -297,6 +302,7 @@ void E9::operator_lt (Arg& result, Arg& left, Arg& right)
? "true" ? "true"
: "false"; : "false";
} }
}
else else
{ {
result._value = (left._value < right._value) result._value = (left._value < right._value)
@ -322,6 +328,11 @@ void E9::operator_lte (Arg& result, Arg& left, Arg& right)
} }
else if (left._type == Arg::type_date || else if (left._type == Arg::type_date ||
right._type == Arg::type_date) right._type == Arg::type_date)
{
if (left._value == "" ||
right._value == "")
result._value = "false";
else
{ {
Date left_date (left._value, _dateformat); Date left_date (left._value, _dateformat);
Date right_date (right._value, _dateformat); Date right_date (right._value, _dateformat);
@ -330,6 +341,7 @@ void E9::operator_lte (Arg& result, Arg& left, Arg& right)
? "true" ? "true"
: "false"; : "false";
} }
}
else else
{ {
result._value = (left._value <= right._value) result._value = (left._value <= right._value)
@ -355,6 +367,11 @@ void E9::operator_gte (Arg& result, Arg& left, Arg& right)
} }
else if (left._type == Arg::type_date || else if (left._type == Arg::type_date ||
right._type == Arg::type_date) right._type == Arg::type_date)
{
if (left._value == "" ||
right._value == "")
result._value = "false";
else
{ {
Date left_date (left._value, _dateformat); Date left_date (left._value, _dateformat);
Date right_date (right._value, _dateformat); Date right_date (right._value, _dateformat);
@ -363,6 +380,7 @@ void E9::operator_gte (Arg& result, Arg& left, Arg& right)
? "true" ? "true"
: "false"; : "false";
} }
}
else else
{ {
result._value = (left._value >= right._value) result._value = (left._value >= right._value)
@ -387,6 +405,11 @@ void E9::operator_gt (Arg& result, Arg& left, Arg& right)
} }
else if (left._type == Arg::type_date || else if (left._type == Arg::type_date ||
right._type == Arg::type_date) right._type == Arg::type_date)
{
if (left._value == "" ||
right._value == "")
result._value = "false";
else
{ {
Date left_date (left._value, _dateformat); Date left_date (left._value, _dateformat);
Date right_date (right._value, _dateformat); Date right_date (right._value, _dateformat);
@ -395,6 +418,7 @@ void E9::operator_gt (Arg& result, Arg& left, Arg& right)
? "true" ? "true"
: "false"; : "false";
} }
}
else else
{ {
result._value = (left._value > right._value) result._value = (left._value > right._value)