\ strbuf 9/26/97 gwj create strbuf 2048 constant strbuf-size \ set up data structures & constants variable strbuf> variable strbuf.nxt> create (strbuffer) strbuf-size 0allot (strbuffer) strbuf-size + constant strbuf.end> \ initialize the buffer : init.strbuf ( -- ) (strbuffer) dup strbuf> ! strbuf.nxt> ! ; \ addess at which to put a new string : strbuf ( -- addr ) strbuf> @ ; \ will a new string fit in remain? : strbuf.fit? ( n -- f ) strbuf.nxt> @ + strbuf.end> swap > ; : ?strbuf.reset.nxt ( size -- ) strbuf.fit? 0= if (strbuffer) strbuf.nxt> ! then ; : +strbuf ( size -- ) dup ?strbuf.reset.nxt strbuf.nxt> @ tuck + strbuf.nxt> ! strbuf> ! ; \ make a counted string : strpck ( addr cnt -- $ ) dup +strbuf tuck strbuf char+ swap move strbuf c! strbuf ; init.strbuf \ init the strbuf