Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
 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)
Пример #6
0
 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)