[libvirt] [PATCH 1/7] Allow for multi-level inheritance of virObject classes

Daniel P. Berrange berrange at redhat.com
Mon Jan 14 17:10:32 UTC 2013


On Fri, Jan 11, 2013 at 04:17:20PM -0700, Eric Blake wrote:
> On 01/11/2013 05:13 AM, Daniel P. Berrange wrote:
> > From: "Daniel P. Berrange" <berrange at redhat.com>
> > 
> > Currently all classes must directly inherit from virObject.
> > This allows for arbitrarily deep hierarchy. There's not much
> > too this aside from chaining up the 'dispose' handlers from
> 
> s/too/to/
> 
> > each class & providing APIs to check types.
> > ---
> 
> > -virClassPtr virClassNew(const char *name,
> > +virClassPtr virClassNew(virClassPtr parent,
> > +                        const char *name,
> >                          size_t objectSize,
> >                          virObjectDisposeCallback dispose)
> >  {
> >      virClassPtr klass;
> >  
> > +    if (parent == NULL &&
> > +        STRNEQ(name, "virObject")) {
> > +        virReportInvalidNonNullArg(parent);
> > +        return NULL;
> 
> Would it have been any easier to let callers pass NULL when they want to
> have virObject as the default parent, instead of making all callers have
> to use virClassForObject()?  Then again, you've already touched
> everyone, so don't change the bikeshed color again.

Well 'NULL' needs to mean 'no parent' so we can initialize virObject,
so it felt wrong to also have it mean 'virObject as a parent' for every
other callers.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list