On Thu, Feb 21, 2008 at 10:21:09PM +0000, Daniel P. Berrange wrote:
On Thu, Feb 21, 2008 at 05:13:51PM -0500, Daniel Veillard wrote:
> On Thu, Feb 21, 2008 at 08:56:17PM +0000, Richard W.M. Jones wrote:
> > This just adds the four new functions to the public API.
> [...]
> > +/**
> > + * virNetworkDHCPHostMapping:
> > + *
> > + * hostname mappings are returned by virNetworkListDHCPHostMapping.
> > + */
> > +typedef struct _virNetworkDHCPHostMapping {
> > + char *hwaddr;
> > + char *ipaddr;
> > + char *hostname;
> > +} virNetworkDHCPHostMapping;
> > +
> > +typedef virNetworkDHCPHostMapping *virNetworkDHCPHostMappingPtr;
> > +
> [...]
> > +int virNetworkListDHCPHostMappings
> > + (virNetworkPtr network,
> > + virNetworkDHCPHostMappingPtr *const mappings,
> > + int maxmappings);
> > +int virNetworkFreeDHCPHostMappings
> > + (virNetworkDHCPHostMappingPtr *const
mappings,
> > + int maxmappings);
>
> Hum, do we really need to expose this structure at the API level, since we
> use it only for listing. Since everything is provided as strings why not
> use something like
>
> int virNetworkListDHCPHostMappings (virNetworkPtr network,
> int maxmappings,
> char **hwaddrtab,
> char **ipaddrtab,
> char **hostnametab);
>
> This also avoids the free function too, same functionality, quite a simpler
> interface.
Simpler for who ? Apps using this data now have to pass around a whole
bunch of pointers, instead of a single virNetworkDHCPHostMapping. When
you map this API into higher level languages a struct is also going to be
a much nicer thing to represent.
if the struct was a simpler representation it would be used for Add too,
I don't think it's the case. Maybe the 3 arrays is not the nicest but
defining a public structure holding 3 strings feels strange to me,
especially when in the other place we use the 3 strings directly.
Having a deallocator but no allocator function looks strange to me too.
Daniel
--
Red Hat Virtualization group
http://redhat.com/virtualization/
Daniel Veillard | virtualization library
http://libvirt.org/
veillard(a)redhat.com | libxml GNOME XML XSLT toolkit
http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine
http://rpmfind.net/