From e5cf7c23ca4d76ebb1754467ad5a8960d448301a Mon Sep 17 00:00:00 2001 From: retropikzel Date: Thu, 9 May 2024 21:03:13 +0300 Subject: [PATCH] Started adding documentation --- .gitignore | 1 + Makefile | 11 ++++++++++ retropikzel/pffi/v0.1.0/main.scm | 27 +++++++++++++++++++++---- retropikzel/pffi/v0.1.0/schubert-doc.md | 12 +++++++++++ 4 files changed, 47 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 1377554..06f4913 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *.swp +docuptmp diff --git a/Makefile b/Makefile index cfc6fe7..2915b90 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,14 @@ KAWA=java --add-exports java.base/jdk.internal.foreign.abi=ALL-UNNAMED --add-exp build: build-rkt documentation +update-documentation: + schubert document + mkdir -p docuptmp + cd docuptmp && git clone git@codeberg.org:r7rs-pffi/pffi.wiki.git + cp retropikzel/pffi/${VERSION}/schubert-doc.md docuptmp/pffi.wiki/Documentation.md + cd docuptmp/pffi.wiki && git add Documentation.md ; git commit -m "Update documentation" ; git push + rm -rf docutmp + build-rkt: echo "#lang r7rs" > retropikzel/pffi/${VERSION}/main.rkt cat retropikzel/pffi/${VERSION}/main.scm >> retropikzel/pffi/${VERSION}/main.rkt @@ -49,3 +57,6 @@ test/sdl2.scm: build #${RACKET} $@ #${STKLOS} $@ ${KAWA} $@ + +clean: + rm -rf docuptmp diff --git a/retropikzel/pffi/v0.1.0/main.scm b/retropikzel/pffi/v0.1.0/main.scm index 15dd34a..8737be7 100644 --- a/retropikzel/pffi/v0.1.0/main.scm +++ b/retropikzel/pffi/v0.1.0/main.scm @@ -1,3 +1,4 @@ +;> # pffi (define-library (retropikzel pffi v0.1.0 main) (cond-expand @@ -36,8 +37,9 @@ (scheme file) (scheme process-context))) (else (error "Implementation not supported by r7rs-pffi"))) - (export pffi-call - pffi-types + (export pffi-shared-object-auto-load + pffi-shared-object-load + pffi-call pffi-size-of pffi-pointer-allocate pffi-pointer-null @@ -47,8 +49,6 @@ pffi-pointer-free pffi-pointer? pffi-pointer-null? - pffi-shared-object-load - pffi-shared-object-auto-load pffi-pointer-set! pffi-pointer-get pffi-pointer-deref) @@ -81,6 +81,8 @@ (java.lang.Char value)) (else value)))))) + ;> ## Procedures + (define platform-file-extension (cond-expand (racket (if (equal? (system-type 'os) 'windows) ".dll" ".so")) @@ -460,6 +462,13 @@ (static-field java.lang.foreign.ValueLayout 'JAVA_BYTE)))))) + ;> ### pffi-shared-object-load + ;> + ;> Arguments: + ;> - path (string) The path to the shared object you want to load, including any "lib" infront and .so/.dll at the end + ;> + ;> Returns: + ;> (define pffi-shared-object-load (lambda (path) (cond-expand (sagittarius (open-shared-library path)) @@ -483,6 +492,16 @@ (list (cons 'linker linker) (cons 'lookup lookup))))))) + ;> ### pffi-shared-object-auto-load + ;> + ;> Arguments: + ;> - object-name (symbol) + ;> - The name of the dynamic library file you want to load without the "lib" in fron of it or .so/.dll at the end + ;> - addition-paths (list (string)...) + ;> - Any additional paths you want to search for the library + ;> + ;> Returns: + ;> - (object) Shared object, the type depends on the implementation (define pffi-shared-object-auto-load (lambda (object-name additional-paths) (let* ((paths (append auto-load-paths additional-paths)) diff --git a/retropikzel/pffi/v0.1.0/schubert-doc.md b/retropikzel/pffi/v0.1.0/schubert-doc.md index d33ca86..acaecf5 100644 --- a/retropikzel/pffi/v0.1.0/schubert-doc.md +++ b/retropikzel/pffi/v0.1.0/schubert-doc.md @@ -1,3 +1,9 @@ +# pffi test + + +## Procedures + + ### pffi-call Arguments: @@ -28,3 +34,9 @@ Example: (cons 'int 4)) +### pffi-shared-object-auto-load + +Arguments: +- object-name (symbol) + +