Package proguard.classfile.attribute
Class StructuredLineNumberInfo
- java.lang.Object
-
- proguard.classfile.attribute.LineNumberInfo
-
- proguard.classfile.attribute.StructuredLineNumberInfo
-
public class StructuredLineNumberInfo extends LineNumberInfo
Line number info with extra information for lines that came from a different source than the current method (e.g. inlined from a different method). Tracking this information is necessary for printing a correct mapping file.The structured line number info contains:
- Source string indicating the originating class/method of the line.
- Optional start/end line number indicating the original line numbers for a block of inlined instructions.
- A list of origins, indicating the transformations these lines underwent, e.g. multiple levels of inlining
- A block ID, that identifies a group of lines that belongs to a singular block.
Since these transformations operate on blocks of lines, and the mapping file identifies blocks rather than singular lines,
StructuredLineNumberInfoobjects are generated through aStructuredLineNumberInfo.Blockobject, which is a factory object that generatesStructuredLineNumberInfos with consistent block IDs.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classStructuredLineNumberInfo.BlockFactory forStructuredLineNumberInfoobjects.
-
Field Summary
-
Fields inherited from class proguard.classfile.attribute.LineNumberInfo
LINE_RANGE_NO_SOURCE, SIMPLE_LINE_NUMBER_BLOCK_ID, u2lineNumber, u2startPC
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description LineNumberInfoBlockgetBlock()StructuredLineNumberInfo.BlockgetBlock(LineOrigin... addedOrigins)intgetBlockId()Get the block ID which identifies related line numbers which form a single block in the mapping file.java.util.List<LineOrigin>getOrigin()Get a chronological list of manipulations that this line went through.java.lang.StringgetSource()Returns a description of the source of the line, if known, or null otherwise.intgetSourceLineEnd()intgetSourceLineStart()java.lang.StringgetSourceMethod()
-
-
-
Method Detail
-
getSourceMethod
public java.lang.String getSourceMethod()
- Overrides:
getSourceMethodin classLineNumberInfo
-
getSourceLineStart
public int getSourceLineStart()
- Overrides:
getSourceLineStartin classLineNumberInfo
-
getSourceLineEnd
public int getSourceLineEnd()
- Overrides:
getSourceLineEndin classLineNumberInfo
-
getBlockId
public int getBlockId()
Get the block ID which identifies related line numbers which form a single block in the mapping file.- Overrides:
getBlockIdin classLineNumberInfo
-
getOrigin
public java.util.List<LineOrigin> getOrigin()
Get a chronological list of manipulations that this line went through. True origin is the first element, followed by any subsequent manipulations (e.g. multiple levels of inlining, copying, etc.).- Overrides:
getOriginin classLineNumberInfo
-
getSource
public java.lang.String getSource()
Description copied from class:LineNumberInfoReturns a description of the source of the line, if known, or null otherwise. Standard line number entries don't contain information about their source; it is assumed to be the same source file.- Overrides:
getSourcein classLineNumberInfo
-
getBlock
public LineNumberInfoBlock getBlock()
- Overrides:
getBlockin classLineNumberInfo
-
getBlock
public StructuredLineNumberInfo.Block getBlock(LineOrigin... addedOrigins)
-
-