From 66e4812f1105aa8fbf57317f40ea8cb6e6a2ace1 Mon Sep 17 00:00:00 2001 From: retropikzel Date: Thu, 20 Mar 2025 19:25:35 +0200 Subject: [PATCH] Rename pffi-shared-object-auto-load to pffi-load and dont export pffi-shared-object-load --- README.md | 87 ++++++++++++-------------------- retropikzel/pffi.sld | 50 +++++++----------- retropikzel/pffi/shared/main.scm | 6 +-- tests/compliance.scm | 30 +++++------ 4 files changed, 67 insertions(+), 106 deletions(-) diff --git a/README.md b/README.md index bf8512a..a02a8d4 100644 --- a/README.md +++ b/README.md @@ -43,8 +43,7 @@ conforming to some specification. - [pffi-init](#pffi-init) - [pffi-size-of](#pffi-size-of) - [pffi-align-of](#pffi-align-of) - - [pffi-shared-object-auto-load](#pffi-shared-object-auto-load) - - [pffi-shared-object-load](#pffi-shared-object-load) + - [pffi-load](#pffi-load) - [pffi-pointer-null](#pffi-pointer-null) - [pffi-pointer-null?](#pffi-pointer-null?) - [pffi-pointer-allocate](#pffi-pointer-allocate) @@ -114,31 +113,31 @@ For roadmap to 1.0.0 see [issues](https://todo.sr.ht/~retropikzel/r7rs-pffi?sear ### Beta -| | pffi-init | pffi-size-of | pffi-shared-object-auto-load | pffi-shared-object-load | pffi-pointer-null | pffi-pointer-null? | pffi-pointer-allocate | pffi-pointer-address | pffi-pointer? | pffi-pointer-free | pffi-pointer-set! | pffi-pointer-get | pffi-string->pointer | pffi-pointer->string | pffi-struct-make | pffi-struct-pointer | pffi-struct-offset-get | pffi-struct-get | pffi-struct-set! | pffi-define | pffi-define-callback | -|--------------|:---------:|:------------:|:----------------------------:|:-----------------------:|:-----------------:|:------------------:|:---------------------:|:--------------------:|:-------------:|:-----------------:|:-----------------:|:----------------:|:--------------------:|:--------------------:|:----------------:|:-------------------:|:----------------------:|:---------------:|:----------------:|:-----------:|:--------------------:| -| Chibi | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | -| Chicken-5 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | -| Gauche | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | -| Guile | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | -| Kawa | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | -| Racket | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | -| Saggittarius | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | +| | pffi-init | pffi-size-of | pffi-load | pffi-pointer-null | pffi-pointer-null? | pffi-pointer-allocate | pffi-pointer-address | pffi-pointer? | pffi-pointer-free | pffi-pointer-set! | pffi-pointer-get | pffi-string->pointer | pffi-pointer->string | pffi-struct-make | pffi-struct-pointer | pffi-struct-offset-get | pffi-struct-get | pffi-struct-set! | pffi-define | pffi-define-callback | +|--------------|:---------:|:------------:|:---------:|:-----------------:|:------------------:|:---------------------:|:--------------------:|:-------------:|:-----------------:|:-----------------:|:----------------:|:--------------------:|:--------------------:|:----------------:|:-------------------:|:----------------------:|:---------------:|:----------------:|:-----------:|:--------------------:| +| Chibi | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | +| Chicken-5 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | +| Gauche | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | | +| Guile | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | +| Kawa | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | +| Racket | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | +| Saggittarius | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | ### Alpha -| | pffi-init | pffi-size-of | pffi-shared-object-auto-load | pffi-shared-object-load | pffi-pointer-null | pffi-pointer-null? | pffi-pointer-allocate | pffi-pointer-address | pffi-pointer? | pffi-pointer-free | pffi-pointer-set! | pffi-pointer-get | pffi-string->pointer | pffi-pointer->string | pffi-struct-make | pffi-struct-pointer | pffi-struct-offset-get | pffi-struct-get | pffi-struct-set! | pffi-define | pffi-define-callback | -|--------------|:---------:|:------------:|:----------------------------:|:-----------------------:|:-----------------:|:------------------:|:---------------------:|:--------------------:|:-------------:|:-----------------:|:-----------------:|:----------------:|:--------------------:|:--------------------:|:----------------:|:-------------------:|:----------------------:|:---------------:|:----------------:|:-----------:|:--------------------:| -| Cyclone | X | X | X | X | X | X | X | | X | X | X | X | X | X | X | X | X | X | X | X | | -| Gambit | X | X | | | | | | X | | | | | | | X | X | X | X | X | | | -| Gerbil | X | | | | | | | | | | | | | | X | X | X | X | X | | | -| Larceny | X | | | | | | | | | | | | | | X | X | X | X | X | | | -| Mosh | X | X | X | X | X | X | X | | X | X | X | X | X | X | X | X | X | X | X | X | X | -| Skint | X | | | | | | | | | | | | | | X | X | X | X | X | | | -| Stklos | X | X | X | X | X | X | X | | X | X | | | | | X | X | X | X | X | | | -| tr7 | | | | | | | | | | | | | | | X | X | X | X | X | | | -| Ypsilon | | | | | | | | | | | | | | | X | X | X | X | X | | | +| | pffi-init | pffi-size-of | pffi-load | pffi-pointer-null | pffi-pointer-null? | pffi-pointer-allocate | pffi-pointer-address | pffi-pointer? | pffi-pointer-free | pffi-pointer-set! | pffi-pointer-get | pffi-string->pointer | pffi-pointer->string | pffi-struct-make | pffi-struct-pointer | pffi-struct-offset-get | pffi-struct-get | pffi-struct-set! | pffi-define | pffi-define-callback | +|--------------|:---------:|:------------:|:---------:|:-----------------:|:------------------:|:---------------------:|:--------------------:|:-------------:|:-----------------:|:-----------------:|:----------------:|:--------------------:|:--------------------:|:----------------:|:-------------------:|:----------------------:|:---------------:|:----------------:|:-----------:|:--------------------:| +| Cyclone | X | X | X | X | X | X | | X | X | X | X | X | X | X | X | X | X | X | X | | +| Gambit | X | X | | | | | X | | | | | | | X | X | X | X | X | | | +| Gerbil | X | | | | | | | | | | | | | X | X | X | X | X | | | +| Larceny | X | | | | | | | | | | | | | X | X | X | X | X | | | +| Mosh | X | X | X | X | X | X | | X | X | X | X | X | X | X | X | X | X | X | X | X | +| Skint | X | | | | | | | | | | | | | X | X | X | X | X | | | +| Stklos | X | X | X | X | X | X | | X | X | | | | | X | X | X | X | X | | | +| tr7 | | | | | | | | | | | | | | X | X | X | X | X | | | +| Ypsilon | | | | | | | | | | | | | | X | X | X | X | X | | | ### Not started @@ -267,9 +266,9 @@ Returns the size of the pffi-struct, pffi-enum or pffi-type. Returns the align of the type. -#### pffi-shared-object-auto-load +#### pffi-load -**pffi-shared-object-auto-load** headers shared-object-name [options] -> object +**pffi-load** headers shared-object-name [options] -> object Load given shared object automatically searching many predefined paths. @@ -291,33 +290,11 @@ Example: (define libc-stdlib (cond-expand - (windows (pffi-shared-object-auto-load (list "stdlib.h") "ucrtbase")) - (else (pffi-shared-object-auto-load (list "stdlib.h") - "c" - '(additional-versions . ("6")) - '(additional-search-paths . (".")))))) - - -#### pffi-shared-object-load - -**pffi-shared-object-load** headers path [options] - -It is recommended to use the pffi-shared-object-auto-load instead of this -directly. - -Headers is a list of strings needed to be included, for example - - (list "curl/curl.h") - -Path is the full path of the shared object without any "lib" prefix or ".so/.dll" suffix. For example: - - "curl" - - -Options: - -- additional-versions - - List of different versions of library to try, for example (list ".0" ".1") + (windows (pffi-load (list "stdlib.h") "ucrtbase")) + (else (pffi-load (list "stdlib.h") + "c" + '(additional-versions . ("6")) + '(additional-search-paths . (".")))))) #### pffi-pointer-null @@ -438,8 +415,8 @@ Defines a new foreign function to be used from Scheme code. For example: (define libc-stdlib (cond-expand - (windows (pffi-shared-object-auto-load (list "stdlib.h") (list) "ucrtbase" (list ""))) - (else (pffi-shared-object-auto-load (list "stdlib.h") (list) "c" (list "" "6"))))) + (windows (pffi-load (list "stdlib.h") (list) "ucrtbase" (list ""))) + (else (pffi-load (list "stdlib.h") (list) "c" (list "" "6"))))) (pffi-define c-puts libc-stdlib 'puts 'int (list 'pointer)) (c-puts "Message brought to you by FFI!") @@ -452,8 +429,8 @@ Defines a new Sceme function to be used as callback to C code. For example: ; Load the shared library (define libc-stdlib (cond-expand - (windows (pffi-shared-object-auto-load (list "stdlib.h") (list) "ucrtbase" (list ""))) - (else (pffi-shared-object-auto-load (list "stdlib.h") (list) "c" (list "" "6"))))) + (windows (pffi-load (list "stdlib.h") (list) "ucrtbase" (list ""))) + (else (pffi-load (list "stdlib.h") (list) "c" (list "" "6"))))) ; Define C function that takes a callback (pffi-define qsort libc-stdlib 'qsort 'void (list 'pointer 'int 'int 'callback)) diff --git a/retropikzel/pffi.sld b/retropikzel/pffi.sld index 2f8edf4..1694e08 100644 --- a/retropikzel/pffi.sld +++ b/retropikzel/pffi.sld @@ -13,8 +13,7 @@ pffi-size-of pffi-type? pffi-align-of - pffi-shared-object-auto-load - pffi-shared-object-load + pffi-load pffi-pointer-null pffi-pointer-null? pffi-pointer-allocate @@ -50,8 +49,7 @@ pffi-size-of pffi-type? pffi-align-of - pffi-shared-object-auto-load - pffi-shared-object-load + pffi-load pffi-pointer-null pffi-pointer-null? pffi-pointer-allocate @@ -84,8 +82,7 @@ pffi-size-of pffi-type? pffi-align-of - pffi-shared-object-auto-load - pffi-shared-object-load + pffi-load pffi-pointer-null pffi-pointer-null? pffi-pointer-allocate @@ -114,8 +111,7 @@ pffi-size-of pffi-type? pffi-align-of - pffi-shared-object-auto-load - pffi-shared-object-load + pffi-load pffi-pointer-null pffi-pointer-null? pffi-pointer-allocate @@ -144,8 +140,7 @@ pffi-size-of pffi-type? pffi-align-of - pffi-shared-object-auto-load - pffi-shared-object-load + pffi-load ;pffi-pointer-null ;pffi-pointer-null? ;pffi-pointer-allocate @@ -175,8 +170,7 @@ pffi-size-of pffi-type? pffi-align-of - pffi-shared-object-auto-load - pffi-shared-object-load + pffi-load pffi-pointer-null pffi-pointer-null? pffi-pointer-allocate @@ -205,8 +199,7 @@ ;pffi-size-of pffi-type? ;pffi-align-of - ;pffi-shared-object-auto-load - ;pffi-shared-object-load + ;pffi-load ;pffi-pointer-null ;pffi-pointer-null? ;pffi-pointer-allocate @@ -237,8 +230,7 @@ pffi-size-of pffi-type? pffi-align-of - pffi-shared-object-auto-load - pffi-shared-object-load + pffi-load pffi-pointer-null pffi-pointer-null? pffi-pointer-allocate @@ -266,8 +258,7 @@ pffi-size-of pffi-type? pffi-align-of - pffi-shared-object-auto-load - pffi-shared-object-load + pffi-load pffi-pointer-null pffi-pointer-null? pffi-pointer-allocate @@ -302,8 +293,7 @@ ;pffi-size-of pffi-type? ;pffi-align-of - ;pffi-shared-object-auto-load - ;pffi-shared-object-load + ;pffi-load ;pffi-pointer-null ;pffi-pointer-null? ;pffi-pointer-allocate @@ -332,8 +322,7 @@ pffi-size-of pffi-type? pffi-align-of - pffi-shared-object-auto-load - pffi-shared-object-load + pffi-load pffi-pointer-null pffi-pointer-null? pffi-pointer-allocate @@ -366,8 +355,7 @@ pffi-size-of pffi-type? pffi-align-of - pffi-shared-object-auto-load - pffi-shared-object-load + pffi-load pffi-pointer-null pffi-pointer-null? pffi-pointer-allocate @@ -397,8 +385,7 @@ pffi-size-of pffi-type? pffi-align-of - pffi-shared-object-auto-load - pffi-shared-object-load + pffi-load pffi-pointer-null pffi-pointer-null? pffi-pointer-allocate @@ -426,8 +413,7 @@ ;pffi-size-of pffi-type? ;pffi-align-of - ;pffi-shared-object-auto-load - ;pffi-shared-object-load + ;pffi-load ;pffi-pointer-null ;pffi-pointer-null? ;pffi-pointer-allocate @@ -456,8 +442,7 @@ pffi-size-of pffi-type? pffi-align-of - pffi-shared-object-auto-load - pffi-shared-object-load + pffi-load pffi-pointer-null pffi-pointer-null? pffi-pointer-allocate @@ -486,7 +471,7 @@ ;pffi-size-of pffi-type? ;pffi-align-of - ;pffi-shared-object-auto-load + ;pffi-load ;pffi-shared-object-load ;pffi-pointer-null ;pffi-pointer-null? @@ -515,8 +500,7 @@ ;pffi-size-of pffi-type? ;pffi-align-of - ;pffi-shared-object-auto-load - ;pffi-shared-object-load + ;pffi-load ;pffi-pointer-null ;pffi-pointer-null? ;pffi-pointer-allocate diff --git a/retropikzel/pffi/shared/main.scm b/retropikzel/pffi/shared/main.scm index 2ecb7dd..dcdae6d 100644 --- a/retropikzel/pffi/shared/main.scm +++ b/retropikzel/pffi/shared/main.scm @@ -90,16 +90,16 @@ (cond-expand (gambit (define-macro - (pffi-shared-object-auto-load headers object-name options) + (pffi-load headers object-name options) `(pffi-shared-object-load ,(car headers)))) ((or chicken cyclone) - (define-syntax pffi-shared-object-auto-load + (define-syntax pffi-load (syntax-rules () ((_ headers object-name . options) (pffi-shared-object-load headers))))) (else - (define pffi-shared-object-auto-load + (define pffi-load (lambda (headers object-name . options) (let* ((additional-paths (if (assoc 'additional-paths options) (cdr (assoc 'additional-paths options)) diff --git a/tests/compliance.scm b/tests/compliance.scm index c28bbed..f27328c 100755 --- a/tests/compliance.scm +++ b/tests/compliance.scm @@ -386,27 +386,27 @@ (assert equal? (number? align-pointer) #t) (assert = align-pointer 8))) -;; pffi-shared-object-auto-load +;; pffi-load (print-header 'pffi-shared-object-auto-load) (define libc-stdlib (cond-expand - (windows (pffi-shared-object-auto-load (list "stdlib.h") "ucrtbase")) - (else (pffi-shared-object-auto-load (list "stdlib.h") - "c" - '(additional-versions . ("0" "6")))))) + (windows (pffi-load (list "stdlib.h") "ucrtbase")) + (else (pffi-load (list "stdlib.h") + "c" + '(additional-versions . ("0" "6")))))) (debug libc-stdlib) (define c-testlib (cond-expand - (windows (pffi-shared-object-auto-load (list "libtest.h") - "test" - '(additional-paths . (".")))) - (else (pffi-shared-object-auto-load (list "libtest.h") - "test" - '(additional-paths . (".")))))) + (windows (pffi-load (list "libtest.h") + "test" + '(additional-paths . (".")))) + (else (pffi-load (list "libtest.h") + "test" + '(additional-paths . (".")))))) (debug c-testlib) @@ -661,10 +661,10 @@ (define libc-stdio (cond-expand ; FIXME Check that windows so file is correct - (windows (pffi-shared-object-auto-load (list "stdio.h") "ucrtbase")) - (else (pffi-shared-object-auto-load (list "stdio.h") - "c" - '(additional-versions . ("0" "6")))))) + (windows (pffi-load (list "stdio.h") "ucrtbase")) + (else (pffi-load (list "stdio.h") + "c" + '(additional-versions . ("0" "6")))))) (pffi-define c-fopen libc-stdio 'fopen 'pointer (list 'pointer 'pointer)) (define output-file (c-fopen (pffi-string->pointer "testfile.test")