From 1ad70199406134230f0abf8758ee6157b07bf48c Mon Sep 17 00:00:00 2001 From: sam-astro <77079540+sam-astro@users.noreply.github.com> Date: Wed, 25 May 2022 10:45:15 -0400 Subject: [PATCH] Allow for single args as bool ex. `if 3` instead of `if 3 == 3` --- ZSharp/Main.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ZSharp/Main.cpp b/ZSharp/Main.cpp index e08afb6..686ef41 100644 --- a/ZSharp/Main.cpp +++ b/ZSharp/Main.cpp @@ -279,8 +279,10 @@ boost::any EvalExpression(const string& ex, unordered_map& v bool BooleanLogic(const string& valA, const string& determinant, const string& valB, unordered_map& variableValues) { - boost::any valARealValue = EvalExpression(valA, variableValues); - boost::any valBRealValue = EvalExpression(valB, variableValues); + if(valA) + boost::any valARealValue = EvalExpression(valA, variableValues); + if(valB) + boost::any valBRealValue = EvalExpression(valB, variableValues); #if DEVELOPER_MESSAGES == true InterpreterLog(AnyAsString(valARealValue) + " " + determinant + " " + AnyAsString(valBRealValue) + " : " + AnyAsString(valA) + " " + determinant + " " + AnyAsString(valB) + " : " + to_string(AnyAsString(valARealValue) == AnyAsString(valBRealValue))); #endif @@ -296,6 +298,8 @@ bool BooleanLogic(const string& valA, const string& determinant, const string& v return AnyAsFloat(valARealValue) > AnyAsFloat(valBRealValue); else if (determinant == "<") return AnyAsFloat(valARealValue) < AnyAsFloat(valBRealValue); + else if (determinant == "") + return AnyAsBool(valARealValue) == true; else LogWarning("unrecognized determinant \'" + determinant + "\'");