Hi,

On Thursday 01 April 2004 10:50, Leopold Toetsch wrote:
> Jens Rieks <[EMAIL PROTECTED]> wrote:
> > has the attached code any errors?
>
> It's too short to have any errors ;)
>
> > jens
> >
> > --Boundary-00=_Cx2aABtKF1Y0Bud--
>
> <<eof>>
Oh, the attachment got stripped :-/

> leo
jens


.sub _main
    .local pmc stream
    .local pmc coro

    #load_bytecode "coro.imc"
    newclass P0, "Stream::Coroutine"
    
    find_type I0, "Stream::Coroutine"
    new stream, I0

    newsub coro, .Coroutine, _coro
    stream."source"( coro )
    
    # dump the stream
    stream."print"()

    end
.end

.sub _coro
    .param pmc source
    .local int i
    .local string str
    
    i = 0
LOOP:
    if i >= 10 goto END
    
    str = i
    concat str, "\n"

    print "coro:"
    print i
    print "\n"
        
    .pcc_begin_yield
    .return str
    .pcc_end_yield
    
    inc i
    branch LOOP
END:
    print "coro end..\n"
    source."close"()
    .pcc_begin_return
    .pcc_end_return
.end

## coro.imc ##
.namespace ["Stream::Coroutine"]

.sub print method
    .local string str
    .local int i
    
LOOP:
    i = self."connected"()
    unless i goto END
    str = self."read"()
    i = self."connected"()
    unless i goto END
    print "read:"
    print str
    branch LOOP
END:
    print "[stream end]\n"
    .pcc_begin_return
    .pcc_end_return
.end

.sub connected method
    .local pmc temp
    
    prophash temp, self
    exists I0, temp["source_coro"]
    .pcc_begin_return
    .return I0
    .pcc_end_return
.end

.sub source method
    .param pmc coro
    
    setprop self, "source_coro", coro

    .pcc_begin_return
    .pcc_end_return
.end

.sub close method
    delprop self, "source_coro"
    .pcc_begin_return
    .pcc_end_return
.end

.sub read method
    .local pmc coro
    .local string str

    getprop coro, "source_coro", self
    str = coro( self )

    .pcc_begin_return
    .return str
    .pcc_end_return
.end

Reply via email to