Skip to content
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

Generate generic builder setters for fields taking an objecttype #724

Merged
merged 1 commit into from
May 6, 2023

Conversation

MarijnS95
Copy link
Collaborator

We already do this for hand-written extension functions but can now also implement it for setters since vk_parse fields are available within the builder generator code: when a field refers to another field for setting its objecttype, that VkObjectType field setter is omitted and instead assigned when the object is set, based on a type generic that implements the Handle trait instead of an untyped u64.


Note that most of this diff is merely code motion: some necessary cleanups such as replacing tuples with infinitely-more-self-descriptive structs.

Copy link
Collaborator

@Ralith Ralith left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

@MarijnS95 MarijnS95 changed the title Generate templated builder setters for fields taking an objecttype Generate generic builder setters for fields taking an objecttype May 6, 2023
We already do this for hand-written extension functions but can now also
implement it for setters since `vk_parse` fields are available within
the builder generator code: when a field refers to another field for
setting its `objecttype`, that `VkObjectType` field setter is omitted
and instead assigned when the object is set, based on a type generic
that implements the `Handle` trait instead of an untyped `u64`.
@MarijnS95 MarijnS95 merged commit aa8f600 into master May 6, 2023
16 checks passed
@MarijnS95 MarijnS95 deleted the builders-object-trait branch May 6, 2023 18:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants