Added MIN and MAX functions for operand.
This commit is contained in:
1 parent
c21f27f14d
commit
3314a410e0
2 files changed
+66
-2
No files matched your search
+56
-2
@@ -146,9 +146,63 @@ namespace jet {
|
||||
} else
|
||||
throw coreutils::Exception("Expecting ) at end of ABS expression.");
|
||||
} else if(in.ifNextIgnoreCase("MAX")) {
|
||||
|
||||
if(!in.ifNext("("))
|
||||
throw coreutils::Exception("Expecting ( for MAX parameters.");
|
||||
Operand *parm = new Operand(in, tag);
|
||||
string = parm->string;
|
||||
doubleValue = parm->doubleValue;
|
||||
isNumber = parm->isNumber;
|
||||
delete parm;
|
||||
while(in.ifNext(",")) {
|
||||
parm = new Operand(in, tag);
|
||||
if(isNumber != parm->isNumber)
|
||||
throw coreutils::Exception("All parameters in MAX expression must be same type.");
|
||||
if(isNumber) {
|
||||
if(parm->doubleValue > doubleValue) {
|
||||
doubleValue = parm->doubleValue;
|
||||
string = parm->string;
|
||||
}
|
||||
} else {
|
||||
if(parm->string > string) {
|
||||
doubleValue = parm->doubleValue;
|
||||
string = parm->string;
|
||||
}
|
||||
}
|
||||
delete parm;
|
||||
}
|
||||
if(!in.ifNext(")")) {
|
||||
throw coreutils::Exception("Expecting ) at end of MAX expression.");
|
||||
}
|
||||
string.removeTrailingZeros();
|
||||
} else if(in.ifNextIgnoreCase("MIN")) {
|
||||
|
||||
if(!in.ifNext("("))
|
||||
throw coreutils::Exception("Expecting ( for MIN parameters.");
|
||||
Operand *parm = new Operand(in, tag);
|
||||
string = parm->string;
|
||||
doubleValue = parm->doubleValue;
|
||||
isNumber = parm->isNumber;
|
||||
delete parm;
|
||||
while(in.ifNext(",")) {
|
||||
parm = new Operand(in, tag);
|
||||
if(isNumber != parm->isNumber)
|
||||
throw coreutils::Exception("All parameters in MIN expression must be same type.");
|
||||
if(isNumber) {
|
||||
if(parm->doubleValue < doubleValue) {
|
||||
doubleValue = parm->doubleValue;
|
||||
string = parm->string;
|
||||
}
|
||||
} else {
|
||||
if(parm->string < string) {
|
||||
doubleValue = parm->doubleValue;
|
||||
string = parm->string;
|
||||
}
|
||||
}
|
||||
delete parm;
|
||||
}
|
||||
if(!in.ifNext(")")) {
|
||||
throw coreutils::Exception("Expecting ) at end of MIN expression.");
|
||||
}
|
||||
string.removeTrailingZeros();
|
||||
} else if(in.ifNextIgnoreCase("POW")) {
|
||||
if(!in.ifNext("("))
|
||||
throw coreutils::Exception("Expecting ( for POW parameters.");
|
||||
|
||||
Reference in new issue
Block a user