diff --git a/README.md b/README.md index 1c06301..a725396 100644 --- a/README.md +++ b/README.md @@ -67,12 +67,18 @@ For bugs you can use the main.sld is the real main which is copied to main.scm -## Documentation WIP - -Note that this documentation is work in process and very incomplete, sorry about that. +## Documentation On some implementations these are procedures, on some macros. +The arguments are in form + +- NAME - TYPE + +The return value is in form + +- TYPE + ### Types Types are given as symbols, for example 'int8 or 'pointer. @@ -105,22 +111,23 @@ Types are given as symbols, for example 'int8 or 'pointer. Arguments: -- headers (list (string) ...) +- headers - (list string ...) - C headers of the library - For example (list "curl/curl.h") -- object-name (symbol) +- object-name - symbol - The name of the dynamic library file you want to load - Without the "lib" in front of it - Without the ".so" or ".dll" at the end -- addition-versions (list (string)...) +- addition-versions - (list string...) - For example (list ".0" ".1") -- addition-paths (list (string)...) +- addition-paths - (list string...) - Any additional paths you want to search for the library - For example (list "./mylibs") Returns: -- (object) Shared object, the type depends on the implementation +- object + - Shared object, the type depends on the implementation #### pffi-shared-object-load @@ -129,14 +136,17 @@ Returns: Arguments: -- headers (list (string) ...) Headers that need to be included -- 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" +- headers - (list string ...) + - Headers that need to be included + - 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" Returns: -- (object) Shared object, the type depends on the implementation +- object + - Shared object, the type depends on the implementation @@ -146,9 +156,141 @@ 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 or 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 +- scheme-name + - The name of the procedure used on scheme side +- shared-object - object + - The shared object + - Use pffi-shared-object-auto-load or 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 + +### pffi-size-of + +Get the size of type. + +Arguments: + +- type - symbol + - The type you want the size of + +Returns: + +- number + - The size of the given type + + +### pffi-pointer-allocate + +Allocates a pointer of given size. + +Arguments: + +- size - number + - The size of the pointer you want to allocate + +Returns: + +- object + - A pointer of given size + + +### pffi-pointer-null + +Create a null pointer. + +Returns: +- object + - Null pointer + +### pffi-string->pointer + +Arguments: + +- string-content - string + - The string you want to transform into pointer + +Returns: + +- object + - Pointer of the given string + + +### pffi-pointer->string + +Arguments: + +- pointer - object + - The pointer you want to transform to string + +Returns: + +- string + - String from the given pointer + +### pffi-pointer-free + +Arguments: + +- pointer - object + - The pointer you want to free + +### pffi-pointer? + +Arguments: + +- object - object + - The object you want to check wether it is a pointer or not + +Returns: + +- boolean + - Returns true if given object is pointer, otherwise false + + +### pffi-pointer-set! + +Arguments: + +- pointer - object + - The pointer you want to modify +- type - symbol + - The type of value that will be put into the pointer +- offset -number + - The location of the value inside the pointer + - For example: (+ (pffi-size-of 'int) (pffi-size-of 'pointer)) or 0 +- value - object + - The value to be placed into the object + +### pffi-pointer-get + +Arguments: + +- pointer - object + - The pointer you want to get the value from +- type - symbol + - The type of value you want to get + - For example: 'int +- offset - number + - The location of the value inside the pointer + - For example: (+ (pffi-size-of 'int) (pffi-size-of 'pointer)) or 0 + +Returns: + +- object + - The value in the poiner in the given offset as given type + +### pffi-pointer-deref + +Arguments: + +- pointer + - The pointer to dereference + +Returns: + +- object + - Whatever the pointer holds