Next: , Up: bytevectors 8   [Index]


27.2.1 Introduction

Library organisation

The functions are split in a high level library, (vicare containers bytevectors s8) and (vicare containers bytevectors u8), and a low level one, (vicare containers bytevectors s8low) and (vicare containers bytevectors u8low). The main difference between the two layers is that the high level library makes heavy usage of macros to implement the bytevector views, which allow accessing subvectors using a friendly syntax.

All the functions in the low level library are bound to identifiers starting with %; for example: bytevector-u8-prefix? is a high level macro, %bytevector-u8-prefix? is its low level function homologous.

Direction of iteration

The library accesses the bytes of a vector in left–to–right or right–to–left order depending on the convenience of the algorithm.

Handling side effects

Care must be taken when using functions with side effects. One reason for this is that some of the supported Scheme implementations may collapse equal datum bytevectors in the source code to the same bytevector in the program. Mutating such a bytevector in a point of the program, will make the change visible to other points in the program.