more consistency checks
This commit is contained in:
@ -4770,12 +4770,14 @@ double Variable::evaluate_boolean(char *str)
|
||||
}
|
||||
|
||||
if (opprevious == NOT) {
|
||||
if (flag2) error->all(FLERR,"Invalid Boolean syntax in if command");
|
||||
if (flag2)
|
||||
error->all(FLERR,"If command boolean not cannot operate on string");
|
||||
if (value2 == 0.0) argstack[nargstack].value = 1.0;
|
||||
else argstack[nargstack].value = 0.0;
|
||||
|
||||
} else if (opprevious == EQ) {
|
||||
if (flag1 != flag2)
|
||||
error->all(FLERR,"If command boolean comparing string to number");
|
||||
error->all(FLERR,"If command boolean is comparing string to number");
|
||||
if (flag2 == 0) {
|
||||
if (value1 == value2) argstack[nargstack].value = 1.0;
|
||||
else argstack[nargstack].value = 0.0;
|
||||
@ -4787,7 +4789,7 @@ double Variable::evaluate_boolean(char *str)
|
||||
}
|
||||
} else if (opprevious == NE) {
|
||||
if (flag1 != flag2)
|
||||
error->all(FLERR,"Invalid Boolean syntax in if command");
|
||||
error->all(FLERR,"If command boolean is comparing string to number");
|
||||
if (flag2 == 0) {
|
||||
if (value1 != value2) argstack[nargstack].value = 1.0;
|
||||
else argstack[nargstack].value = 0.0;
|
||||
@ -4797,32 +4799,39 @@ double Variable::evaluate_boolean(char *str)
|
||||
delete[] str1;
|
||||
delete[] str2;
|
||||
}
|
||||
|
||||
} else if (opprevious == LT) {
|
||||
if (flag2) error->all(FLERR,"Invalid Boolean syntax in if command");
|
||||
if (value1 < value2) argstack[nargstack].value = 1.0;
|
||||
if (flag1 || flag2)
|
||||
error->all(FLERR,"If command boolean can only operate on numbers");
|
||||
else argstack[nargstack].value = 0.0;
|
||||
} else if (opprevious == LE) {
|
||||
if (flag2) error->all(FLERR,"Invalid Boolean syntax in if command");
|
||||
if (flag1 || flag2)
|
||||
error->all(FLERR,"If command boolean can only operate on numbers");
|
||||
if (value1 <= value2) argstack[nargstack].value = 1.0;
|
||||
else argstack[nargstack].value = 0.0;
|
||||
} else if (opprevious == GT) {
|
||||
if (flag2) error->all(FLERR,"Invalid Boolean syntax in if command");
|
||||
if (flag1 || flag2)
|
||||
error->all(FLERR,"If command boolean can only operate on numbers");
|
||||
if (value1 > value2) argstack[nargstack].value = 1.0;
|
||||
else argstack[nargstack].value = 0.0;
|
||||
} else if (opprevious == GE) {
|
||||
if (flag2) error->all(FLERR,"Invalid Boolean syntax in if command");
|
||||
if (flag1 || flag2)
|
||||
error->all(FLERR,"If command boolean can only operate on numbers");
|
||||
if (value1 >= value2) argstack[nargstack].value = 1.0;
|
||||
else argstack[nargstack].value = 0.0;
|
||||
} else if (opprevious == AND) {
|
||||
if (flag2) error->all(FLERR,"Invalid Boolean syntax in if command");
|
||||
if (flag1 || flag2)
|
||||
error->all(FLERR,"If command boolean can only operate on numbers");
|
||||
if (value1 != 0.0 && value2 != 0.0) argstack[nargstack].value = 1.0;
|
||||
else argstack[nargstack].value = 0.0;
|
||||
} else if (opprevious == OR) {
|
||||
if (flag2) error->all(FLERR,"Invalid Boolean syntax in if command");
|
||||
if (flag1 || flag2)
|
||||
error->all(FLERR,"If command boolean can only operate on numbers");
|
||||
if (value1 != 0.0 || value2 != 0.0) argstack[nargstack].value = 1.0;
|
||||
else argstack[nargstack].value = 0.0;
|
||||
} else if (opprevious == XOR) {
|
||||
if (flag2) error->all(FLERR,"Invalid Boolean syntax in if command");
|
||||
if (flag1 || flag2)
|
||||
error->all(FLERR,"If command boolean can only operate on numbers");
|
||||
if ((value1 == 0.0 && value2 != 0.0) ||
|
||||
(value1 != 0.0 && value2 == 0.0))
|
||||
argstack[nargstack].value = 1.0;
|
||||
|
||||
Reference in New Issue
Block a user