@Override public STypeIR getElementType(STypeIR type) { return ((SSetTypeIR) type).getSetOf(); } }));
public SSetTypeIR getSetTypeCloned(STypeIR typeCg) throws AnalysisException { if (typeCg instanceof SSetTypeIR) { SSetTypeIR setTypeCg = (SSetTypeIR) typeCg; return setTypeCg.clone(); } return null; }
private boolean isEmptyCollection(STypeIR type) { if (type instanceof SSeqTypeIR) { SSeqTypeIR seq = (SSeqTypeIR) type; return seq.getEmpty(); } else if (type instanceof SSetTypeIR) { SSetTypeIR set = (SSetTypeIR) type; return set.getEmpty(); } else if (type instanceof SMapTypeIR) { SMapTypeIR map = (SMapTypeIR) type; return map.getEmpty(); } return false; }
public Boolean isEmptySetSeq(SExpIR set) throws AnalysisException { if (set.getType() instanceof SSetTypeIR) { return ((SSetTypeIR) set.getType()).getEmpty(); } else if (set.getType() instanceof SSeqTypeIR) { return ((SSeqTypeIR) set.getType()).getEmpty(); } return false; }
public STypeIR findElementType(STypeIR type) { if (type instanceof SSetTypeIR) { SSetTypeIR setType = (SSetTypeIR) type; return setType.getSetOf(); } else if (type instanceof SSeqTypeIR) { SSeqTypeIR seqType = (SSeqTypeIR) type; return seqType.getSeqOf(); } log.error("Expected set or sequence type in findElementType. Got: " + type); return null; }
@Override public SExpIR consNextElementCall(AIdentifierVarExpIR setVar) throws AnalysisException { STypeIR elementType = transAssistant.getSetTypeCloned(setVar).getSetOf(); return transAssistant.consNextElementCall(transAssistant.consClassType(ITERATOR_TYPE), iteratorName, elementType, NEXT_ELEMENT_ITERATOR); } }
public String formatElementType(STypeIR type) throws AnalysisException { if (type instanceof SSetTypeIR) { SSetTypeIR setType = (SSetTypeIR) type; return format(setType.getSetOf()); } else if (type instanceof SSeqTypeIR) { SSeqTypeIR seqType = (SSeqTypeIR) type; return format(seqType.getSeqOf()); } else if (type instanceof AStringTypeIR) { return format(new ACharBasicTypeIR()); } else { String vdmNodeInfo = info.getLocationAssistant().consVdmNodeInfoStr(type); log.error("Expected set, seq or string type when trying to format element type. Got: " + type + ". " + vdmNodeInfo); return format(new AUnknownTypeIR()); } }