/** * Creates a deep clone of this {@link ASetMultipleBind} 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 ASetMultipleBind} node */ public ASetMultipleBind clone(Map<INode,INode> oldToNewMap) { ASetMultipleBind node = new ASetMultipleBind( _location, cloneList(_plist, oldToNewMap), cloneNode(_set, oldToNewMap) ); oldToNewMap.put(this, node); return node; }
/** * Returns a deep clone of this {@link ASetMultipleBind} node. * @return a deep clone of this {@link ASetMultipleBind} node */ public ASetMultipleBind clone() { return new ASetMultipleBind( _location, cloneList(_plist), cloneNode(_set) ); }
public static ASetMultipleBind newASetMultipleBind(List<PPattern> plist, PExp readExpression) { ASetMultipleBind result = new ASetMultipleBind(); result.setLocation(plist.get(0).getLocation()); result.setPlist(plist); result.setSet(readExpression); return result; }
/** * Create a multiple set bind with a varargs list of pattern variables, like a,b,c in set S. This is used by several * obligations. */ protected PMultipleBind getMultipleSetBind(PExp setExp, ILexNameToken... patternNames) { ASetMultipleBind setBind = new ASetMultipleBind(); List<PPattern> patternList = new Vector<PPattern>(); for (ILexNameToken patternName : patternNames) { AIdentifierPattern pattern = new AIdentifierPattern(); pattern.setName(patternName.clone()); patternList.add(pattern); } setBind.setPlist(patternList); setBind.setSet(setExp.clone()); return setBind; }
PPattern p2 = makePattern(m2); ASetMultipleBind setBind = new ASetMultipleBind(); if (mapExp instanceof AMapCompMapExp)