Source code for jawa.attributes.inner_classes

import io
from struct import pack
from itertools import repeat
from collections import namedtuple
from jawa.attribute import Attribute


InnerClass = namedtuple('InnerClass', [
    'inner_class_info_index',
    'outer_class_info_index',
    'inner_name_index',
    'inner_class_access_flags'
])


[docs]class InnerClassesAttribute(Attribute): ADDED_IN = '1.1.0' MINIMUM_CLASS_VERSION = (45, 3) def __init__(self, table, name_index): super().__init__( table, name_index or table.cf.constants.create_utf8( 'InnerClasses' ).index ) self.inner_classes = []
[docs] def unpack(self, info): for _ in repeat(None, info.u2()): self.inner_classes.append(InnerClass(*info.unpack('>HHHH')))
[docs] def pack(self): with io.BytesIO() as out: out.write(pack('>H', len(self.inner_classes))) for inner_class in self.inner_classes: out.write(pack('>HHHH', *inner_class)) return out.getvalue()