/** * Called by the {@link AMapMapTypeIR} node from {@link AMapMapTypeIR#apply(IAnalysis)}. * @param node the calling {@link AMapMapTypeIR} node */ public void caseAMapMapTypeIR(AMapMapTypeIR node, Q question) throws AnalysisException { _visitedNodes.add(node); inAMapMapTypeIR(node, question); if(node.getNamedInvType() != null && !_visitedNodes.contains(node.getNamedInvType())) { node.getNamedInvType().apply(this, question); } if(node.getFrom() != null && !_visitedNodes.contains(node.getFrom())) { node.getFrom().apply(this, question); } if(node.getTo() != null && !_visitedNodes.contains(node.getTo())) { node.getTo().apply(this, question); } outAMapMapTypeIR(node, question); }
/** * Returns a deep clone of this {@link AMapMapTypeIR} node. * @return a deep clone of this {@link AMapMapTypeIR} node */ public AMapMapTypeIR clone() { return new AMapMapTypeIR( _sourceNode, _tag, _metaData, _optional, cloneNode(_namedInvType), _empty, _injective, cloneNode(_from), cloneNode(_to) ); }
AbstractTypeInfo domInfo = findTypeInfo(mapType.getFrom()); AbstractTypeInfo rngInfo = findTypeInfo(mapType.getTo()); boolean injective = BooleanUtils.isTrue(mapType.getInjective());
public STypeIR handleMapType(SMapTypeBase node, IRInfo question, boolean isInjective) throws AnalysisException { PType from = node.getFrom(); PType to = node.getTo(); boolean empty = node.getEmpty(); STypeIR fromCg = from.apply(question.getTypeVisitor(), question); STypeIR toCg = to.apply(question.getTypeVisitor(), question); AMapMapTypeIR mapType = new AMapMapTypeIR(); mapType.setFrom(fromCg); mapType.setTo(toCg); mapType.setEmpty(empty); mapType.setInjective(isInjective); return mapType; }
/** * Called by the {@link AMapMapTypeIR} node from {@link AMapMapTypeIR#apply(IAnalysis)}. * @param node the calling {@link AMapMapTypeIR} node */ public void caseAMapMapTypeIR(AMapMapTypeIR node) throws AnalysisException { _visitedNodes.add(node); inAMapMapTypeIR(node); if(node.getNamedInvType() != null && !_visitedNodes.contains(node.getNamedInvType())) { node.getNamedInvType().apply(this); } if(node.getFrom() != null && !_visitedNodes.contains(node.getFrom())) { node.getFrom().apply(this); } if(node.getTo() != null && !_visitedNodes.contains(node.getTo())) { node.getTo().apply(this); } outAMapMapTypeIR(node); }
/** * Creates a deep clone of this {@link AMapMapTypeIR} node while putting all * old node-new node relations in the map {@code oldToNewMap}. * @param oldToNewMap the map filled with the old node-new node relation * @return a deep clone of this {@link AMapMapTypeIR} node */ public AMapMapTypeIR clone(Map<INode,INode> oldToNewMap) { AMapMapTypeIR node = new AMapMapTypeIR( _sourceNode, _tag, _metaData, _optional, cloneNode(_namedInvType, oldToNewMap), _empty, _injective, cloneNode(_from, oldToNewMap), cloneNode(_to, oldToNewMap) ); oldToNewMap.put(this, node); return node; }
/** * Called by the {@link AMapMapTypeIR} node from {@link AMapMapTypeIR#apply(IIsaAnalysis)}. * @param node the calling {@link AMapMapTypeIR} node */ public void caseAMapMapTypeIR(AMapMapTypeIR node) throws AnalysisException { _visitedNodes.add(node); inAMapMapTypeIR(node); if(node.getNamedInvType() != null && !_visitedNodes.contains(node.getNamedInvType())) { node.getNamedInvType().apply(this); } if(node.getFrom() != null && !_visitedNodes.contains(node.getFrom())) { node.getFrom().apply(this); } if(node.getTo() != null && !_visitedNodes.contains(node.getTo())) { node.getTo().apply(this); } outAMapMapTypeIR(node); }
/** * Called by the {@link AMapMapTypeIR} node from {@link AMapMapTypeIR#apply(IAnalysis)}. * @param node the calling {@link AMapMapTypeIR} node */ public A caseAMapMapTypeIR(AMapMapTypeIR node, Q question) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node, question); mergeReturns(retVal,inAMapMapTypeIR(node, question)); if(node.getNamedInvType() != null && !_visitedNodes.contains(node.getNamedInvType())) { mergeReturns(retVal,node.getNamedInvType().apply(this, question)); } if(node.getFrom() != null && !_visitedNodes.contains(node.getFrom())) { mergeReturns(retVal,node.getFrom().apply(this, question)); } if(node.getTo() != null && !_visitedNodes.contains(node.getTo())) { mergeReturns(retVal,node.getTo().apply(this, question)); } mergeReturns(retVal,outAMapMapTypeIR(node, question)); return retVal; }
/** * Called by the {@link AMapMapTypeIR} node from {@link AMapMapTypeIR#apply(IAnalysis)}. * @param node the calling {@link AMapMapTypeIR} node */ public A caseAMapMapTypeIR(AMapMapTypeIR node) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node); mergeReturns(retVal,inAMapMapTypeIR(node)); if(node.getNamedInvType() != null && !_visitedNodes.contains(node.getNamedInvType())) { mergeReturns(retVal,node.getNamedInvType().apply(this)); } if(node.getFrom() != null && !_visitedNodes.contains(node.getFrom())) { mergeReturns(retVal,node.getFrom().apply(this)); } if(node.getTo() != null && !_visitedNodes.contains(node.getTo())) { mergeReturns(retVal,node.getTo().apply(this)); } mergeReturns(retVal,outAMapMapTypeIR(node)); return retVal; }