Il 10/01/2014 12:28, Igor Mammedov ha scritto: >> > Regarding the "overloading" of the realize name, I was against it in >> > previous discussion and I still am (I was in favor of something like >> > UserCreatable and naming the method "complete" or "construct"), but I >> > didn't want to sound too negative. :) > issue with naming interface as CommandLine or UserCreatable is that, it could > be used not only by CLI/user but also it could be used internally. For example > see "[PATCH 3/5] virtio_rng: use object_realize interface instead of calling > backend API", where default backend is created by frontend.
I see. Yes, with something like UserCreatable, you would not have that patch. Instead, UserCreatable's complete method would redirect to the backend-specific API. BTW, note that UserCreatable's complete method should take a UserCreatable (or whatever the name is) as the first parameter, not an Object. This would affect that patch, too. > how about naming it for what it is: object-2nd-stage-init That would also work for me (TwoStageConstructable or something like that). One advantage of UserCreatable is that -object/object_add could check for it and reject creation of objects that are not meant for command-line instantiation. You could do the same for TwoStageConstructable, but it would look weird to define an object as two-stage constructable with an empty complete method. With a name like UserCreatable, instead, it would be quite natural to do this: void user_creatable_complete(UserCreatable *uc, Error **errp) { UserCreatableClass *ucc = USER_CREATABLE_GET_CLASS(uc); if (ucc->complete) { ucc->complete(uc, errp); } } > neutral object-complementary-interface that could be extended later with > another methods No, we don't want a hodge-podge interface that's basically UserCreatable except in the name. :) Paolo