[libvirt] [PATCH 07/11] util: convert virIdentity class to use GObject
Daniel P. Berrangé
berrange at redhat.com
Mon Sep 30 13:17:48 UTC 2019
On Mon, Sep 30, 2019 at 03:04:38PM +0200, Ján Tomko wrote:
> On Fri, Sep 27, 2019 at 06:17:29PM +0100, Daniel P. Berrangé wrote:
> > Converting from virObject to GObject is reasonably straightforward,
> > as illustrated by this patch for virIdentity
> >
>
> The change would be much easier to see if this patch did not contain
> the g_autofree changes and the removal of cleanup/error labels, which
> generate a lot of churn.
>
> > In the header file
> >
> > - Remove
> >
> > typedef struct _virIdentity virIdentity
> >
> > - Add
> >
> > #define VIR_TYPE_IDENTITY virIdentity_get_type ()
> > G_DECLARE_FINAL_TYPE (virIdentity, virIdentity, VIR, IDENTITY, GObject);
> >
> > Which provides the typedef we just removed, and class
> > declaration boilerplate and various other constants/macros.
> >
> > In the source file
> >
> > - Change 'virObject parent' to 'GObject parent' in the struct
> > - Remove the virClass variable and its initializing call
> > - Add
> >
> > G_DEFINE_TYPE(virIdentity, virIdentity, G_TYPE_OBJECT)
> >
> > which declares the instance & class constructor functions
> >
> > - Add an impl of the instance & class constructors
> > wiring up the finalize method to point to our dispose impl
> >
> > In all files
> >
> > - Replace VIR_AUTOUNREF(virIdentityPtr) with g_autoptr(virIdentity)
> >
>
> Is the idea to never mix VIR_ALLOC/VIR_AUTOFREE with g_alloc/g_auto*?
Functionally there shouldn't be any problem with mixing the cleanup
/ allocator APIs..
> If not, this step could be separated by temporarily setting
> virObjectUnref as the cleanup function for g_autoptr.
I'll have more of a think about separating the changes.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
More information about the libvir-list
mailing list