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;
}