メモリー・ブロックは多くの場合、 文字の連なり(character strings)を表します。 文字の連なりをメモリーに保存する方法については、 String representations を参照してください。 他の連なり処理ワード(string-processing words)については、 Displaying characters and strings を参照してください。
これらのワードのいくつかは、 アドレス単位ブロック(address unit blocks)で機能します。 その場合、
文字の連なり(character strings)を扱う際には通常、 ワードの前に CHARS
を挿入する必要があります。
ほとんどのワードは文字ブロック(character blocks)で機能し、 文字アライメント・アドレス(char-aligned
address)を期待します。
重複するメモリー領域間で文字達をコピーする場合は、 move
を使用します。 cmove
と cmove>
は、 適切に実装された move
よりも遅くなる傾向があります。
move
( c-from c-to ucount – ) core “move”
c-from アドレスにある ucount 個のcharの内容を c-to アドレスにコピーします。 move
は、 2 つの領域が重なっている場合でも正しく機能します。
cmove
( c-from c-to u – ) string “c-move”
データ空間で c-from アドレスから ucount 個のcharの内容を c-to アドレスにコピーします。コピーは、 1
char
ずつコピーしながら下位アドレスから上位アドレス方向へ進めます。 つまり、 重複領域の場合、 c-to <=
c-from であれば安全です。
cmove>
( c-from c-to u – ) string “c-move-up”
データ空間で c-from アドレスから ucount 個のcharの内容を c-to アドレスにコピーします。 コピーは、 1
char
ずつコピーし上位アドレスから下位アドレス方向に進みます。 つまり、 重複領域の場合、 c-to >=
c-from であれば安全です。
fill
( c-addr u c – ) core “fill”
c を c-addr から u 個char単位で格納します。
erase
( addr u – ) core-ext “erase”
addr から始まる u aus のすべてのビットをクリアします。
blank
( c-addr u – ) string “blank”
スペース文字を c-addr アドレスから u 個char単位で格納します。
insert
( string length buffer size – ) gforth-0.7 “insert”
バッファーの先頭に文字列を挿入します。 残りのバイトは後ろにずらされます(訳注: sizeを超えた分は捨てられます)。
delete
( buffer size u – ) gforth-0.7 “delete”
最初の u バイトをバッファーから削除し、 その分前にずらして、 残りの最後のバイトを空白(0x20)で埋めます。
compare
( c-addr1 u1 c-addr2 u2 – n ) string “compare”
連なり(string)内のバイトの値に基づいて、 2 つの連なり(strings)を(英語の)辞書順(lexicographically)に比較します(つまり、 英大文字と小文字が区別され、 ロケール固有の照合順序は無視されます)。 2つが等しい場合、 n は 0 です。 最初の連なり(string)が小さい場合、 n は -1 です。 最初の連なり(string)が大きい場合、 n は 1 です。
pad
( – c-addr ) core-ext “pad”
c-addr は、 一時的なデータ・ストレージとして使用できる一時領域のアドレスです。 少なくとも 84 文字分の空間が使用可能です。