コード例 #1
0
ファイル: abc_.py プロジェクト: haibocheng/fusion
    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
ファイル: abc_.py プロジェクト: the-one-/fusion
    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
ファイル: abc_.py プロジェクト: haibocheng/fusion
    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
ファイル: abc_.py プロジェクト: the-one-/fusion
    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
ファイル: abc_.py プロジェクト: haibocheng/fusion
 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
ファイル: abc_.py プロジェクト: the-one-/fusion
 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)