/** * Returns an instance which is the concatenation of the two given * instances. * * @param list1 {@code non-null;} first instance * @param list2 {@code non-null;} second instance * @return {@code non-null;} combined instance */ public static LineNumberList concat(LineNumberList list1, LineNumberList list2) { if (list1 == EMPTY) { // easy case return list2; } int sz1 = list1.size(); int sz2 = list2.size(); LineNumberList result = new LineNumberList(sz1 + sz2); for (int i = 0; i < sz1; i++) { result.set(i, list1.get(i)); } for (int i = 0; i < sz2; i++) { result.set(sz1 + i, list2.get(i)); } return result; }
/** * Gets the indicated item. * * @param n {@code >= 0;} which item * @return {@code null-ok;} the indicated item */ public Item get(int n) { return (Item) get0(n); }
/** * Sets the item at the given index. * * @param n {@code >= 0, < size();} which element * @param item {@code non-null;} the item */ public void set(int n, Item item) { if (item == null) { throw new NullPointerException("item == null"); } set0(n, item); }
LineNumberList list = new LineNumberList(count); list.set(i, startPc, lineNumber); if (observer != null) { observer.parsed(bytes, offset, 4, list.setImmutable(); return new AttLineNumberTable(list);
/** {@inheritDoc} */ @Override public int byteLength() { return 8 + 4 * lineNumbers.size(); }
/** * Returns a {@link SourcePosition} instance corresponding to the * given bytecode offset. * * @param offset {@code >= 0;} the bytecode offset * @return {@code non-null;} an appropriate instance */ public SourcePosition makeSourcePosistion(int offset) { return new SourcePosition(sourceFile, offset, lineNumbers.pcToLine(offset)); } }
/** * Constructs an instance. * * @param lineNumbers {@code non-null;} list of line number entries */ public AttLineNumberTable(LineNumberList lineNumbers) { super(ATTRIBUTE_NAME); try { if (lineNumbers.isMutable()) { throw new MutabilityException("lineNumbers.isMutable()"); } } catch (NullPointerException ex) { // Translate the exception. throw new NullPointerException("lineNumbers == null"); } this.lineNumbers = lineNumbers; }
lnt != null; lnt = (AttLineNumberTable) codeAttribs.findNext(lnt)) { lineNumbers = LineNumberList.concat(lineNumbers, lnt.getLineNumbers());
LineNumberList list = new LineNumberList(count); list.set(i, startPc, lineNumber); if (observer != null) { observer.parsed(bytes, offset, 4, list.setImmutable(); return new AttLineNumberTable(list);
/** {@inheritDoc} */ @Override public int byteLength() { return 8 + 4 * lineNumbers.size(); }
/** * Returns a {@link SourcePosition} instance corresponding to the * given bytecode offset. * * @param offset {@code >= 0;} the bytecode offset * @return {@code non-null;} an appropriate instance */ public SourcePosition makeSourcePosistion(int offset) { return new SourcePosition(sourceFile, offset, lineNumbers.pcToLine(offset)); } }
/** * Constructs an instance. * * @param lineNumbers {@code non-null;} list of line number entries */ public AttLineNumberTable(LineNumberList lineNumbers) { super(ATTRIBUTE_NAME); try { if (lineNumbers.isMutable()) { throw new MutabilityException("lineNumbers.isMutable()"); } } catch (NullPointerException ex) { // Translate the exception. throw new NullPointerException("lineNumbers == null"); } this.lineNumbers = lineNumbers; }
lnt != null; lnt = (AttLineNumberTable) codeAttribs.findNext(lnt)) { lineNumbers = LineNumberList.concat(lineNumbers, lnt.getLineNumbers());
/** * Returns an instance which is the concatenation of the two given * instances. * * @param list1 {@code non-null;} first instance * @param list2 {@code non-null;} second instance * @return {@code non-null;} combined instance */ public static LineNumberList concat(LineNumberList list1, LineNumberList list2) { if (list1 == EMPTY) { // easy case return list2; } int sz1 = list1.size(); int sz2 = list2.size(); LineNumberList result = new LineNumberList(sz1 + sz2); for (int i = 0; i < sz1; i++) { result.set(i, list1.get(i)); } for (int i = 0; i < sz2; i++) { result.set(sz1 + i, list2.get(i)); } return result; }
LineNumberList list = new LineNumberList(count); list.set(i, startPc, lineNumber); if (observer != null) { observer.parsed(bytes, offset, 4, list.setImmutable(); return new AttLineNumberTable(list);
/** * Sets the item at the given index. * * @param n {@code >= 0, < size();} which element * @param item {@code non-null;} the item */ public void set(int n, Item item) { if (item == null) { throw new NullPointerException("item == null"); } set0(n, item); }
/** {@inheritDoc} */ public int byteLength() { return 8 + 4 * lineNumbers.size(); }