Java源码示例:com.android.dx.cf.code.LineNumberList

示例1
/**
 * 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;
}
 
示例2
/**
 * Parses a {@code LineNumberTable} attribute.
 */
private Attribute lineNumberTable(DirectClassFile cf, int offset,
        int length, ParseObserver observer) {
    if (length < 2) {
        return throwSeverelyTruncated();
    }

    ByteArray bytes = cf.getBytes();
    int count = bytes.getUnsignedShort(offset); // line_number_table_length

    if (observer != null) {
        observer.parsed(bytes, offset, 2,
                        "line_number_table_length: " + Hex.u2(count));
    }

    offset += 2;
    length -= 2;

    if (length != (count * 4)) {
        throwBadLength((count * 4) + 2);
    }

    LineNumberList list = new LineNumberList(count);

    for (int i = 0; i < count; i++) {
        int startPc = bytes.getUnsignedShort(offset);
        int lineNumber = bytes.getUnsignedShort(offset + 2);
        list.set(i, startPc, lineNumber);
        if (observer != null) {
            observer.parsed(bytes, offset, 4,
                            Hex.u2(startPc) + " " + lineNumber);
        }
        offset += 4;
    }

    list.setImmutable();
    return new AttLineNumberTable(list);
}
 
示例3
/**
 * 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;
}
 
示例4
/**
 * Parses a {@code LineNumberTable} attribute.
 */
private Attribute lineNumberTable(DirectClassFile cf, int offset,
        int length, ParseObserver observer) {
    if (length < 2) {
        return throwSeverelyTruncated();
    }

    ByteArray bytes = cf.getBytes();
    int count = bytes.getUnsignedShort(offset); // line_number_table_length

    if (observer != null) {
        observer.parsed(bytes, offset, 2,
                        "line_number_table_length: " + Hex.u2(count));
    }

    offset += 2;
    length -= 2;

    if (length != (count * 4)) {
        throwBadLength((count * 4) + 2);
    }

    LineNumberList list = new LineNumberList(count);

    for (int i = 0; i < count; i++) {
        int startPc = bytes.getUnsignedShort(offset);
        int lineNumber = bytes.getUnsignedShort(offset + 2);
        list.set(i, startPc, lineNumber);
        if (observer != null) {
            observer.parsed(bytes, offset, 4,
                            Hex.u2(startPc) + " " + lineNumber);
        }
        offset += 4;
    }

    list.setImmutable();
    return new AttLineNumberTable(list);
}
 
示例5
/**
 * 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;
}
 
示例6
/**
 * Parses a {@code LineNumberTable} attribute.
 */
private Attribute lineNumberTable(DirectClassFile cf, int offset,
        int length, ParseObserver observer) {
    if (length < 2) {
        return throwSeverelyTruncated();
    }

    ByteArray bytes = cf.getBytes();
    int count = bytes.getUnsignedShort(offset); // line_number_table_length

    if (observer != null) {
        observer.parsed(bytes, offset, 2,
                        "line_number_table_length: " + Hex.u2(count));
    }

    offset += 2;
    length -= 2;

    if (length != (count * 4)) {
        throwBadLength((count * 4) + 2);
    }

    LineNumberList list = new LineNumberList(count);

    for (int i = 0; i < count; i++) {
        int startPc = bytes.getUnsignedShort(offset);
        int lineNumber = bytes.getUnsignedShort(offset + 2);
        list.set(i, startPc, lineNumber);
        if (observer != null) {
            observer.parsed(bytes, offset, 4,
                            Hex.u2(startPc) + " " + lineNumber);
        }
        offset += 4;
    }

    list.setImmutable();
    return new AttLineNumberTable(list);
}
 
示例7
/**
 * 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;
}
 
示例8
/**
 * Parses a {@code LineNumberTable} attribute.
 */
private Attribute lineNumberTable(DirectClassFile cf, int offset,
        int length, ParseObserver observer) {
    if (length < 2) {
        return throwSeverelyTruncated();
    }

    ByteArray bytes = cf.getBytes();
    int count = bytes.getUnsignedShort(offset); // line_number_table_length

    if (observer != null) {
        observer.parsed(bytes, offset, 2,
                        "line_number_table_length: " + Hex.u2(count));
    }

    offset += 2;
    length -= 2;

    if (length != (count * 4)) {
        throwBadLength((count * 4) + 2);
    }

    LineNumberList list = new LineNumberList(count);

    for (int i = 0; i < count; i++) {
        int startPc = bytes.getUnsignedShort(offset);
        int lineNumber = bytes.getUnsignedShort(offset + 2);
        list.set(i, startPc, lineNumber);
        if (observer != null) {
            observer.parsed(bytes, offset, 4,
                            Hex.u2(startPc) + " " + lineNumber);
        }
        offset += 4;
    }

    list.setImmutable();
    return new AttLineNumberTable(list);
}
 
示例9
/**
 * Gets the list of "line number" entries associated with this instance.
 *
 * @return {@code non-null;} the list
 */
public LineNumberList getLineNumbers() {
    return lineNumbers;
}
 
示例10
/**
 * Gets the list of "line number" entries associated with this instance.
 *
 * @return {@code non-null;} the list
 */
public LineNumberList getLineNumbers() {
    return lineNumbers;
}
 
示例11
/**
 * Gets the list of "line number" entries associated with this instance.
 *
 * @return {@code non-null;} the list
 */
public LineNumberList getLineNumbers() {
    return lineNumbers;
}
 
示例12
/**
 * Gets the list of "line number" entries associated with this instance.
 *
 * @return {@code non-null;} the list
 */
public LineNumberList getLineNumbers() {
    return lineNumbers;
}