public SClassDeclIR findClass(List<SClassDeclIR> classes, String moduleName) { for (SClassDeclIR classDecl : classes) { if (classDecl.getName().equals(moduleName)) { return classDecl; } } return null; }
public void removeClass(String name) { SClassDeclIR classToRemove = null; for (SClassDeclIR clazz : classes) { if (clazz.getName().equals(name)) { classToRemove = clazz; break; } } if (classToRemove != null) { classes.remove(classToRemove); } }
public ADefaultClassDeclIR findCopy(ADefaultClassDeclIR clazz) { for(SClassDeclIR c : classCopies) { if(c instanceof ADefaultClassDeclIR && c.getName().equals(clazz.getName())) { return (ADefaultClassDeclIR) c; } } return null; }
public ClassToInterfaceTrans(TransAssistantIR assist) { this.isFullyAbstract = new HashMap<>(); this.interfaces = new HashMap<>(); for (SClassDeclIR c : assist.getInfo().getClasses()) { INode vdmNode = AssistantBase.getVdmNode(c); // AVoid system as CPU classes if (vdmNode instanceof AClassClassDefinition) { SClassDefinition vdmClazz = (SClassDefinition) vdmNode; isFullyAbstract.put(c.getName(), assist.getInfo().getDeclAssistant().isFullyAbstract(vdmClazz, assist.getInfo())); interfaces.put(c.getName(), convertToInterface(c)); } else { isFullyAbstract.put(c.getName(), false); } // This transformation is only helpful for IR classes that originate // from VDM classes. So we simply ignore classes that originate from // modules since SL does not support inheritance anyway. } }
private SClassDeclIR getThreadClass(List<ATokenNameIR> superNames, SClassDeclIR classCg) { if (superNames.isEmpty() || superNames.get(0).getName().equals(concPrefixes.vdmThreadClassName())) { return classCg; } else { SClassDeclIR superClass = null; for (SClassDeclIR c : info.getClasses()) { if (c.getName().equals(superNames.get(0).getName())) { superClass = c; break; } } return getThreadClass(superClass.getSuperNames(), superClass); } } }
for (SClassDeclIR currentClass : classes) if (currentClass.getName().equals(definingClassName))
@Override public void defaultInSClassDeclIR(SClassDeclIR node) throws AnalysisException { if(Settings.dialect != Dialect.VDM_SL) { return; } init(); super.defaultInSClassDeclIR(node); String name = node.getName(); if(mustRename(name)) { node.setName(consNewName(name)); } }
private AInterfaceDeclIR convertToInterface(SClassDeclIR c) { List<AFieldDeclIR> clonedFields = new LinkedList<>(); for (AFieldDeclIR f : c.getFields()) { clonedFields.add(f.clone()); } List<AMethodDeclIR> clonedMethods = new LinkedList<>(); for (AMethodDeclIR m : c.getMethods()) { if (!m.getIsConstructor() && !(m.getTag() instanceof IRGeneratedTag)) { clonedMethods.add(m.clone()); } } AInterfaceDeclIR inter = new AInterfaceDeclIR(); inter.setFields(clonedFields); inter.setMetaData(c.getMetaData()); inter.setMethodSignatures(clonedMethods); inter.setName(c.getName()); inter.setPackage(c.getPackage()); inter.setSourceNode(c.getSourceNode()); inter.setTag(c.getTag()); for (ATokenNameIR n : c.getSuperNames()) { inter.getExtension().add(n.clone()); } return inter; }
public void genJavaSourceFile(File root, GeneratedModule generatedModule) { File moduleOutputDir = JavaCodeGenUtil.getModuleOutputDir(root, this, generatedModule); if (moduleOutputDir == null) { return; } if (generatedModule != null && generatedModule.canBeGenerated() && !generatedModule.hasMergeErrors()) { String javaFileName; org.overture.codegen.ir.INode irNode = generatedModule.getIrNode(); if(irNode instanceof SClassDeclIR) { // The class may have been renamed, hence different form the original name SClassDeclIR clazz = (SClassDeclIR) irNode; javaFileName = clazz.getName(); } else { javaFileName = generatedModule.getName(); } javaFileName += IJavaConstants.JAVA_FILE_EXTENSION; emitCode(moduleOutputDir, javaFileName, generatedModule.getContent()); } }
public String formatTypeName(INode node, ATypeNameIR typeName) { // Type names are also used for quotes, which do not have a defining class. if (typeName.getDefiningClass() != null && !getJavaSettings().genRecsAsInnerClasses()) { String typeNameStr = ""; if (JavaCodeGenUtil.isValidJavaPackage(getJavaSettings().getJavaRootPackage())) { typeNameStr += getJavaSettings().getJavaRootPackage() + "."; } typeNameStr += typeName.getDefiningClass() + TYPE_DECL_PACKAGE_SUFFIX + "."; typeNameStr += typeName.getName(); return typeNameStr; } SClassDeclIR classDef = node.getAncestor(SClassDeclIR.class); String definingClass = typeName.getDefiningClass() != null && classDef != null && !classDef.getName().equals(typeName.getDefiningClass()) ? typeName.getDefiningClass() + "." : ""; return definingClass + typeName.getName(); }