use of com.rockwellcollins.atc.agree.agree.Arg in project AMASE by loonwerks.
the class SetEqImpl method basicSetLhs_set.
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetLhs_set(Arg newLhs_set, NotificationChain msgs) {
Arg oldLhs_set = lhs_set;
lhs_set = newLhs_set;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SafetyPackage.SET_EQ__LHS_SET, oldLhs_set, newLhs_set);
if (msgs == null)
msgs = notification;
else
msgs.add(notification);
}
return msgs;
}
use of com.rockwellcollins.atc.agree.agree.Arg in project AMASE by loonwerks.
the class RangeEqImpl method basicSetLhs_range.
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetLhs_range(Arg newLhs_range, NotificationChain msgs) {
Arg oldLhs_range = lhs_range;
lhs_range = newLhs_range;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SafetyPackage.RANGE_EQ__LHS_RANGE, oldLhs_range, newLhs_range);
if (msgs == null)
msgs = notification;
else
msgs.add(notification);
}
return msgs;
}
use of com.rockwellcollins.atc.agree.agree.Arg in project VERDICT by ge-high-assurance.
the class Agree2Vdm method addNodeDefToTypeDeclarations.
private void addNodeDefToTypeDeclarations(NodeDef nodeDef, HashSet<String> dataTypeDecl, HashSet<String> nodeDecl, Model model) {
Node vdmNode = new Node();
// String agreeNodeName = nodeDef.getName();
String agreeNodeName = nodeDef.getQualifiedName();
vdmNode.setName(agreeNodeName);
// SETTING NODE INPUT PARAMETERS
// get agree node's args and set them as input parameter
EList<Arg> nodeInpArgs = nodeDef.getArgs();
for (Arg arg : nodeInpArgs) {
NodeParameter nodeParameter = new NodeParameter();
nodeParameter.setName(arg.getName());
// get types of each arg and define those types if needed -- will be done in getVdmTypeFromAgreeType()
nodeParameter.setDataType(getVdmTypeFromAgreeType(arg.getType(), dataTypeDecl, model));
vdmNode.getInputParameter().add(nodeParameter);
}
// SETTING NODE OUTPUT PARAMETERS
EList<Arg> nodeReturnArgs = nodeDef.getRets();
// get agree node's rets and set them as output parameter
for (Arg arg : nodeReturnArgs) {
NodeParameter nodeParameter = new NodeParameter();
nodeParameter.setName(arg.getName());
// get types of each arg and define those types if needed -- will be done in getVdmTypeFromAgreeType()
nodeParameter.setDataType(getVdmTypeFromAgreeType(arg.getType(), dataTypeDecl, model));
vdmNode.getOutputParameter().add(nodeParameter);
}
// SETTING NODE BODY
NodeBody vdmNodeBody = new NodeBody();
// get agree node's body
NodeBodyExpr agreeNodeBody = nodeDef.getNodeBody();
EList<NodeStmt> agreeNodeStmts = agreeNodeBody.getStmts();
for (NodeStmt agreeNodeStmt : agreeNodeStmts) {
if (agreeNodeStmt instanceof NodeEqImpl) {
NodeEq agreeNodeEq = (NodeEq) agreeNodeStmt;
// get all LHS identifiers in the statement and add it to the vdm node equation LHS
NodeEquation vdmNodeEquation = new NodeEquation();
EList<Arg> agreeLHSArgs = agreeNodeEq.getLhs();
// this type is just a list of strings
NodeEquationLHS vdmNodeEquationLHS = new NodeEquationLHS();
for (Arg agreeLHSArg : agreeLHSArgs) {
vdmNodeEquationLHS.getIdentifier().add(agreeLHSArg.getName());
}
vdmNodeEquation.setLhs(vdmNodeEquationLHS);
// get the RHS i.e.expr of the agree NodeEq and set it as the vdm node equation's RHS
vdmNodeEquation.setRhs(getVdmExpressionFromAgreeExpression(agreeNodeEq.getExpr(), dataTypeDecl, nodeDecl, model));
vdmNodeBody.getEquation().add(vdmNodeEquation);
} else {
System.out.println("Node contains non-eq type statements");
}
}
vdmNode.setBody(vdmNodeBody);
vdmNode.setIsFunction(false);
vdmNode.setIsImported(false);
if (!nodeDecl.contains(agreeNodeName)) {
nodeDecl.add(agreeNodeName);
LustreProgram lustreProgram = model.getDataflowCode();
lustreProgram.getNodeDeclaration().add(vdmNode);
model.setDataflowCode(lustreProgram);
}
}
use of com.rockwellcollins.atc.agree.agree.Arg in project AGREE by loonwerks.
the class AgreeASTBuilder method getEquationVars.
private List<AgreeVar> getEquationVars(EList<SpecStatement> specs, ComponentInstance compInst) {
List<AgreeVar> agreeVars = new ArrayList<>();
for (SpecStatement spec : specs) {
if (spec instanceof EqStatement) {
EList<Arg> args = ((EqStatement) spec).getLhs();
List<VarDecl> vars = agreeVarsFromArgs(args, compInst);
for (VarDecl var : vars) {
agreeVars.add((AgreeVar) var);
}
} else if (spec instanceof PropertyStatement) {
agreeVars.add(new AgreeVar(((PropertyStatement) spec).getName(), NamedType.BOOL, spec, compInst, null));
}
}
return agreeVars;
}
use of com.rockwellcollins.atc.agree.agree.Arg in project AGREE by loonwerks.
the class AgreeASTBuilder method getEquationStatements.
private GatheredVariablesAndConstraints getEquationStatements(EList<SpecStatement> specs, Map<String, jkind.lustre.Expr> rewriteMap) {
GatheredVariablesAndConstraints result = new GatheredVariablesAndConstraints();
for (SpecStatement spec : specs) {
if (spec instanceof EqStatement) {
EqStatement eq = (EqStatement) spec;
EList<Arg> lhs = eq.getLhs();
if (eq.getExpr() != null) {
Expr expr = doSwitch(eq.getExpr()).accept(new SubstitutionVisitor(rewriteMap));
if (lhs.size() != 1) {
List<Expr> ids = new ArrayList<>();
for (Arg arg : lhs) {
ids.add(new IdExpr(arg.getName()));
}
TupleExpr tuple = new TupleExpr(ids);
expr = new BinaryExpr(tuple, BinaryOp.EQUAL, expr);
} else {
expr = new BinaryExpr(new IdExpr(lhs.get(0).getName()), BinaryOp.EQUAL, expr);
}
result.assertions.add(new AgreeStatement("", expr, spec));
}
result.obligations.addAll(getConstraintsFromArgs(lhs, eq));
}
}
return result;
}
Aggregations