diff --git a/Makefile b/Makefile index ddc363a..e23ba47 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ -.PHONY: libtest.o tests/libtest.so libtest.a documentation README.html +.PHONY: libtest.o tests/libtest.so libtest.a documentation README.html foreign-c.pdf +PDFENGINE=weasyprint CC=gcc DOCKER=docker run -it -v ${PWD}:/workdir DOCKER_INIT=cd /workdir && make clean && @@ -127,6 +128,9 @@ ${TMPDIR}: README.html: README.md pandoc --metadata title="Foreign C" --standalone README.md > README.html +foreign-c.pdf: + pandoc -f markdown -t pdf --pdf-engine=${PDFENGINE} README.md -o foreign-c.pdf + chibi: foreign/c/primitives/chibi/foreign-c.stub chibi-ffi foreign/c/primitives/chibi/foreign-c.stub ${CC} \ diff --git a/README.md b/README.md index 81dc32a..89cf548 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -# foreign-c - foreign-c is a C foreign function interface (FFI) library for R7RS Schemes. It is portable in the sense that it supports multiple implementations. @@ -440,7 +438,7 @@ Returns the endianness symbol associated implementation’s preferred endianness (usually that of the underlying machine architecture). This may be any \, including a symbol other than big and little. -(**make-c-bytevector** _k_)
+(**make-c-bytevector** _k_)

(**make-c-bytevector** _k_ _fill_) Returns a newly allocated c-bytevector of _k_ bytes. @@ -488,9 +486,9 @@ If _k_ is not a valid index of c-bytevector the behaviour is undefined. Returns the unsigned char at index _k_ of _c-bytevector_. -(**c-bytevector-uint-ref** _c-bytevector_ _k_ _endianness_ _size_)
-(**c-bytevector-sint-ref** _c-bytevector_ _k_ _endianness_ _size_)
-(**c-bytevector-uint-set!** _c-bytevector_ _k_ _n_ _endianness_ _size_)
+(**c-bytevector-uint-ref** _c-bytevector_ _k_ _endianness_ _size_)

+(**c-bytevector-sint-ref** _c-bytevector_ _k_ _endianness_ _size_)

+(**c-bytevector-uint-set!** _c-bytevector_ _k_ _n_ _endianness_ _size_)

(**c-bytevector-sint-set!** _c-bytevector_ _k_ _n_ _endianness_ _size_) Size must be a positive exact integer object. If _k_,...,_k_ + _size_ − 1 is @@ -520,13 +518,13 @@ Examples: > 100 -(**c-bytevector-u16-ref** _c-bytevector_ _k_ _endianness_)
-(**c-bytevector-s16-ref** _c-bytevector_ _k_ _endianness_)
-(**c-bytevector-u16-native-ref** _c-bytevector_ _k_)
-(**c-bytevector-s16-native-ref** _c-bytevector_ _k_)
-(**c-bytevector-u16-set!** _c-bytevector_ _k_ _n_ _endianness_)
-(**c-bytevector-s16-set!** _c-bytevector_ _k_ _n_ _endianness_)
-(**c-bytevector-u16-native-set!** _c-bytevector_ _k_ _n_)
+(**c-bytevector-u16-ref** _c-bytevector_ _k_ _endianness_)

+(**c-bytevector-s16-ref** _c-bytevector_ _k_ _endianness_)

+(**c-bytevector-u16-native-ref** _c-bytevector_ _k_)

+(**c-bytevector-s16-native-ref** _c-bytevector_ _k_)

+(**c-bytevector-u16-set!** _c-bytevector_ _k_ _n_ _endianness_)

+(**c-bytevector-s16-set!** _c-bytevector_ _k_ _n_ _endianness_)

+(**c-bytevector-u16-native-set!** _c-bytevector_ _k_ _n_)

