Proof of concept for autogenerating the C API for expressions #6291
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.
This just handles child expressions and vectors of them, but hopefully shows what can be done here.
For example:
Those few lines take the ID of a class and the field name of that class, where the field is a vector of children, such as
Call
which has theoperands
list of values we send in the call. It generates this:The same code also generates proper code for all other vector fields like that, here is a sample (including non-vector fields too):
All that is autogenerated. The proof of concept here that generates API calls for children and vectors of them emits 139 bindings so far.
The benefit is that after writing stuff like the 4 lines at the top of this comment then we can autogenerate all relevant bindings automatically with no manual work per class or per field. And whenever we add new classes we can add support for them by just running the tool, with no manual work at all.
We could similarly autogenerate other bindings perhaps, like the JS API and others.