diff options
Diffstat (limited to '066stream.mu')
-rw-r--r-- | 066stream.mu | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/066stream.mu b/066stream.mu index 36c311c1..606d77e7 100644 --- a/066stream.mu +++ b/066stream.mu @@ -7,38 +7,38 @@ container stream [ recipe new-stream [ local-scope result:address:stream <- new stream:type - i:address:number <- get-address result:address:stream/lookup, index:offset - i:address:number/lookup <- copy 0 - d:address:address:array:character <- get-address result:address:stream/lookup, data:offset - d:address:address:array:character/lookup <- next-ingredient - reply result:address:stream + i:address:number <- get-address *result, index:offset + *i <- copy 0 + d:address:address:array:character <- get-address *result, data:offset + *d <- next-ingredient + reply result ] recipe rewind-stream [ local-scope in:address:stream <- next-ingredient - x:address:number <- get-address in:address:stream/lookup, index:offset - x:address:number/lookup <- copy 0 - reply in:address:stream/same-as-arg:0 + x:address:number <- get-address *in, index:offset + *x <- copy 0 + reply in/same-as-arg:0 ] recipe read-line [ local-scope in:address:stream <- next-ingredient - idx:address:number <- get-address in:address:stream/lookup, index:offset - s:address:array:character <- get in:address:stream/lookup, data:offset - next-idx:number <- find-next s:address:array:character, 10/newline, idx:address:number/lookup - result:address:array:character <- string-copy s:address:array:character, idx:address:number/lookup, next-idx:number - idx:address:number/lookup <- add next-idx:number, 1 # skip newline - reply result:address:array:character + idx:address:number <- get-address *in, index:offset + s:address:array:character <- get *in, data:offset + next-idx:number <- find-next s, 10/newline, *idx + result:address:array:character <- string-copy s, *idx, next-idx + *idx <- add next-idx, 1 # skip newline + reply result ] recipe end-of-stream? [ local-scope in:address:stream <- next-ingredient - idx:number <- get in:address:stream/lookup, index:offset - s:address:array:character <- get in:address:stream/lookup, data:offset - len:number <- length s:address:array:character/lookup - result:boolean <- greater-or-equal idx:number, len:number - reply result:boolean + idx:address:number <- get *in, index:offset + s:address:array:character <- get *in, data:offset + len:number <- length *s + result:boolean <- greater-or-equal idx, len + reply result ] |