Next: Terminal output, Previous: Displaying characters and strings, Up: Other I/O [Contents][Index]
The following string library stores strings in ordinary variables, which then contain a pointer to a cell-counted string allocated from the heap. The string library originates from bigFORTH.
delete
buffer size u – gforth-string “delete”
deletes the first u bytes from a buffer and fills the rest at the end with blanks.
insert
string length buffer size – gforth-string “insert”
inserts a string at the front of a buffer. The remaining bytes are moved on.
$!
addr1 u $addr – gforth-string “string-store”
stores a newly allocated string buffer at an address, frees the previous buffer if necessary.
$@
$addr – addr2 u gforth-string “string-fetch”
returns the stored string.
$@len
$addr – u gforth-string “string-fetch-len”
returns the length of the stored string.
$!len
u $addr – gforth-string “string-store-len”
changes the length of the stored string. Therefore we must change the memory area and adjust address and count cell as well.
$+!len
u $addr – addr unknown “$+!len”
make room for u bytes at the end of the memory area referenced by $addr; addr is the address of the first of these bytes.
$del
addr off u – gforth-string “string-del”
deletes u bytes from a string with offset off.
$ins
addr1 u $addr off – gforth-string “string-ins”
inserts a string at offset off.
$+!
addr1 u $addr – gforth-string “string-plus-store”
appends a string to another.
c$+!
char $addr – gforth-string “c-string-plus-store”
append a character to a string.
$free
$addr – gforth-string “string-free”
free the string pointed to by addr, and set addr to 0
$init
$addr – unknown “$init”
store an empty string there, regardless of what was in before
$split
addr u char – addr1 u1 addr2 u2 gforth-string “string-split”
divides a string into two, with one char as separator (e.g. ’?’ for arguments in an HTML query)
$iter
.. $addr char xt – .. gforth-string “string-iter”
takes a string apart piece for piece, also with a character as separator. For each part a passed token will be called. With this you can take apart arguments – separated with ’&’ – at ease.
$over
addr u $addr off – unknown “$over”
overwrite string at offset off with addr u
$exec
xt addr – unknown “$exec”
execute xt while the standard output (TYPE, EMIT, and everything that uses them) is appended to the string variable addr.
$tmp
xt – addr u unknown “$tmp”
generate a temporary string from the output of a word
$.
addr – unknown “$.”
print a string, shortcut
$slurp
fid addr – unknown “$slurp”
slurp a file fid into a string addr2
$slurp-file
addr1 u1 addr2 – unknown “$slurp-file”
slurp a named file addr1 u1 into a string addr2
$[]
u $[]addr – addr’ unknown “$[]”
index into the string array and return the address at index u The array will be resized as needed
$[]!
addr u n $[]addr – unknown “$[]!”
store a string into an array at index n
$[]+!
addr u n $[]addr – unknown “$[]+!”
add a string to the string at index n
$[]@
n $[]addr – addr u unknown “$[]’'
fetch a string from array index n — return the zero string if empty, and don’t accidentally grow the array.
$[]#
addr – len unknown “$[]#”
return the number of elements in an array
$[]map
addr xt – unknown “$[]map”
execute xt for all elements of the string array addr. xt is ( addr u – ), getting one string at a time
$[]slurp
fid addr – unknown “$[]slurp”
slurp a file fid line by line into a string array addr
$[]slurp-file
addr u $addr – unknown “$[]slurp-file”
slurp a named file addr u line by line into a string array $addr
$[].
addr – unknown “$[].”
print all array entries
$[]free
addr – unknown “$[]free”
addr contains the address of a cell-counted string that contains the addresses of a number of cell-counted strings; $[]free frees these strings, frees the array, and sets addr to 0
$save
$addr – unknown “$save”
push string to dictionary for savesys
$[]save
addr – unknown “$[]save”
push string array to dictionary for savesys
$boot
$addr – unknown “$boot”
take string from dictionary to allocated memory. clean dictionary afterwards.
$[]boot
addr – unknown “$[]boot”
take string array from dictionary to allocated memory
$saved
addr – unknown “$saved”
$[]saved
addr – unknown “$[]saved”
$Variable
– unknown “$Variable”
A string variable which is preserved across savesystem
$[]Variable
– unknown “$[]Variable”
A string variable which is preserved across savesystem
Next: Terminal output, Previous: Displaying characters and strings, Up: Other I/O [Contents][Index]