1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-14 02:37:37 +00:00
serenity/Userland/Libraries/LibIDL
Sam Atkins 0d2d5ba02c LibIDL: Implement EffectiveOverloadSet
This requires a little explanation. The overload resolution algorithm,
where this is used, repeatedly has steps like this:

> Otherwise: if V is a platform object, and there is an entry in S that
> has one of the following types at position i of its type list,
>  - an interface type that V implements
>  - object
>  - a nullable version of any of the above types
>  - an annotated type whose inner type is one of the above types
>  - a union type, nullable union type, or annotated union type that has
>    one of the above types in its flattened member types
> then remove from S all other entries.

So, the API here tries to match that. We save the matching entry when
checking through them and then use that in `remove_all_other_entries()`.

Removing all those entries when all we actually care about is looking at
that one matching entry feels silly, but sticking to the spec is more
important while things are still half-implemented. :^)
2022-09-17 21:27:17 +02:00
..
CMakeLists.txt LibIDL+WrapperGenerator: Make it easier to work with IDL::Type classes 2022-09-17 21:27:17 +02:00
IDLParser.cpp LibIDL+WrapperGenerator: Make it easier to work with IDL::Type classes 2022-09-17 21:27:17 +02:00
IDLParser.h LibIDL+WrapperGenerator: Move IDL code into a library 2022-09-17 21:27:17 +02:00
Types.cpp LibIDL: Implement EffectiveOverloadSet 2022-09-17 21:27:17 +02:00
Types.h LibIDL: Implement EffectiveOverloadSet 2022-09-17 21:27:17 +02:00