use of org.osate.aadl2.BooleanLiteral in project osate2 by osate.
the class ResoluteInterface method addParams.
private void addParams(FnCallExpr call, List<PropertyExpression> params) {
for (PropertyExpression p : params) {
if (p instanceof RealLiteral) {
RealExpr realval = ResoluteFactory.eINSTANCE.createRealExpr();
realval.setVal((RealLiteral) p);
call.getArgs().add(realval);
} else if (p instanceof IntegerLiteral) {
IntExpr intval = ResoluteFactory.eINSTANCE.createIntExpr();
intval.setVal((IntegerLiteral) p);
call.getArgs().add(intval);
} else if (p instanceof StringLiteral) {
StringExpr stringval = ResoluteFactory.eINSTANCE.createStringExpr();
stringval.setVal((StringLiteral) p);
call.getArgs().add(stringval);
} else if (p instanceof BooleanLiteral) {
BoolExpr boolval = ResoluteFactory.eINSTANCE.createBoolExpr();
boolval.setVal((BooleanLiteral) p);
call.getArgs().add(boolval);
} else if (p instanceof InstanceReferenceValue) {
Expr ref = createInstanceObjectReference(((InstanceReferenceValue) p).getReferencedInstanceObject());
call.getArgs().add(ref);
}
}
}
use of org.osate.aadl2.BooleanLiteral in project osate2 by osate.
the class ResoluteInterface method executeResoluteFunctionOnce.
/**
* invokes Resolute claim function on targetComponent or targetElement if not null.
* instanceroot is used to initialize the Resolute evaluation context.
* targetComponent is the evaluation context
* targetElement is the model element within the component instance or null.
* parameterObjects is a list of additional parameters of types RealLiteral, IntegerLiteral, StringLiteral, BooleanLiteral
* parameterObjects can be null or an empty list.
* The return value is an Issue object with subissues for the list of issues returned in the Resolute ClaimResult.
* If the proof fails then the top Issue is set to FAIL, if successful it is set to SUCCESS
*/
public EObject executeResoluteFunctionOnce(EObject fundef, final ComponentInstance targetComponent, final InstanceObject targetElement, List<PropertyExpression> parameterObjects) {
FunctionDefinition fd = (FunctionDefinition) fundef;
initializeResoluteContext(targetComponent.getSystemInstance());
EvaluationContext context = new EvaluationContext(targetComponent, sets, featToConnsMap);
// check for claim function
FnCallExpr fcncall = createWrapperFunctionCall(fd, targetElement, parameterObjects);
if (fcncall != null) {
// if (fcncall.getFn().getBody() instanceof ClaimBody) {
// using com.rockwellcollins.atc.resolute.analysis.results.ClaimResult
ResoluteProver prover = new ResoluteProver(context) {
@Override
protected ResoluteEvaluator createResoluteEvaluator() {
return new ResoluteEvaluator(context, varStack.peek()) {
@Override
public ResoluteValue caseThisExpr(ThisExpr object) {
// We prepare a thisexpr with either the component instance as context object or a single reference to a model element
// See createWrapperFunctionCall
NamedElement curr = context.getThisInstance();
if (object.getSub() != null) {
curr = object.getSub().getBase();
}
return new NamedElementValue(curr);
}
};
}
};
try {
ResoluteResult res = prover.doSwitch(fcncall);
return doResoluteResults(res);
} catch (ResoluteFailException e) {
return ResultUtil.createFailureResult(e.getMessage(), targetElement);
}
// } else {
// // computational function
// ResoluteEvaluator engine = new ResoluteEvaluator(context, null) {
// @Override
// public ResoluteValue caseThisExpr(ThisExpr object) {
// // We prepare a thisexpr with either the component instance as context object or a single reference to a model element
// // See createWrapperFunctionCall
// NamedElement curr = context.getThisInstance();
// if (object.getSub() != null) {
// curr = object.getSub().getBase();
// }
// return new NamedElementValue(curr);
// }
// };
// Object res = engine.doSwitch(fcncall);
// return null;
// }
} else {
return ResultUtil.createErrorDiagnostic("Could not find Resolute Function " + fd.getName(), fd);
}
}
use of org.osate.aadl2.BooleanLiteral in project osate2 by osate.
the class BoolExprImpl method basicSetVal.
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetVal(BooleanLiteral newVal, NotificationChain msgs) {
BooleanLiteral oldVal = val;
val = newVal;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ResolutePackage.BOOL_EXPR__VAL, oldVal, newVal);
if (msgs == null)
msgs = notification;
else
msgs.add(notification);
}
return msgs;
}
use of org.osate.aadl2.BooleanLiteral in project osate2 by osate.
the class DeploymentProperties method getPreemptiveScheduler.
public static Optional<Boolean> getPreemptiveScheduler(NamedElement lookupContext, Optional<Mode> mode) {
Property property = getPreemptiveScheduler_Property(lookupContext);
try {
PropertyExpression value = CodeGenUtil.lookupProperty(property, lookupContext, mode);
PropertyExpression resolved = CodeGenUtil.resolveNamedValue(value, lookupContext, mode);
return Optional.of(((BooleanLiteral) resolved).getValue());
} catch (PropertyNotPresentException e) {
return Optional.empty();
}
}
use of org.osate.aadl2.BooleanLiteral in project osate2 by osate.
the class DeploymentProperties method getRuntimeProtectionSupport.
public static Optional<Boolean> getRuntimeProtectionSupport(NamedElement lookupContext, Optional<Mode> mode) {
Property property = getRuntimeProtectionSupport_Property(lookupContext);
try {
PropertyExpression value = CodeGenUtil.lookupProperty(property, lookupContext, mode);
PropertyExpression resolved = CodeGenUtil.resolveNamedValue(value, lookupContext, mode);
return Optional.of(((BooleanLiteral) resolved).getValue());
} catch (PropertyNotPresentException e) {
return Optional.empty();
}
}
Aggregations