use of verdict.vdm.vdm_model.ComponentType in project VERDICT by ge-high-assurance.
the class VDMInstrumentor method getBlockID.
protected BlockImpl getBlockID(String componentID) {
BlockImpl blockImpl = null;
for (ComponentImpl cmpImpl : vdm_model.getComponentImpl()) {
if (cmpImpl.getBlockImpl() != null) {
blockImpl = cmpImpl.getBlockImpl();
for (ComponentInstance cmpInstance : blockImpl.getSubcomponent()) {
ComponentImpl impl = cmpInstance.getImplementation();
ComponentType enumType = null;
if (impl != null) {
enumType = impl.getType();
} else {
enumType = cmpInstance.getSpecification();
}
if (componentID.equalsIgnoreCase(enumType.getId())) {
return blockImpl;
}
}
}
}
return blockImpl;
}
use of verdict.vdm.vdm_model.ComponentType in project VERDICT by ge-high-assurance.
the class VDMInstrumentor method retrieve_cmp_impl.
// protected ComponentImpl retrieve_cmp_impl(ComponentType componentType) {
// ComponentImpl componentImpl = null;
// for (ComponentImpl cImpl : vdm_model.getComponentImpl()) {
// ComponentType cmpType = cImpl.getType();
// if (cmpType.getId().equalsIgnoreCase(componentType.getId())) {
// componentImpl = cImpl;
// }
// }
// return componentImpl;
// }
protected ComponentImpl retrieve_cmp_impl(String componentID) {
ComponentImpl componentImpl = null;
BlockImpl blockImpl = null;
for (ComponentImpl cImpl : vdm_model.getComponentImpl()) {
if (cImpl.getBlockImpl() != null) {
blockImpl = cImpl.getBlockImpl();
for (ComponentInstance cmpInstance : blockImpl.getSubcomponent()) {
ComponentImpl impl = cmpInstance.getImplementation();
ComponentType enumType = null;
if (impl != null) {
enumType = impl.getType();
} else {
enumType = cmpInstance.getSpecification();
}
if (componentID.equals(enumType.getId())) {
componentImpl = cImpl;
return cImpl;
}
}
}
}
return componentImpl;
}
use of verdict.vdm.vdm_model.ComponentType in project VERDICT by ge-high-assurance.
the class VDM2Lustre method visit.
public void visit(Model vdm_model, LustreProgram program) {
// A) Copying Type Declaration + amend name '_Impl
for (TypeDeclaration typeDec : vdm_model.getTypeDeclaration()) {
visit(typeDec, program);
}
// Copying over Constant Declarations
for (ConstantDeclaration constDec : program.getConstantDeclaration()) {
String constName = constDec.getName();
constName = constName.replace(".", "_dot_");
constName = constName.replace("::", "_double_colon_");
constDec.setName(constName);
visit(constDec);
}
// Event Ports
for (ComponentType componentType : vdm_model.getComponentType()) {
// Collect Node with no output
Port mPort = markPort(componentType);
if (mPort == null) {
// Event Ports to Data Ports;
for (Port port : componentType.getPort()) {
// Update event_ports
visit(port, program);
}
} else {
System.out.println("Ignoring Node:" + componentType.getName());
System.out.println("Ignoring Port:" + mPort.getName());
this.marked_types.add(componentType);
this.marked_ports.add(mPort);
}
}
// B) Component Type
Node cmp_node = null;
Node impl_node = null;
String inst_cmp = "(.+)_Inst_.*";
Pattern inst_pattern = Pattern.compile(inst_cmp);
for (ComponentType componentType : vdm_model.getComponentType()) {
boolean is_declared = false;
if (!this.marked_types.contains(componentType)) {
for (ComponentImpl componentImpl : vdm_model.getComponentImpl()) {
if (componentType == componentImpl.getType()) {
impl_node = visit(componentType, true);
visit(componentImpl, impl_node);
is_declared = true;
break;
}
}
if (is_declared) {
cmp_node = visit(componentType, false);
Matcher m = inst_pattern.matcher(cmp_node.getName());
if (m.matches() == false) {
program.getNodeDeclaration().add(cmp_node);
}
program.getNodeDeclaration().add(impl_node);
} else {
cmp_node = visit(componentType, false);
program.getNodeDeclaration().add(cmp_node);
}
}
}
// Copying over Node Declarations.
for (Node node_dec : program.getNodeDeclaration()) {
visit(node_dec, program);
}
// Copy over Contract Spec.
for (Contract contract : program.getContractDeclaration()) {
visit(contract, program);
}
}
use of verdict.vdm.vdm_model.ComponentType in project VERDICT by ge-high-assurance.
the class VDM2Lustre method retrieve_block.
protected BlockImpl retrieve_block(ComponentImpl compImpl) {
BlockImpl blockImpl = null;
String cmpID = compImpl.getType().getId();
for (ComponentImpl cmpImpl : vdm_model.getComponentImpl()) {
if (cmpImpl.getBlockImpl() != null) {
blockImpl = cmpImpl.getBlockImpl();
for (ComponentInstance cmpInstance : blockImpl.getSubcomponent()) {
ComponentImpl impl = cmpInstance.getImplementation();
ComponentType enumType = null;
if (impl != null) {
enumType = impl.getType();
} else {
enumType = cmpInstance.getSpecification();
}
if (cmpID.equals(enumType.getId())) {
return blockImpl;
}
}
}
}
return blockImpl;
}
use of verdict.vdm.vdm_model.ComponentType in project VERDICT by ge-high-assurance.
the class VDM2Lustre method ignoreConnection.
// Ignore Connection or Marked Ports.
private boolean ignoreConnection(Connection con) {
ConnectionEnd srcConnection = con.getSource();
ComponentType srcType = null;
ConnectionEnd destConnection = con.getDestination();
ComponentType destType = null;
Port srcPort = srcConnection.getComponentPort();
if (srcPort == null) {
CompInstancePort compPort = srcConnection.getSubcomponentPort();
// System.out.println(">>>>>>>>" + con.getName());
srcPort = compPort.getPort();
ComponentInstance srcCompInstance = compPort.getSubcomponent();
srcType = srcCompInstance.getSpecification();
if (srcType == null) {
ComponentImpl compImpl = srcCompInstance.getImplementation();
srcType = compImpl.getType();
}
}
Port destPort = destConnection.getComponentPort();
if (destPort == null) {
CompInstancePort compPort = destConnection.getSubcomponentPort();
destPort = compPort.getPort();
ComponentInstance destCompInstance = compPort.getSubcomponent();
destType = destCompInstance.getSpecification();
if (destType == null) {
ComponentImpl compImpl = destCompInstance.getImplementation();
destType = compImpl.getType();
}
}
if (this.marked_ports.contains(srcPort) || this.marked_ports.contains(destPort)) {
System.out.println("Ignore Port Connection:" + con.getName());
return true;
}
if (this.marked_types.contains(srcType) || this.marked_types.contains(destType)) {
System.out.println("Ignore Instance Connection:" + con.getName());
return true;
}
return false;
}
Aggregations