From 7cf666f33314bee73a2affe60ba43e38f14cd95e Mon Sep 17 00:00:00 2001 From: retropikzel Date: Sat, 3 May 2025 08:06:51 +0300 Subject: [PATCH] Updated documentation --- README.md | 55 +++++++++++++++++++++++++++++++++------------------ foreign/c.sld | 18 ++++++++++------- 2 files changed, 47 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 741220e..94945af 100644 --- a/README.md +++ b/README.md @@ -396,36 +396,53 @@ If K is not a valid index of c-bytevector the behaviour is undefined. Returns the byte at index k of c-bytevector. -(**c-bytevector-sint-set!** _bytevector_ _k_ _endianness_ _size_)
-(**c-bytevector-sint-ref** _bytevector_ _k_ _endianness_ _size_)
-(**c-bytevector-uint-set!** _bytevector_ _k_ _endianness_ _size_)
(**c-bytevector-uint-ref** _bytevector_ _k_ _endianness_ _size_) +(**c-bytevector-sint-ref** _bytevector_ _k_ _endianness_ _size_)
+(**c-bytevector-uint-set!** _bytevector_ _k_ _n_ _endianness_ _size_)
+(**c-bytevector-sint-set!** _bytevector_ _k_ _n_ _endianness_ _size_)
-Size must be a positive exact integer object. If K , . . . , k + -size − 1 is not valid indices of bytevector the behavior is unspecified. +Size must be a positive exact integer object. If _k_,...,_k_ + _size_ − 1 is +not valid indices of c-bytevector the behavior is unspecified. The c-bytevector-uint-ref procedure retrieves the exact integer object corresponding to the unsigned representation of size _size_ and specified by _endianness_ at indices _k_,...,_k_ + _size_ − 1. The c-bytevector-sint-ref procedure retrieves the exact integer object -corresponding to the two’s-complement representation of size size and -specified by endianness at indices k , . . . , k + size − 1. For -c-bytevector-uint-set!, n must be an exact integer object in the interval -{0, . . . , 256size − 1}. +corresponding to the two’s-complement representation of size _size_ and +specified by _endianness_ at indices _k_,...,_k_ + _size_ − 1. For +c-bytevector-uint-set!, _n_ must be an exact integer object in the interval +{0,...,256^_size_ − 1}. The c-bytevector-uint-set! procedure stores the unsigned representation of -size size and specified by endianness into bytevector at indices -k , . . . , k + size − 1. +size _size_ and specified by _endianness_ into c-bytevector at indices +_k_,...,_k_ + size − 1. + +The . . . -set! procedures return unspecified values. + +Examples: + + (define cbv (make-c-bytevector (c-type-size 'int))) + (c-bytevector-sint-set! cbv 0 100 (native-endianness) (c-type-size 'int)) + (c-bytevector-sint-ref cbv 0 (native-endianness) (c-type-size 'int)) + > 100 + + +(**c-bytevector-u16-ref** _bytevector_ _k_ _endianness_) +(**c-bytevector-s16-ref** _bytevector_ _k_ _endianness_) +(**c-bytevector-u16-native-ref** _bytevector_ _k_ _endianness_) +(**c-bytevector-s16-native-ref** _bytevector_ _k_ _endianness_) +(**c-bytevector-u16-set!** _bytevector_ _k_ _n_ _endianness_) +(**c-bytevector-s16-set!** _bytevector_ _k_ _n_ _endianness_) +(**c-bytevector-u16-native-set!** _bytevector_ _k_ _n_ _endianness_) +(**c-bytevector-s16-native-set!** _bytevector_ _k_ _n_ _endianness_) + +_K_ must be a valid index of _c-bytevector_ ; so must _k_ + 1. For +c-bytevector-u16-set! and c-bytevector-u16-native-set!, _n_ must be an exact +integer object in the interval {0,...,216 − 1}. For c-bytevector-s16-set! and +c-bytevector-s16-native-set!, _n_ must be an exact integer object in the +interval {−215,...,215 − 1}. -(**c-bytevector-s16-set!**) -(**c-bytevector-s16-ref**) -(**c-bytevector-s16-native-set!**) -(**c-bytevector-s16-native-ref**) -(**c-bytevector-u16-set!**) -(**c-bytevector-u16-ref**) -(**c-bytevector-u16-native-set!**) -(**c-bytevector-u16-native-ref**) (**c-bytevector-s32-set!**) (**c-bytevector-s32-ref**) (**c-bytevector-s32-native-set!**) diff --git a/foreign/c.sld b/foreign/c.sld index cc72b68..4641960 100644 --- a/foreign/c.sld +++ b/foreign/c.sld @@ -237,18 +237,22 @@ c-bytevector-s8-ref ;; TODO c-bytevector->u8-list ;; TODO u8-list->c-bytevector - c-bytevector-sint-set! - c-bytevector-sint-ref - c-bytevector-uint-set! c-bytevector-uint-ref - c-bytevector-s16-set! + c-bytevector-sint-ref + c-bytevector-sint-set! + c-bytevector-uint-set! + ;; TODO bytevector->uint-list + ;; TODO bytevector->sint-list + ;; TODO uint-list->bytevector + ;; TODO sint-list->bytevector + c-bytevector-u16-ref c-bytevector-s16-ref - c-bytevector-s16-native-set! + c-bytevector-u16-native-ref c-bytevector-s16-native-ref c-bytevector-u16-set! - c-bytevector-u16-ref + c-bytevector-s16-set! c-bytevector-u16-native-set! - c-bytevector-u16-native-ref + c-bytevector-s16-native-set! c-bytevector-s32-set! c-bytevector-s32-ref c-bytevector-s32-native-set!