Updated documentation

This commit is contained in:
retropikzel 2025-05-03 08:36:27 +03:00
parent 37c6d1433a
commit c1f7a3b918
2 changed files with 118 additions and 53 deletions

135
README.md
View File

@ -366,6 +366,14 @@ Calling from Scheme:
The passed c-bytevector, in example named cbv, should only be used **after**
call to call-with-addres-of ends.
(**bytevector->c-bytevector** _bytevector_)
Returns a newly allocated c-bytevector of the bytes of _bytevector_.
(**c-bytevector->bytevector**)
Returns a newly allocated bytevector of the bytes of _c-bytevector_.
(**native-endianness**)
Returns the endianness symbol associated implementations preferred endianness
@ -396,10 +404,10 @@ 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-uint-ref** _bytevector_ _k_ _endianness_ _size_)
(**c-bytevector-sint-ref** _bytevector_ _k_ _endianness_ _size_)</br>
(**c-bytevector-uint-set!** _bytevector_ _k_ _n_ _endianness_ _size_)</br>
(**c-bytevector-sint-set!** _bytevector_ _k_ _n_ _endianness_ _size_)</br>
(**c-bytevector-uint-ref** _c-bytevector_ _k_ _endianness_ _size_)</br>
(**c-bytevector-sint-ref** _c-bytevector_ _k_ _endianness_ _size_)</br>
(**c-bytevector-uint-set!** _c-bytevector_ _k_ _n_ _endianness_ _size_)</br>
(**c-bytevector-sint-set!** _c-bytevector_ _k_ _n_ _endianness_ _size_)
Size must be a positive exact integer object. If _k_,...,_k_ + _size_ 1 is
not valid indices of c-bytevector the behavior is unspecified.
@ -428,14 +436,14 @@ Examples:
> 100
(**c-bytevector-u16-ref** _bytevector_ _k_ _endianness_)
(**c-bytevector-s16-ref** _bytevector_ _k_ _endianness_)
(**c-bytevector-u16-native-ref** _bytevector_ _k_)
(**c-bytevector-s16-native-ref** _bytevector_ _k_)
(**c-bytevector-u16-set!** _bytevector_ _k_ _n_ _endianness_)
(**c-bytevector-s16-set!** _bytevector_ _k_ _n_ _endianness_)
(**c-bytevector-u16-native-set!** _bytevector_ _k_ _n_)
(**c-bytevector-s16-native-set!** _bytevector_ _k_ _n_)
(**c-bytevector-u16-ref** _c-bytevector_ _k_ _endianness_)</br>
(**c-bytevector-s16-ref** _c-bytevector_ _k_ _endianness_)</br>
(**c-bytevector-u16-native-ref** _c-bytevector_ _k_)</br>
(**c-bytevector-s16-native-ref** _c-bytevector_ _k_)</br>
(**c-bytevector-u16-set!** _c-bytevector_ _k_ _n_ _endianness_)</br>
(**c-bytevector-s16-set!** _c-bytevector_ _k_ _n_ _endianness_)</br>
(**c-bytevector-u16-native-set!** _c-bytevector_ _k_ _n_)</br>
(**c-bytevector-s16-native-set!** _c-bytevector_ _k_ _n_)
_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
@ -453,14 +461,14 @@ work only at aligned indices: _k_ must be a multiple of 2.
The ...-set! procedures return unspecified values.
(**c-bytevector-u32-ref** _bytevector_ _k_ _endianness_)
(**c-bytevector-s32-ref** _bytevector_ _k_ _endianness_)
(**c-bytevector-u32-native-ref** _bytevector_ _k_)
(**c-bytevector-s32-native-ref** _bytevector_ _k_)
(**c-bytevector-u32-set!** _bytevector_ _k_ _n_ _endianness_)
(**c-bytevector-s32-set!** _bytevector_ _k_ _n_ _endianness_)
(**c-bytevector-u32-native-set!** _bytevector_ _k_ _n_)
(**c-bytevector-s32-native-set!** _bytevector_ _k_ _n_)
(**c-bytevector-u32-ref** _c-bytevector_ _k_ _endianness_)</br>
(**c-bytevector-s32-ref** _c-bytevector_ _k_ _endianness_)</br>
(**c-bytevector-u32-native-ref** _c-bytevector_ _k_)</br>
(**c-bytevector-s32-native-ref** _c-bytevector_ _k_)</br>
(**c-bytevector-u32-set!** _c-bytevector_ _k_ _n_ _endianness_)</br>
(**c-bytevector-s32-set!** _c-bytevector_ _k_ _n_ _endianness_)</br>
(**c-bytevector-u32-native-set!** _c-bytevector_ _k_ _n_)</br>
(**c-bytevector-s32-native-set!** _c-bytevector_ _k_ _n_)
_K_,...,_k_ + 3 must be valid indices of bytevector. For c-bytevector-u32-set!
and bytevector-u32-native-set!, _n_ must be an exact integer object in the
@ -478,30 +486,79 @@ work only at aligned indices: _k_ must be a multiple of 4.
The ...-set! procedures return unspecified values.
(**c-bytevector-s64-set!**)
(**c-bytevector-s64-ref**)
(**c-bytevector-s64-native-set!**)
(**c-bytevector-s64-native-ref**)
(**c-bytevector-u64-set!**)
(**c-bytevector-u64-ref**)
(**c-bytevector-u64-native-set!**)
(**c-bytevector-u64-native-ref**)
(**c-bytevector-u64-ref** _c-bytevector_ _k_ _endianness_)</br>
(**c-bytevector-s64-ref** _c-bytevector_ _k_ _endianness_)</br>
(**c-bytevector-u64-native-ref** _c-bytevector_ _k_)</br>
(**c-bytevector-s64-native-ref** _c-bytevector_ _k_)</br>
(**c-bytevector-u64-set!** _c-bytevector_ _k_ _n_ _endianness_)</br>
(**c-bytevector-s64-set!** _c-bytevector_ _k_ _n_ _endianness_)</br>
(**c-bytevector-u64-native-set!** _c-bytevector_ _k_ _n_)</br>
(**c-bytevector-s64-native-set!** _c-bytevector_ _k_ _n_)
(**c-bytevector-ieee-single-set!**)
(**c-bytevector-ieee-single-native-set!**)
(**c-bytevector-ieee-single-ref**)
(**c-bytevector-ieee-single-native-ref**)
_K_,...,_k_ + 7 must be valid indices of _c-bytevector_. For
c-bytevector-u64-set! and c-bytevector-u64-native-set!, _n_ must be an exact
integer object in the interval {0,...,264 1}. For c-bytevector-s64-set! and
c-bytevector-s64-native-set!, _n_ must be an exact integer object in the
interval {263,...,264 1}.
These retrieve and set eight-byte representations of numbers at indices
_k_,...,_k_ + 7, according to the endianness specified by _endianness_. The
procedures with u64 in their names deal with the unsigned representation; those
with s64 with the twos-complement representation.
The procedures with native in their names employ the native endianness, and
work only at aligned indices: _k_ must be a multiple of 8.
The ...-set! procedures return unspecified values.
(**c-bytevector-ieee-single-native-ref**)</br>
(**c-bytevector-ieee-single-ref**)</br>
_K_,...,_k_ + 3 must be valid indices of _c-bytevector_. For
c-bytevector-ieee-single-native-ref, _k_ must be a multiple of 4.
These procedures return the inexact real number object that best represents the
IEEE-754 single-precision number represented by the four bytes beginning at
index _k_.
(**c-bytevector-ieee-double-set!**)
(**c-bytevector-ieee-double-native-set!**)
(**c-bytevector-ieee-double-ref**)
(**c-bytevector-ieee-double-native-ref**)
(**c-bytevector-ieee-double-ref**)
(**bytevector->c-bytevector**)
(**c-bytevector->bytevector**)
_K_,...,_k_ + 7 must be valid indices of _c-bytevector_. For
c-bytevector-ieee-double-native-ref, _k_ must be a multiple of 8.
(**string->c-utf8**)
(**c-utf8->string**)
These procedures return the inexact real number object that best represents the
IEEE-754 double-precision number represented by the eight bytes beginning at
index _k_.
(**c-bytevector-ieee-single-native-set!**)
(**c-bytevector-ieee-single-set!**)
_K_,...,_k_ + 3 must be valid indices of _c-bytevector_. For
c-bytevector-ieee-single-native-set!, _k_ must be a multiple of 4.
These procedures store an IEEE-754 single-precision representation of x into
elements _k_ through _k_ + 3 of bytevector, and return unspecified values.
(**c-bytevector-ieee-double-native-set!**)
(**c-bytevector-ieee-double-set!**)
_K_,...,_k_ + 7 must be valid indices of bytevector. For
c-bytevector-ieee-double-native-set!, _k_ must be a multiple of 8.
These procedures store an IEEE-754 double-precision representation of x into
elements _k_ through _k_ + 7 of bytevector, andreturn unspecified values.
(**string->c-utf8** _string_)
Returns a newly allocated (unless empty) c-bytevector that contains the
UTF-8 encoding of the given string.
(**c-utf8->string** _c-bytevector_)
Returns a newly allocated (unless empty) string whose character sequence is
encoded by the given c-bytevector.
### Environment variables

