diff --git a/Slang/Main.cpp b/Slang/Main.cpp index 5872b68..b364309 100644 --- a/Slang/Main.cpp +++ b/Slang/Main.cpp @@ -309,25 +309,19 @@ bool BooleanLogic(const string& valA, const string& determinant, const string& v any valARealValue = EvalExpression(valA, variableVals); any valBRealValue = EvalExpression(valB, variableVals); - switch(determinant) - { - case "==": - return AnyAsString(valARealValue) == AnyAsString(valBRealValue); - case "!=": - return AnyAsString(valARealValue) != AnyAsString(valBRealValue); - case ">=": - return AnyAsFloat(valARealValue) >= AnyAsFloat(valBRealValue); - case "<=": - return AnyAsFloat(valARealValue) <= AnyAsFloat(valBRealValue); - case ">": - return AnyAsFloat(valARealValue) > AnyAsFloat(valBRealValue); - case "<": - return AnyAsFloat(valARealValue) < AnyAsFloat(valBRealValue); - default: - LogWarning("invalid determinant \'" + determinant + "\'"); - return false; - } - + if (determinant == "==") + return AnyAsString(valARealValue) == AnyAsString(valBRealValue); + if (determinant == "!=") + return AnyAsString(valARealValue) != AnyAsString(valBRealValue); + if (determinant == ">=") + return AnyAsFloat(valARealValue) >= AnyAsFloat(valBRealValue); + if (determinant == "<=") + return AnyAsFloat(valARealValue) <= AnyAsFloat(valBRealValue); + if (determinant == ">") + return AnyAsFloat(valARealValue) > AnyAsFloat(valBRealValue); + if (determinant == "<") + return AnyAsFloat(valARealValue) < AnyAsFloat(valBRealValue); + return false; } @@ -335,43 +329,34 @@ int varOperation(const vector& str, unordered_map& variable { if (IsVar(str[0], variableValues)) { - switch(str[1]) - { - case "=": - variableValues[str[0]] = EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues); - case "+=": - variableValues[str[0]] = EvalExpression(str[0] + "+(" + unWrapVec(vector(str.begin() + 2, str.end())) + ")", variableValues); - case "-=": - variableValues[str[0]] = AnyAsFloat(variableValues[str[0]]) - AnyAsFloat(EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues)); - case "*=": - variableValues[str[0]] = AnyAsFloat(variableValues[str[0]]) * AnyAsFloat(EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues)); - case "/=": - variableValues[str[0]] = AnyAsFloat(variableValues[str[0]]) / AnyAsFloat(EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues)); - default: - LogWarning("invalid operator \'" + str[1] + "\'"); - return 1; - } + if (str[1] == "=") + variableValues[str[0]] = EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues); + else if (str[1] == "+=") + variableValues[str[0]] = EvalExpression(str[0] + "+(" + unWrapVec(vector(str.begin() + 2, str.end())) + ")", variableValues); + else if (str[1] == "-=") + variableValues[str[0]] = AnyAsFloat(variableValues[str[0]]) - AnyAsFloat(EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues)); + else if (str[1] == "*=") + variableValues[str[0]] = AnyAsFloat(variableValues[str[0]]) * AnyAsFloat(EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues)); + else if (str[1] == "/=") + variableValues[str[0]] = AnyAsFloat(variableValues[str[0]]) / AnyAsFloat(EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues)); + //cout << variables[v] << " is " << variableValues[v] << endl; return 0; } else if (IsVar(str[0], globalVariableValues)) { - switch(str[1]) - { - case "=": - globalVariableValues[str[0]] = EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues); - case "+=": - globalVariableValues[str[0]] = EvalExpression(str[0] + "+(" + unWrapVec(vector(str.begin() + 2, str.end())) + ")", variableValues); - case "-=": - globalVariableValues[str[0]] = AnyAsFloat(variableValues[str[0]]) - AnyAsFloat(EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues)); - case "*=": - globalVariableValues[str[0]] = AnyAsFloat(variableValues[str[0]]) * AnyAsFloat(EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues)); - case "/=": - globalVariableValues[str[0]] = AnyAsFloat(variableValues[str[0]]) / AnyAsFloat(EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues)); - default: - LogWarning("invalid operator \'" + str[1] + "\'"); - return 1; - } + if (str[1] == "=") + globalVariableValues[str[0]] = EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues); + else if (str[1] == "+=") + globalVariableValues[str[0]] = EvalExpression(str[0] + "+(" + unWrapVec(vector(str.begin() + 2, str.end())) + ")", variableValues); + else if (str[1] == "-=") + globalVariableValues[str[0]] = AnyAsFloat(variableValues[str[0]]) - AnyAsFloat(EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues)); + else if (str[1] == "*=") + globalVariableValues[str[0]] = AnyAsFloat(variableValues[str[0]]) * AnyAsFloat(EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues)); + else if (str[1] == "/=") + globalVariableValues[str[0]] = AnyAsFloat(variableValues[str[0]]) / AnyAsFloat(EvalExpression(unWrapVec(vector(str.begin() + 2, str.end())), variableValues)); + + //cout << variables[v] << " is " << variableValues[v] << endl; return 0; } LogWarning("uninitialized variable or typo in \'" << str[0] << "\'");