
On Tue, Dec 04, 2007 at 10:46:50AM -0500, Daniel Veillard wrote:
On Tue, Dec 04, 2007 at 12:57:39PM +0000, Richard W.M. Jones wrote:
Daniel P. Berrange wrote:
virConnectPtr virConnectOpenAuth (const char *name, virConnectAuthPtr auth, int flags);
I'm a fan of callers passing in the size of the structure (as they see it). Allows the structure to be expanded in future, and if done right can allow both forwards and backwards compatibility.
cf: http://www.libvirt.org/html/libvirt-libvirt.html#virDomainInterfaceStats
Hum, honnestly, that's not my preferred way. If you really think there should be room for expansion, I would either: - add a version number to the structure and allocator/destructor functions as part of the API (prefered)
This adds more complexity and the single sizeof(*auth) param IMHO.
- add padding at tyhe end of the structure which could allow a future growth
adding the size of the structure as the argument moves the complexity away from the library implementor to the library user,
It doesn't really - the user just has to add sizeof(*auth) as an arg and all the rest of the complexity is in the library internals. In fact it doesn't need to add any complexity, because we could make it a compile time macro #define virConnectOpenAuth(name,auth,flags) virConnectOpenAuth(name,auth,sizeof(*auth),flags) Dan -- |=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=| |=- Perl modules: http://search.cpan.org/~danberr/ -=| |=- Projects: http://freshmeat.net/~danielpb/ -=| |=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|