View File

@ -226,6 +226,9 @@
c-free
call-with-address-of
bytevector->c-bytevector
c-bytevector->bytevector
;; TODO endianness
native-endianness
make-c-bytevector
@ -265,30 +268,35 @@
c-bytevector-u32-native-set!
c-bytevector-s32-native-set!
c-bytevector-s64-set!
c-bytevector-s64-ref
c-bytevector-s64-native-set!
c-bytevector-s64-native-ref
c-bytevector-u64-set!
c-bytevector-u64-ref
c-bytevector-u64-native-set!
c-bytevector-s64-ref
c-bytevector-s64-native-ref
c-bytevector-u64-native-ref
c-bytevector-u64-set!
c-bytevector-s64-set!
c-bytevector-u64-native-set!
c-bytevector-s64-native-set!
c-bytevector-ieee-single-set!
c-bytevector-ieee-single-native-set!
c-bytevector-ieee-single-ref
c-bytevector-ieee-single-native-ref
c-bytevector-ieee-single-ref
c-bytevector-ieee-double-set!
c-bytevector-ieee-double-native-set!
c-bytevector-ieee-double-ref
c-bytevector-ieee-double-native-ref
c-bytevector-ieee-double-ref
bytevector->c-bytevector
c-bytevector->bytevector
c-bytevector-ieee-single-native-set!
c-bytevector-ieee-single-set!
c-bytevector-ieee-double-native-set!
c-bytevector-ieee-double-set!
string->c-utf8
;; TODO string->c-utf16
;; TODO string->c-utf32
c-utf8->string
;; TODO c-utf16->string
;; TODO c-utf32->string
;c-string-length ;; TODO Documentation, Testing