def parse(cls, bitstream, abc, constants): minfo = abc.methods.value_at(bitstream.read(U32)) stack_depth_max = bitstream.read(U32) local_count = bitstream.read(U32) init_scope_depth = bitstream.read(U32) scope_depth_max = bitstream.read(U32) code = CodeAssembler.parse(bitstream, abc, constants, local_count) code.max_stack_depth = stack_depth_max code.max_scope_depth = scope_depth_max - init_scope_depth exceptions = [Exception.parse(bitstream, abc, constants) for i in xrange(bitstream.read(U32))] traits = [parse_trait(bitstream, abc, constants) for i in xrange(bitstream.read(U32))] return cls(minfo, code, traits, exceptions)
def parse(cls, bitstream, abc, constants): name = constants.multiname.value_at(bitstream.read(U32)) super_name = constants.multiname.value_at(bitstream.read(U32)) bitstream.seek(4, os.SEEK_CUR) FlagProtectedNS = bitstream.read(Bit) FlagIsInterface = bitstream.read(Bit) FlagIsFinal = bitstream.read(Bit) FlagIsSealed = bitstream.read(Bit) protectedNs = None if FlagProtectedNS: protectedNs = constants.namespace.value_at(bitstream.read(U32)) interfaces = [constants.multiname.value_at(bitstream.read(U32)) for i in xrange(bitstream.read(U32))] iinit = abc.methods.value_at(bitstream.read(U32)) traits = [parse_trait(bitstream, abc, constants) for i in xrange(bitstream.read(U32))] return cls(name, iinit, interfaces, FlagIsInterface, FlagIsFinal, FlagIsSealed, super_name, traits, protectedNs)
def parse(cls, bitstream, abc, constants): init = abc.methods.value_at(bitstream.read(U32)) traits = [parse_trait(bitstream, abc, constants) for i in xrange(bitstream.read(U32))] return cls(init, traits)