diff options
Diffstat (limited to 'html/076stream.mu.html')
-rw-r--r-- | html/076stream.mu.html | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/html/076stream.mu.html b/html/076stream.mu.html index feaa978b..91861d7d 100644 --- a/html/076stream.mu.html +++ b/html/076stream.mu.html @@ -13,7 +13,6 @@ pre { white-space: pre-wrap; font-family: monospace; color: #eeeeee; background-color: #080808; } body { font-family: monospace; color: #eeeeee; background-color: #080808; } * { font-size: 1.05em; } -.muControl { color: #c0a020; } .muRecipe { color: #ff8700; } .muData { color: #ffff00; } .Comment { color: #9090ff; } @@ -30,49 +29,46 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; } </head> <body> <pre id='vimCodeElement'> -<span class="Comment"># new type to help incrementally read strings</span> +<span class="Comment"># new type to help incrementally read texts (arrays of characters)</span> <span class="muData">container</span> stream [ index:number data:address:array:character ] -<span class="muRecipe">recipe</span> new-stream [ +<span class="muRecipe">recipe</span> new-stream s:address:array:character<span class="muRecipe"> -> </span>result:address:stream [ <span class="Constant">local-scope</span> - result:address:stream<span class="Special"> <- </span>new <span class="Constant">stream:type</span> + <span class="Constant">load-ingredients</span> + result<span class="Special"> <- </span>new <span class="Constant">stream:type</span> i:address:number<span class="Special"> <- </span>get-address *result, <span class="Constant">index:offset</span> *i<span class="Special"> <- </span>copy <span class="Constant">0</span> d:address:address:array:character<span class="Special"> <- </span>get-address *result, <span class="Constant">data:offset</span> - *d<span class="Special"> <- </span><span class="Constant">next-ingredient</span> - <span class="muControl">reply</span> result + *d<span class="Special"> <- </span>copy s ] -<span class="muRecipe">recipe</span> rewind-stream [ +<span class="muRecipe">recipe</span> rewind-stream in:address:stream<span class="muRecipe"> -> </span>in:address:stream [ <span class="Constant">local-scope</span> - in:address:stream<span class="Special"> <- </span><span class="Constant">next-ingredient</span> + <span class="Constant">load-ingredients</span> x:address:number<span class="Special"> <- </span>get-address *in, <span class="Constant">index:offset</span> *x<span class="Special"> <- </span>copy <span class="Constant">0</span> - <span class="muControl">reply</span> in/same-as-arg:<span class="Constant">0</span> ] -<span class="muRecipe">recipe</span> read-line [ +<span class="muRecipe">recipe</span> read-line in:address:stream<span class="muRecipe"> -> </span>result:address:array:character, in:address:stream [ <span class="Constant">local-scope</span> - in:address:stream<span class="Special"> <- </span><span class="Constant">next-ingredient</span> + <span class="Constant">load-ingredients</span> idx:address:number<span class="Special"> <- </span>get-address *in, <span class="Constant">index:offset</span> s:address:array:character<span class="Special"> <- </span>get *in, <span class="Constant">data:offset</span> next-idx:number<span class="Special"> <- </span>find-next s, <span class="Constant">10/newline</span>, *idx - result:address:array:character<span class="Special"> <- </span>string-copy s, *idx, next-idx + result<span class="Special"> <- </span>copy s, *idx, next-idx *idx<span class="Special"> <- </span>add next-idx, <span class="Constant">1</span> <span class="Comment"># skip newline</span> - <span class="muControl">reply</span> result ] -<span class="muRecipe">recipe</span> end-of-stream? [ +<span class="muRecipe">recipe</span> end-of-stream? in:address:stream<span class="muRecipe"> -> </span>result:boolean [ <span class="Constant">local-scope</span> - in:address:stream<span class="Special"> <- </span><span class="Constant">next-ingredient</span> + <span class="Constant">load-ingredients</span> idx:number<span class="Special"> <- </span>get *in, <span class="Constant">index:offset</span> s:address:array:character<span class="Special"> <- </span>get *in, <span class="Constant">data:offset</span> len:number<span class="Special"> <- </span>length *s - result:boolean<span class="Special"> <- </span>greater-or-equal idx, len - <span class="muControl">reply</span> result + result<span class="Special"> <- </span>greater-or-equal idx, len ] </pre> </body> |