E9 - Relational Operators
- Added missing-data handling for the relational operators <, <=, > and >=.
This commit is contained in:
24
src/E9.cpp
24
src/E9.cpp
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user