(**c-bytevector-s16-native-set!** _c-bytevector_ _k_ _n_) _K_ must be a valid index of _c-bytevector_ ; so must _k_ + 1. For @@ -545,13 +543,13 @@ work only at aligned indices: _k_ must be a multiple of 2. The ...-set! procedures return unspecified values. -(**c-bytevector-u32-ref** _c-bytevector_ _k_ _endianness_)
-(**c-bytevector-s32-ref** _c-bytevector_ _k_ _endianness_)
-(**c-bytevector-u32-native-ref** _c-bytevector_ _k_)
-(**c-bytevector-s32-native-ref** _c-bytevector_ _k_)
-(**c-bytevector-u32-set!** _c-bytevector_ _k_ _n_ _endianness_)
-(**c-bytevector-s32-set!** _c-bytevector_ _k_ _n_ _endianness_)
-(**c-bytevector-u32-native-set!** _c-bytevector_ _k_ _n_)
+(**c-bytevector-u32-ref** _c-bytevector_ _k_ _endianness_)

+(**c-bytevector-s32-ref** _c-bytevector_ _k_ _endianness_)

+(**c-bytevector-u32-native-ref** _c-bytevector_ _k_)

+(**c-bytevector-s32-native-ref** _c-bytevector_ _k_)

+(**c-bytevector-u32-set!** _c-bytevector_ _k_ _n_ _endianness_)

+(**c-bytevector-s32-set!** _c-bytevector_ _k_ _n_ _endianness_)

+(**c-bytevector-u32-native-set!** _c-bytevector_ _k_ _n_)

(**c-bytevector-s32-native-set!** _c-bytevector_ _k_ _n_) _K_,...,_k_ + 3 must be valid indices of bytevector. For c-bytevector-u32-set! @@ -570,13 +568,13 @@ work only at aligned indices: _k_ must be a multiple of 4. The ...-set! procedures return unspecified values. -(**c-bytevector-u64-ref** _c-bytevector_ _k_ _endianness_)
-(**c-bytevector-s64-ref** _c-bytevector_ _k_ _endianness_)
-(**c-bytevector-u64-native-ref** _c-bytevector_ _k_)
-(**c-bytevector-s64-native-ref** _c-bytevector_ _k_)
-(**c-bytevector-u64-set!** _c-bytevector_ _k_ _n_ _endianness_)
-(**c-bytevector-s64-set!** _c-bytevector_ _k_ _n_ _endianness_)
-(**c-bytevector-u64-native-set!** _c-bytevector_ _k_ _n_)
+(**c-bytevector-u64-ref** _c-bytevector_ _k_ _endianness_)

+(**c-bytevector-s64-ref** _c-bytevector_ _k_ _endianness_)

+(**c-bytevector-u64-native-ref** _c-bytevector_ _k_)

+(**c-bytevector-s64-native-ref** _c-bytevector_ _k_)

+(**c-bytevector-u64-set!** _c-bytevector_ _k_ _n_ _endianness_)

+(**c-bytevector-s64-set!** _c-bytevector_ _k_ _n_ _endianness_)

+(**c-bytevector-u64-native-set!** _c-bytevector_ _k_ _n_)

(**c-bytevector-s64-native-set!** _c-bytevector_ _k_ _n_) _K_,...,_k_ + 7 must be valid indices of _c-bytevector_. For @@ -595,8 +593,8 @@ work only at aligned indices: _k_ must be a multiple of 8. The ...-set! procedures return unspecified values. -(**c-bytevector-ieee-single-native-ref**)
-(**c-bytevector-ieee-single-ref**)
+(**c-bytevector-ieee-single-native-ref**)

+(**c-bytevector-ieee-single-ref**)

_K_,...,_k_ + 3 must be valid indices of _c-bytevector_. For c-bytevector-ieee-single-native-ref, _k_ must be a multiple of 4. @@ -605,7 +603,7 @@ 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-native-ref**)
+(**c-bytevector-ieee-double-native-ref**)

(**c-bytevector-ieee-double-ref**) _K_,...,_k_ + 7 must be valid indices of _c-bytevector_. For @@ -615,7 +613,7 @@ 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-native-set!**)

(**c-bytevector-ieee-single-set!**) _K_,...,_k_ + 3 must be valid indices of _c-bytevector_. For @@ -624,7 +622,7 @@ 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-native-set!**)

(**c-bytevector-ieee-double-set!**) _K_,...,_k_ + 7 must be valid indices of bytevector. For diff --git a/foreign-c.pdf b/foreign-c.pdf new file mode 100644 index 0000000..a77ff57 Binary files /dev/null and b/foreign-c.pdf differ