Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR represents the final solution for auto-generating bindings as referenced in #132.
I must admit that I am not entirely satisfied with the implementation, but it has taken too long (2 years, sheeesh...), and we need to move forward. Initially, I aimed to fully auto-generate the bindings. However, due to complexities, the implementation got delayed. Therefore, I opted for a compromise. Part of the code can be fully auto-generated, which is very convenient for transferring enum objects. The rest is generated through corresponding declarations.
Key Points:
generateApi
task for Gradle takes Java code from themain
folder and generates native code and the code that calls it. The result is placed in thegenerated
folder.generateAst
command.Detailed documentation on how to work with the auto-generation code will be provided in the future.
Examples
Some examples of how API generation changed the way of creating binding.
ImGui (partial example)
Before
After
Result
ImGuiWindowFlags
Before
After
Result
ImGuiIO (partial example)
Before
After
Result
Type of change
Related issues