diff --git a/src/utils.cpp b/src/utils.cpp index 4663217..764b039 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -380,6 +380,8 @@ bool Greater(std::any a, std::any b) { return (*ptr_a_float) > (*ptr_b_float); else if ((ptr_a_string != nullptr) && (ptr_b_string != nullptr)) return (*ptr_a_string) > (*ptr_b_string); + else if (((ptr_a_string != nullptr) || (ptr_b_string != nullptr))) + return Any2String(a) > Any2String(b); else throw FatalError("Greater: Type Error", 54); } @@ -401,6 +403,8 @@ bool Less(std::any a, std::any b) { return (*ptr_a_float) < (*ptr_b_float); else if ((ptr_a_string != nullptr) && (ptr_b_string != nullptr)) return (*ptr_a_string) < (*ptr_b_string); + else if (((ptr_a_string != nullptr) || (ptr_b_string != nullptr))) + return Any2String(a) < Any2String(b); else throw FatalError("Less: Type Error", 55); } @@ -422,6 +426,8 @@ bool Equal(std::any a, std::any b) { return (*ptr_a_float) == (*ptr_b_float); else if ((ptr_a_string != nullptr) && (ptr_b_string != nullptr)) return (*ptr_a_string) == (*ptr_b_string); + else if (((ptr_a_string != nullptr) || (ptr_b_string != nullptr))) + return Any2String(a) == Any2String(b); else throw FatalError("Equal: Type Error", 56); } @@ -443,6 +449,8 @@ bool NotEqual(std::any a, std::any b) { return (*ptr_a_float) != (*ptr_b_float); else if ((ptr_a_string != nullptr) && (ptr_b_string != nullptr)) return (*ptr_a_string) != (*ptr_b_string); + else if (((ptr_a_string != nullptr) || (ptr_b_string != nullptr))) + return Any2String(a) != Any2String(b); else throw FatalError("NotEqual: Type Error", 57); } @@ -464,6 +472,8 @@ bool GreaterEqual(std::any a, std::any b) { return (*ptr_a_float) >= (*ptr_b_float); else if ((ptr_a_string != nullptr) && (ptr_b_string != nullptr)) return (*ptr_a_string) >= (*ptr_b_string); + else if (((ptr_a_string != nullptr) || (ptr_b_string != nullptr))) + return Any2String(a) >= Any2String(b); else throw FatalError("GreaterEqual: Type Error", 58); } @@ -485,6 +495,8 @@ bool LessEqual(std::any a, std::any b) { return (*ptr_a_float) <= (*ptr_b_float); else if ((ptr_a_string != nullptr) && (ptr_b_string != nullptr)) return (*ptr_a_string) <= (*ptr_b_string); + else if (((ptr_a_string != nullptr) || (ptr_b_string != nullptr))) + return Any2String(a) <= Any2String(b); else throw FatalError("LessEqual: Type Error", 59); } \ No newline at end of file