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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list