Source code for jawa.attributes.line_number_table

from struct import pack
from collections import namedtuple

from jawa.attribute import Attribute


line_number_entry = namedtuple('line_number_entry', 'start_pc line_number')


[docs]class LineNumberTableAttribute(Attribute): ADDED_IN = '1.0.2' MINIMUM_CLASS_VERSION = (45, 3) def __init__(self, table, name_index=None): super(LineNumberTableAttribute, self).__init__( table, name_index or table.cf.constants.create_utf8( 'LineNumberTable' ).index ) self.line_no = []
[docs] def unpack(self, info): length = info.u2() table = info.unpack('>{0}H'.format(length * 2)) self.line_no = [ line_number_entry(*x) for x in zip(*[iter(table)] * 2) ]
[docs] def pack(self): return pack( '>H{0}H'.format(len(self.line_no) * 2), len(self.line_no), *sum(self.line_no, ()) )
def __repr__(self): return '<LineNumberTableAttribute({0!r})>'.format(self.line_no)