if(oValue != null)
oRetValuePair = new Pair<Integer, Integer>(oValue, oValue);
}
}
else if (in_oTCGOCLExpression instanceof TCGOCLOperation) {
TCGOCLOperation oOpExp = (TCGOCLOperation) in_oTCGOCLExpression;
Pair<Integer, Integer> oFirstPair = getIntegerValuePair(
oOpExp.getLeft(), in_colCurrentValueAssignment, in_colCurrentValueRanges);
Pair<Integer, Integer> oSecondPair = getIntegerValuePair(
oOpExp.getRight(), in_colCurrentValueAssignment, in_colCurrentValueRanges);
if (oOpExp.getOperationName().compareTo("+") == 0) {
if(oFirstPair != null && oSecondPair != null)
oRetValuePair = new Pair<Integer, Integer>(
oFirstPair.getFirst().intValue() + oSecondPair.getFirst().intValue(),
oFirstPair.getSecond().intValue() + oSecondPair.getSecond().intValue());
} else if (oOpExp.getOperationName().compareTo("-") == 0) {
// TODO f�r un�re Operationen neuen Typ einf�hren
if (oFirstPair == null) {
if(oSecondPair != null)
oRetValuePair = new Pair<Integer, Integer>(
-oSecondPair.getSecond().intValue(),
-oSecondPair.getFirst().intValue());
}
else if (oSecondPair == null) {
if(oFirstPair != null)
oRetValuePair = new Pair<Integer, Integer>(
-oFirstPair.getSecond().intValue(),
-oFirstPair.getFirst().intValue());
}
else {
oRetValuePair = new Pair<Integer, Integer>(
oFirstPair.getFirst().intValue() - oSecondPair.getSecond().intValue(),
oFirstPair.getSecond().intValue() - oSecondPair.getFirst().intValue());
}
} else if (oOpExp.getOperationName().compareTo("*") == 0) {
if(oFirstPair != null && oSecondPair != null) {
int nMaxValue = Math.max(oFirstPair.getFirst().intValue() * oSecondPair.getFirst().intValue(),
oFirstPair.getSecond().intValue() * oSecondPair.getSecond().intValue());
int nMinValue = Math.min(
oFirstPair.getFirst().intValue() * oSecondPair.getFirst().intValue(),
Math.min(
oFirstPair.getFirst().intValue() * oSecondPair.getSecond().intValue(),
oFirstPair.getSecond().intValue() * oSecondPair.getFirst().intValue()));
oRetValuePair = new Pair<Integer, Integer>(nMinValue, nMaxValue);
}
} else if (oOpExp.getOperationName().compareTo("/") == 0) {
if(oFirstPair != null && oSecondPair != null) {
int nMaxValue = Integer.MAX_VALUE;
if(!(oSecondPair.getFirst().intValue() <= 0 &&
oSecondPair.getSecond().intValue() >= 0) ||
oFirstPair.getSecond() <= 0) {