girepository: Port GIBaseInfo to GTypeInstance

This adds more type safety to libgirepository, and allows
differentiating the `GIBaseInfo` derived types using the type system.

Two new derived types had to be added (previously they were just a
collection of helper methods which worked directly on a `GIBaseInfo` and
didn’t check types): `GICallbackInfo` and `GIUnresolvedInfo`.

Further cleanups and refactoring might be needed on this, but the core
of libgirepository now uses `GTypeInstance` and appears to still work
(it’s difficult to be entirely sure because there are no unit tests
yet).

Signed-off-by: Philip Withnall <pwithnall@gnome.org>

Helps: #3155
This commit is contained in:
Philip Withnall
2023-11-28 17:24:20 +00:00
parent cdb5ab0cd2
commit 52ac467426
25 changed files with 921 additions and 192 deletions

View File

@@ -34,6 +34,7 @@
#include <girepository/giarginfo.h>
#include <girepository/gibaseinfo.h>
#include <girepository/gicallableinfo.h>
#include <girepository/gicallbackinfo.h>
#include <girepository/giconstantinfo.h>
#include <girepository/gienuminfo.h>
#include <girepository/gifieldinfo.h>
@@ -48,6 +49,7 @@
#include <girepository/gitypelib.h>
#include <girepository/gitypes.h>
#include <girepository/giunioninfo.h>
#include <girepository/giunresolvedinfo.h>
#include <girepository/givfuncinfo.h>
G_BEGIN_DECLS