/// <inheritdoc /> protected override Value cloneValue() { AnyBooleanValue value = new AnyBooleanValue(); value.setStorage(getStorage()); return(value); }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { switch (operation) { case Operations.Plus: result = OutSet.CreateIntegerInterval(0, 1); break; case Operations.Minus: result = OutSet.CreateIntegerInterval(-1, 0); break; case Operations.LogicNegation: result = value; break; case Operations.BitNegation: // TODO: This must be fatal error SetWarning("Unsupported operand types: Bit negation of boolean value"); result = OutSet.AnyValue; break; default: base.VisitAnyBooleanValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { switch (operation) { case Operations.Mod: SetWarning("Object cannot be converted to integer by modulo operation", AnalysisWarningCause.OBJECT_CONVERTED_TO_INTEGER); result = ModuloOperation.ModuloByAnyBooleanValue(flow); break; default: result = Comparison.RightAbstractBooleanCompare(OutSet, operation, TypeConversion.ToBoolean(leftOperand)); if (result != null) { break; } result = ArithmeticOperation.RightAbstractBooleanArithmetic(flow, operation); if (result != null) { SetWarning("Object cannot be converted to integer by arithmetic operation", AnalysisWarningCause.OBJECT_CONVERTED_TO_INTEGER); break; } base.VisitAnyBooleanValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { switch (operation) { case Operations.Identical: result = OutSet.CreateBool(false); break; case Operations.NotIdentical: result = OutSet.CreateBool(true); break; case Operations.Mod: result = ModuloOperation.ModuloByAnyBooleanValue(flow); break; default: result = Comparison.RightAbstractBooleanCompare(OutSet, operation, leftOperand); if (result != null) { break; } base.VisitAnyBooleanValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { switch (operation) { case Operations.Mod: result = ModuloOperation.ModuloByAnyBooleanValue(flow); break; default: result = Comparison.RightAbstractBooleanCompare(OutSet, operation, TypeConversion.ToBoolean(leftOperand)); if (result != null) { break; } result = ArithmeticOperation.RightAbstractBooleanArithmetic(flow, operation); if (result != null) { break; } base.VisitAnyBooleanValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { result = ArithmeticOperation.RightAbstractBooleanArithmetic(flow, operation, leftOperand); if (result != null) { return; } base.VisitAnyBooleanValue(value); }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { switch (operation) { case Operations.Mod: result = ModuloOperation.ModuloByAnyBooleanValue(flow); break; default: base.VisitAnyBooleanValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { switch (operation) { case Operations.Mod: // Ommitted warnings messages that objects cannot be converted to integers result = ModuloOperation.ModuloByAnyBooleanValue(flow); break; default: base.VisitAnyBooleanValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { switch (operation) { case Operations.Identical: result = OutSet.CreateBool(false); break; case Operations.NotIdentical: result = OutSet.CreateBool(true); break; default: base.VisitAnyBooleanValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { switch (operation) { case Operations.Equal: case Operations.NotEqual: case Operations.GreaterThanOrEqual: case Operations.LessThan: case Operations.Or: case Operations.Xor: result = value; break; case Operations.Add: case Operations.BitOr: case Operations.BitXor: result = TypeConversion.AnyBooleanToIntegerInterval(OutSet); break; case Operations.Sub: var booleanInterval = TypeConversion.AnyBooleanToIntegerInterval(OutSet); result = OutSet.CreateIntegerInterval(-booleanInterval.End, -booleanInterval.Start); break; case Operations.Mul: result = OutSet.CreateInt(0); break; case Operations.Div: SetWarning("Possible division by zero (converted from boolean false)", AnalysisWarningCause.DIVISION_BY_ZERO); // Division or modulo by false returns false boolean value result = OutSet.AnyValue; break; case Operations.Mod: result = ModuloOperation.ModuloByAnyBooleanValue(flow); break; default: base.VisitAnyBooleanValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { switch (operation) { case Operations.Identical: result = OutSet.CreateBool(false); break; case Operations.NotIdentical: result = OutSet.CreateBool(true); break; default: result = Comparison.RightAbstractBooleanCompare(OutSet, operation, TypeConversion.ToBoolean(leftOperand.Value)); if (result != null) { break; } result = BitwiseOperation.Bitwise(OutSet, operation); if (result != null) { break; } int integerValue; double floatValue; bool isInteger; TypeConversion.TryConvertToNumber(leftOperand.Value, true, out integerValue, out floatValue, out isInteger); result = isInteger ? ArithmeticOperation.RightAbstractBooleanArithmetic(flow, operation, integerValue) : ArithmeticOperation.RightAbstractBooleanArithmetic(flow, operation, floatValue); if (result != null) { break; } base.VisitAnyBooleanValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { result = Comparison.RightAbstractBooleanCompare(OutSet, operation, TypeConversion.ToBoolean(leftOperand.Value)); if (result != null) { return; } result = ArithmeticOperation.RightAbstractBooleanArithmetic(flow, operation, leftOperand.Value); if (result != null) { return; } base.VisitAnyBooleanValue(value); }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { switch (operation) { case Operations.Mod: result = ModuloOperation.ModuloByAnyBooleanValue(flow); break; default: result = Comparison.AbstractCompare(OutSet, operation); if (result != null) { break; } base.VisitAnyBooleanValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { switch (operation) { case Operations.Identical: case Operations.NotIdentical: result = OutSet.AnyBooleanValue; break; default: result = ArithmeticOperation.RightAbstractBooleanArithmetic(flow, operation, TypeConversion.ToInteger(leftOperand.Value)); if (result != null) { break; } base.VisitAnyBooleanValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { switch (operation) { case Operations.Identical: result = OutSet.CreateBool(false); break; case Operations.NotIdentical: result = OutSet.CreateBool(true); break; default: result = Comparison.AbstractCompare(OutSet, operation); if (result != null) { break; } base.VisitAnyBooleanValue(value); break; } }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { result = null; abstractResult = OutSet.AnyStringValue; }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { isNotConvertibleToInteger = false; base.VisitAnyBooleanValue(value); }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { booleans.Add(value); }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { booleanFound(); }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { anyBooleanVisitor.SetLeftOperand(value); visitor = anyBooleanVisitor; }
/// <inheritdoc /> public override void VisitAnyBooleanValue(AnyBooleanValue value) { result = value; }