package fr.inria.diverse.iot2.iot2.aspects;
import fr.inria.diverse.iot2.iot2.iot2.BooleanBinaryExpression;
import fr.inria.diverse.iot2.iot2.iot2.BooleanBinaryOperator;
import fr.inria.diverse.iot2.iot2.iot2.BooleanValue;
import fr.inria.diverse.iot2.iot2.iot2.BooleanVariable;
import fr.inria.diverse.iot2.iot2.iot2.Value;
import fr.inria.diverse.k3.al.annotationprocessor.Aspect;
import fr.inria.diverse.k3.al.annotationprocessor.OverrideAspectMethod;
import fr.inria.diverse.iot2.iot2.aspects.ActivityExpressionAspect;
import fr.inria.diverse.iot2.iot2.aspects.BooleanBinaryActivityExpressionAspectBooleanBinaryExpressionAspectProperties;
import fr.inria.diverse.iot2.iot2.aspects.Context;
@Aspect(className = BooleanBinaryExpression.class)
@SuppressWarnings("all")
public class BooleanBinaryActivityExpressionAspect extends ActivityExpressionAspect {
@OverrideAspectMethod
public static void execute(final BooleanBinaryExpression _self, final Context c) {
fr.inria.diverse.iot2.iot2.aspects.BooleanBinaryActivityExpressionAspectBooleanBinaryExpressionAspectProperties _self_ = fr.inria.diverse.iot2.iot2.aspects.BooleanBinaryActivityExpressionAspectBooleanBinaryExpressionAspectContext.getSelf(_self);
if (_self instanceof fr.inria.diverse.iot2.iot2.iot2.BooleanBinaryExpression){
fr.inria.diverse.iot2.iot2.aspects.BooleanBinaryActivityExpressionAspect._privk3_execute(_self_, (fr.inria.diverse.iot2.iot2.iot2.BooleanBinaryExpression)_self,c);
} else if (_self instanceof fr.inria.diverse.iot2.iot2.iot2.Expression){
fr.inria.diverse.iot2.iot2.aspects.ActivityExpressionAspect.execute((fr.inria.diverse.iot2.iot2.iot2.Expression)_self,c);
} else { throw new IllegalArgumentException("Unhandled parameter types: " + java.util.Arrays.<Object>asList(_self).toString()); };
}
private static void super_execute(final BooleanBinaryExpression _self, final Context c) {
fr.inria.diverse.iot2.iot2.aspects.ActivityExpressionAspectExpressionAspectProperties _self_ = fr.inria.diverse.iot2.iot2.aspects.ActivityExpressionAspectExpressionAspectContext.getSelf(_self);
fr.inria.diverse.iot2.iot2.aspects.ActivityExpressionAspect._privk3_execute(_self_, _self,c);
}
protected static void _privk3_execute(final BooleanBinaryActivityExpressionAspectBooleanBinaryExpressionAspectProperties _self_, final BooleanBinaryExpression _self, final Context c) {
BooleanBinaryOperator _operator = _self.getOperator();
int _value = _operator.getValue();
boolean _equals = (_value == BooleanBinaryOperator.AND_VALUE);
if (_equals) {
BooleanVariable _assignee = _self.getAssignee();
Value _currentValue = _assignee.getCurrentValue();
boolean _and = false;
BooleanVariable _operand1 = _self.getOperand1();
Value _currentValue_1 = _operand1.getCurrentValue();
boolean _isValue = ((BooleanValue) _currentValue_1).isValue();
if (!_isValue) {
_and = false;
} else {
BooleanVariable _operand2 = _self.getOperand2();
Value _currentValue_2 = _operand2.getCurrentValue();
boolean _isValue_1 = ((BooleanValue) _currentValue_2).isValue();
_and = _isValue_1;
}
((BooleanValue) _currentValue).setValue(_and);
} else {
BooleanBinaryOperator _operator_1 = _self.getOperator();
int _value_1 = _operator_1.getValue();
boolean _equals_1 = (_value_1 == BooleanBinaryOperator.OR_VALUE);
if (_equals_1) {
BooleanVariable _assignee_1 = _self.getAssignee();
Value _currentValue_3 = _assignee_1.getCurrentValue();
boolean _or = false;
BooleanVariable _operand1_1 = _self.getOperand1();
Value _currentValue_4 = _operand1_1.getCurrentValue();
boolean _isValue_2 = ((BooleanValue) _currentValue_4).isValue();
if (_isValue_2) {
_or = true;
} else {
BooleanVariable _operand2_1 = _self.getOperand2();
Value _currentValue_5 = _operand2_1.getCurrentValue();
boolean _isValue_3 = ((BooleanValue) _currentValue_5).isValue();
_or = _isValue_3;
}
((BooleanValue) _currentValue_3).setValue(_or);
}
}
}
}