/** * Copyright (c) 2015 by Brainwy Software Ltda. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ package org.python.pydev.core; public class UnpackInfo { private int unpackTuple = -1; private boolean unpackFor = false; private boolean unpackBackwards; public UnpackInfo() { } public UnpackInfo(boolean unpackFor, int unpackTuple) { this(unpackFor, unpackTuple, false); } /** * @param unpackBackwards means something as a[-1], a[-2] (but the unpackTuple is still positive) */ public UnpackInfo(boolean unpackFor, int unpackTuple, boolean unpackBackwards) { this.unpackFor = unpackFor; this.unpackTuple = unpackTuple; this.unpackBackwards = unpackBackwards; } public void addUnpackFor() { unpackFor = true; } public void addUnpackTuple(int i) { unpackTuple = i; } /** * @param length is the size of the element to be unpacked (we need the size if * the user specified something as a[-1], so, it has to be calculated). * @return the index to be used to unpack or -1 if it should not be unpacked. */ public int getUnpackTuple(int length) { if (unpackTuple >= length) { return -1; } if (unpackBackwards) { return length - unpackTuple; } return unpackTuple; } public UnpackInfo cloneWithUnpackTuple(int newUnpackTuple) { UnpackInfo ret = new UnpackInfo(); ret.unpackFor = this.unpackFor; ret.unpackTuple = newUnpackTuple; return ret; } public boolean getUnpackFor() { return this.unpackFor; } public boolean hasUnpackInfo() { return this.unpackTuple >= 0; } }