2 USING: alien io-internals kernel kernel-internals libc
5 : buffer-append ( buffer buffer -- )
6 #! Append first buffer to second buffer.
7 2dup buffer-end <alien> over buffer-ptr <alien>
8 rot buffer-fill memcpy >r buffer-fill r> n>buffer ;
10 : buffer-set ( string buffer -- )
11 2dup buffer-ptr string>memory
12 >r length r> buffer-reset ;
14 : string>buffer ( string -- buffer )
15 dup length <buffer> tuck buffer-set ;
24 [ "hello world" "" ] [
25 "hello world" string>buffer
33 "hello world" string>buffer
34 5 over buffer-first-n swap buffer-free
38 "hello world" string>buffer
39 [ buffer-length ] keep buffer-free
43 "hello" 1024 <buffer> [ buffer-set ] keep
45 dup buffer-contents swap buffer-free
50 1 over buffer-consume [ buffer-pop ] keep buffer-free
54 " world" string>buffer
57 [ buffer-contents ] keep buffer-free swap buffer-free