Skip to content

gir: Identify type/gpointer types

Emmanuele Bassi requested to merge issue-110 into main

When using out/in-out arguments in signals, the C type assigned is derived from G_TYPE_POINTER (so: gpointer), but the type name is typically overridden via a (type) annotation. This produces type definitions like:

<type name="gint" c:type="gpointer"/>

Since the C type is gpointer, we use the type name when looking up the ast.Type in the GIR parser, and that usually ends up giving use a type for the integral type, instead of a proper pointer type.

To avoid that, we check if the type definition takes a generic pointer as the C type, and the type name is an integral type, and tweak the query parameters for the types LUT.

Fixes: #110 (closed)

Merge request reports