R6RS:翻訳:Standard Libraries:2.2 General operations

R6RS:翻訳:Standard Libraries:2.2 General operations

2.2 一般的な操作

[syntax] (endianness <endianness symbol>)

<endianness symbol> の名前はエンディアンを表すシンボルでなければならない。実装系は最低でも big と little をサポートしなければならないが、その他のエンディアンシンボルをサポートしてもかまわない。 (endianness <endianness symbol>) を評価すると <endianness symbol> という名前のシンボルになる。バイトベクタ上の操作を行う手続きのひとつは常にエンディアンを引き数として受け取り、その引き数はこれらのシンボルのうちのひとつでなければならない。実装系でサポートされているエンディアンシンボル以外のものを <endianness symbol> に指定するのは構文違反である。

: 実装者は big や little 意外にも広く受け入れられたエンディアンシンボルを受け付けるべきである。

: <endianness symbol> ではその名前にだけ意味がある。

[procedure] (native-endianness)

実装系の推奨するエンディアンに対応するエンディアンシンボルを返す(ふつうは下層のマシンアーキテクチャのそれである)。これは、 big や little 以外も含む任意の <endianness symbol> である。

[procedure] (bytevector? obj)

obj がバイトベクタであれば #t を返し、そうでなければ #f を返す。

[procedure] (make-bytevector k)

[procedure] (make-bytevector k fill)

k バイトのバイトベクタを新たに割り当てて返す。

fill 引き数が指定されていない場合には、戻り値のバイトベクタの初期内容物は未規定である。

fill 引き数が指定されている場合、バイトベクタのバイト列の初期値を指定する {-128, ..., 255} の範囲の正確な整数オブジェクトでなければならない。 fill が正の数である場合にはオクテットと解釈され、負の数の場合にはバイトと解釈される。

[procedure] (bytevector-length bytevector)

bytevector のバイト数を正確な整数オブジェクトとして返す。

[procedure] (bytevector=? bytevector1 bytevector2)

bytevector1bytevector2 が等しい、すなわち、長さが同一であり、有効な添え字についてバイト列が等しい場合に #t を返す。それ以外の場合には #f を返す。

[procedure] (bytevector-fill! bytevector fill)

fill 引き数は make-bytevector 手続きのものと同じものを表す。 bytevector-fill! 手続きは fillbytevector の各要素に格納し、未規定値を返す。 vector-fill! の類似手続きである。

[procedure] (bytevector-copy! source source-start target target-start k)

sourcetarget はバイトベクタでなければならず、 source-starttarget-startk は非負の正確な整数で次の条件を満たすものでなければならない。

 0 ≤ source-startsource-start + kl_{source}
 0 ≤ target-starttarget-target + kl_{source}

ここで、l_{source} は source の長さであり、 l_{target} は target の長さである。

bytevector-copy! 手続きは source の添え字 source-start, ..., source-start + k - 1 のバイト列を targettarget-index から始まる添え字位置に複写する。

この手続きは sourcetarget のメモリ領域が重なっていても動作しなければならない。つまり、複写後の対象領域のバイト列は複写前の複写元領域のバイト列と等しくなければならない。

この手続きは未規定値を返す。

(let ((b (u8-list->bytevector ’(1 2 3 4 5 6 7 8))))
  (bytevector-copy! b 0 b 3 4)
  (bytevector->u8-list b))         ⇒ (1 2 3 1 2 3 4 8)

[procedure] (bytevector-copy bytevector)

bytevector の複製を新たに割り当てて返す。


Last modified : 2013/01/22 10:04:43 UTC