about summary refs log tree commit diff stats
path: root/wrapperhelper/README.md
diff options
context:
space:
mode:
authorrajdakin <rajdakin@gmail.com>2024-09-08 16:43:16 +0200
committerGitHub <noreply@github.com>2024-09-08 16:43:16 +0200
commitc87a56ef37e34f2f239a8df9e4d08afd0334ddaf (patch)
tree50b4c7fc6a0cdc6e2c30f16ed1747cc28d6616a3 /wrapperhelper/README.md
parent2e04ff93cabdbdcef060ce5e40f544f4dd6f93bb (diff)
downloadbox64-c87a56ef37e34f2f239a8df9e4d08afd0334ddaf.tar.gz
box64-c87a56ef37e34f2f239a8df9e4d08afd0334ddaf.zip
[WRAPPERHELPER] Major enhancements in output quality, allow for generic type mapping (#1807)
Diffstat (limited to 'wrapperhelper/README.md')
-rw-r--r--wrapperhelper/README.md12
1 files changed, 6 insertions, 6 deletions
diff --git a/wrapperhelper/README.md b/wrapperhelper/README.md
index c2599cdf..65754036 100644
--- a/wrapperhelper/README.md
+++ b/wrapperhelper/README.md
@@ -31,9 +31,11 @@ The first file is a `C` file containing every declaration required. The second f
 
 The support file may contain pragma declarations of the form
 ```c
-#pragma wrappers explicit_simple TYPE
+#pragma wrappers type-letters c TYPE
 ```
-where `TYPE` is a `typedef` to a structure. This marks the structure pointed to by `TYPE` as "simple", which means that functions taking such structures are not required to be `GOM`-like.
+where `TYPE` is a `type-name`. This marks the *exact* type `TYPE` as being a complex type though with a conversion as `c` (which may be multiple characters). Meaning:
+- if a parameter has type `TYPE`, the character output will be `c`;
+- if a parameter has a pointer to `TYPE`, or a structure containing `TYPE`, the output will be a `GOM` function.
 
 System headers included (directly or indirectly) by the support file are overriden by the files in `include-fixed`.
 
@@ -94,9 +96,7 @@ This project only works for `box64`; more work is required for this to be compat
 
 Only native structures are read. This means that the current version of `wrapperhelper` does not detect an issue when a structure has different members or alignments in two different architectures.
 
-Structure letters (i.e. `S` for `struct _IO_FILE*`) are hard-coded. A pragma should be used instead (`#pragma wrappers type_letter IDENT type-name`, parsed as `PTOK_PRAGMA: Type is letter: <char>`, followed by `type-name`, followed by `PTOK_NEWLINE`).
-
-Conditionals in the `_private.h` files are ignored, except for taking only the negative branch. Manual cleanup of the output is required.
+No checking of signatures under `#ifdef`s is made.
 
 Line numbers are missing entirely. For most errors, the corresponding file is not written with the error message.
 
@@ -114,8 +114,8 @@ The following features are missing from the preprocessor:
 - Proper out-of-memory error handling
 
 The following features are missing from the parser:
-- `inline` and `_Noreturn`
 - `_Atomic(type-name)`
 - `_Alignas(type-name)` and `_Alignas(constant-expression)`
 - `(type-name){initializer-list}`
+- Old style function declarations
 - Function definitions are ignored, not parsed