haskell-gi-0.26.17: Generate Haskell bindings for GObject Introspection capable libraries

Safe Haskell | None
Language | Haskell2010

Data.GI.CodeGen.Fixups

Description

Various fixups in the introspection data.

Synopsis

- dropMovedItems :: API -> Maybe API
- guessPropertyNullability :: (Name, API) -> (Name, API)
- detectGObject :: (Name, API) -> (Name, API)
- dropDuplicatedFields :: (Name, API) -> (Name, API)
- checkClosureDestructors :: (Name, API) -> (Name, API)
- fixClosures :: (Name, API) -> (Name, API)
- fixCallbackUserData :: (Name, API) -> (Name, API)
- fixSymbolNaming :: (Name, API) -> (Name, API)

# Documentation

dropMovedItems :: API -> Maybe API Source #

Remove functions and methods annotated with "moved-to".

guessPropertyNullability :: (Name, API) -> (Name, API) Source #

GObject-introspection does not currently support nullability annotations, so we try to guess the nullability from the nullability annotations of the curresponding get/set methods, which in principle should be reliable.

detectGObject :: (Name, API) -> (Name, API) Source #

Not every interface that provides signals/properties is marked as requiring GObject, but this is necessarily the case, so fix the introspection data accordingly.

dropDuplicatedFields :: (Name, API) -> (Name, API) Source #

Some libraries include duplicated flags by mistake, drop those.

checkClosureDestructors :: (Name, API) -> (Name, API) Source #

Sometimes arguments are marked as being a user_data destructor, but there is no associated user_data argument. In this case we drop the annotation.

fixClosures :: (Name, API) -> (Name, API) Source #

Closures are often incorrectly assigned, with the closure annotation on the callback, instead of in the closure (user_data) parameter itself. The following makes sure that things are as they should.

fixCallbackUserData :: (Name, API) -> (Name, API) Source #

The last argument of callbacks is often a `user_data` argument, but currently gobject-introspection does not have an annotation representing this. This is generally OK, since the gir generator will mark these arguments as `(closure)` if they are named `user_data`, and we do the right things in this case, but recently there has been a push to "fix" these annotations by removing them without providing any replacement, which breaks the bindings. See https://gitlab.gnome.org/GNOME/gobject-introspection/-/issues/450 Here we try to guess which arguments in callbacks are user_data arguments.

fixSymbolNaming :: (Name, API) -> (Name, API) Source #

Some symbols have names that are not valid Haskell identifiers, fix that here.