From 66b68e6a236dd95254529dd37385e2c119e8f4cd Mon Sep 17 00:00:00 2001 From: retropikzel Date: Sat, 18 May 2024 16:51:23 +0300 Subject: [PATCH] Updated readme --- README.md | 80 ++++++++++++++----- retropikzel/pffi/v0-1-0/main.sld | 3 +- ...00_pffi_define.scm => 600_pffi-define.scm} | 0 3 files changed, 61 insertions(+), 22 deletions(-) rename test/{600_pffi_define.scm => 600_pffi-define.scm} (100%) diff --git a/README.md b/README.md index 15f56a7..5154446 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,9 @@ For bugs you can use the - [Sagittarius](https://bitbucket.org/ktakashi/sagittarius-scheme/wiki/Home) - [Guile](https://www.gnu.org/software/guile/) - [Kawa](https://www.gnu.org/software/kawa/index.html) - - Needs atleast java 21 - - Needs jvm flags - - java --add-exports java.base/jdk.internal.foreign.abi=ALL-UNNAMED --add-exports java.base/jdk.internal.foreign.layout=ALL-UNNAMED --add-exports java.base/jdk.internal.foreign=ALL-UNNAMED --enable-native-access=ALL-UNNAMED --enable-preview -jar kawa.jar FILENAME.scm +- Needs atleast java 21 +- Needs jvm flags +- java --add-exports java.base/jdk.internal.foreign.abi=ALL-UNNAMED --add-exports java.base/jdk.internal.foreign.layout=ALL-UNNAMED --add-exports java.base/jdk.internal.foreign=ALL-UNNAMED --enable-native-access=ALL-UNNAMED --enable-preview -jar kawa.jar FILENAME.scm - [Racket](https://racket-lang.org/) - [Chicken](https://www.call-cc.org/) @@ -23,19 +23,19 @@ For bugs you can use the ## Support waiting for the implementation - [LIPS](https://lips.js.org/) - - Waiting for implementation to have cond-expand and library support - - Will only work on nodejs +- Waiting for implementation to have cond-expand and library support +- Will only work on nodejs ## Not supported - [Chibi](https://synthcode.com/scheme/chibi) - - FFI requires C code +- FFI requires C code - [MIT-Scheme](https://www.gnu.org/software/mit-scheme/) - - FF requires C code +- FF requires C code - [tr7](https://gitlab.com/jobol/tr7) - - FFI requires C code +- FFI requires C code - [Gauche](https://practical-scheme.net/gauche/) - - FFI requires C code +- FFI requires C code ## Hacking @@ -46,7 +46,35 @@ main.sld is the real main which is copied to main.scm On some implementations these are procedures, on some macros. -### pffi-shared-object-auto-load +### Types + +Types are given as symbols, for example 'int8 or 'pointer. + +- int8 +- uint8 +- int16 +- uint16 +- int32 +- uint32 +- int64 +- uint64 +- char +- unsigned-char +- short +- unsigned-short +- int +- unsigned-int +- long +- unsigned-long +- float +- double +- string +- pointer + + +### Procedures or macros + +#### pffi-shared-object-auto-load Arguments: @@ -55,25 +83,37 @@ Arguments: - addition-paths (list (string)...) - Any additional paths you want to search for the library -Returns: + Returns: -- (object) Shared object, the type depends on the implementation + - (object) Shared object, the type depends on the implementation -### pffi-shared-object-load +#### pffi-shared-object-load -It is recommended to use the pffi-shared-object-auto-load instead of this -directly. + It is recommended to use the pffi-shared-object-auto-load instead of this + directly. -Arguments: + Arguments: - headers (list (string) ...) Headers that need to be included - - Example (list "curl/curl.h") + - Example (list "curl/curl.h") - path (string) The full path to the shared object you want to load, including any "lib" infront and .so/.dll at the end - - Example "libcurl.so" + - Example "libcurl.so" -Returns: + Returns: -- (object) Shared object, the type depends on the implementation + - (object) Shared object, the type depends on the implementation +#### pffi-define + + Defines new foreign procedure. + + Arguments: + + - scheme-name () The name of the procedure used on scheme side + - shared-object (object) The shared object + - Use pffi-shared-object-auto-load and pffi-shared-object-load to get this + - c-name (symbol) The name of the C function + - return-type (symbol) The return type of the C function + - arguments-types (list (symbol) ...) The C function argument types diff --git a/retropikzel/pffi/v0-1-0/main.sld b/retropikzel/pffi/v0-1-0/main.sld index c67353a..11d3d2c 100644 --- a/retropikzel/pffi/v0-1-0/main.sld +++ b/retropikzel/pffi/v0-1-0/main.sld @@ -106,8 +106,6 @@ uint32 int64 uint64 - intptr - uintptr char unsigned-char short @@ -118,6 +116,7 @@ unsigned-long float double + string pointer)) (define string-split diff --git a/test/600_pffi_define.scm b/test/600_pffi-define.scm similarity index 100% rename from test/600_pffi_define.scm rename to test/600_pffi-define.scm