-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[SDL3] C++ headers & modules #9771
Comments
Please no lower-case |
I guess uppercase |
Feel free to submit a PR for this. |
Yo I feel like I can do this but I need to get more familiar with the code / project structure 👌 |
I'm pretty sure this can easily be solved by writing a parser that goes through all the file and generates an intermediate representation in json, which is then converted into a C++ module file. The parser can hugely simplify the process of generating bindings to other languages. This is the approach taken by both ImGui (see here ) and Raylib (see here ) to generate some kind of "API dump" in JSON/other format, which is then translated into the target language code. Finally, since by adopting this parser the target becomes larger than C++ bindings, I think it should be part of a separate repo that is only used by maintainers of bindings in other languages. |
@TerensTare |
I will try to write a set up a parser with minimal features that can be easily improved and come back with a PR. |
Since SDL3 is in development, I would like to propose that there should be some kind of C++ header generation. This would make using headers way more comfortable as a C++ user. I really like the way VulkanHpp was implemented.
On top of that SDL3 should have optional (by default off) C++ 20 Module support (just like VulkanHpp aswell). Much work has been done on the compiler and CMake side to make this as easy as possible (read (this article)[https://www.kitware.com/import-cmake-the-experiment-is-over/] for more).
I would really love to see this happen
Edit:
For good C++ adaptation I would expect the following:
Example:
enum class
:(some flags will have to be renamed because of clarity)
Example:
The text was updated successfully, but these errors were encountered: