From 0da448614e8181036f8076b897b631e60bfb84ab Mon Sep 17 00:00:00 2001
From: retropikzel (foreign c) is a C foreign function interface (FFI) library
- for R7RS. It is portable in the sense that it supports multiple
+ foreign-c is a C foreign function interface (FFI) library for
+ R7RS. It is portable in the sense that it supports multiple
implementations, as opposed to being portable by conforming to
some specification. The new readme is a work in progress. Either download the latest release from releases
- page or git clone , preferably with a tag, and copy the
- “foreign” directory to your library directory.(foreign c)
- foreign-c
+
Installation
As an example assuming you have a project and your libraries live in directory called snow in it:
git clone https://git.sr.ht/~retropikzel/foreign-c --branch LATEST_VERSION
@@ -317,10 +324,56 @@ make -C snow/foreign/c <SCHEME_IMPLEMENTATION_NAME>
(c-type-size type)
Returns the size of given C type.
(define-c-library scheme-name - headers object-name options) - define-c-procedure define-c-callback c-bytevector? - c-bytevector-u8-set! c-bytevector-u8-ref - c-bytevector-pointer-set! c-bytevector-pointer-ref
+ headers object-name options) +Takes a scheme-name to bind the library to, list of C headers + as strings, shared-object name and options.
+The C header strings should not contain “<” or “>”, + they are added automatically.
+The name of the shared object should not contain suffix like + .so or .dll. Nor should it contain any prefix like “lib”.
+The options are:
+Example:
+(cond-expand
+ (windows (define-c-library libc-stdlib
+ '("stdlib.h")
+ "ucrtbase"
+ '((additional-versions ("0" "6"))
+ (additiona-paths (".")))))
+ (else (define-c-library libc-stdlib
+ (list "stdlib.h")
+ "c"
+ '((additional-versions ("0" "6"))
+ (additiona-paths ("."))))))
+ make-c-bytevector make-c-null c-null? c-free
native-endianness c-bytevector-s8-set! c-bytevector-s8-ref
diff --git a/documentation/foreign-c.pdf b/documentation/foreign-c.pdf
index 0c7ab479895fcc0c2883c366962814896dd72f38..41d8d830a8ff75a1a4a742cf1da4356663484c14 100644
GIT binary patch
delta 27515
zcma&NWmH_v(gqsbo#5^S8wPg>?gSFt2@u>}1_ CN_kL@nM&QcXxGV?-Za;=1HXDEQ$UKUTDZEqFNKmFk>4s9LHy
z#-t;5N)uSZ9&8WJ&s77lz}eeYP@1?vlaS 38mq1L{7H?;P&rYk+;FNT`YP9f%uiuVAd|$Bag^HOTD#HqzC^0-
z2k=1Ws8M|3uLQO(;h??Zz`cUu+SqDN^--JxB*T6JX~7D0-{j`tzGq#{@G1`*`hC;B1vGL7384^g*-&*CBEhkic7OyAQ97O%1
zDDJRnf<)Zgy`L|R)NrU8sf!VTZD_&d0#Ll)IpfQz;E%!d+3HD;oeWXTmE;2j#ttVS
z(pryBnyNP665ET`<3(UXFsp%;i$A3WixHzi#97c)Ae>AXv@HS8>5q4Fd6G164Ts`q
z=yXsHmhn;@yHuWGMz!234WjO9L
z6_Y@Ouk<78#@weoMHLYv4!>rB&9zSlg-o6r`(#5B!FbDKOhhN>rB5=|B_ZIOjseS;
zKmbCsbXCLL@XtZLb{-W~>Vm^-4EXewG2{B-GiaCLhLeT_hdP>8I>6IxoHk+SiHR`u
z&l6K0o
YnF_Jb5(z(4w5@0ewC28v!EP1SZ~cOcB2PzaSLEG
z%WmB_hR^X9%zSS7I-Cq8h);kJog{HR``v0DX@QU&f~+v&8cHt};58PugVw^GbD!z$
z2SM^}w=*X-V`EFLiv*P48guK$$mt3$frI}+MqtXQ@BNA-;xOXSf*;31%6j^eqFr>Z
z1N4z=CwLWIM!XY_45}Z;4T|HQPv(?;7}Gsg6Bg|qXTKkr-8_ahRNn|eyiC)5{g;kZ
zw+#s+2u@nahtgg4
0OgQ&YnRw~8Oz0=zs
z1kq2cNH~?{&g9suj6O}>_$8^5v3g)MGL@p`>e#Qr!y`NuxU^0$a1y(~H*9+{U;r)2
z4OVxImM3MWE
ComAtz$Xj47S9eYg?KJR5`@-Ub-%>e|&xV}`Zkd2s$Secla^UoXiUvIi_jH32m?VO3(VzhY>
zb*Rkj9ZfCG?TC$asAJN7z*t#