On 01/26/2012 11:54 AM, Hilko Bengen wrote:
* Richard W.M. Jones:
> var optargs = new Guestfs.AddDriveOpts ({readonly: true});
> g.add_drive_opts (filename, optargs);
>
> This awkward style is required because GObject Introspection doesn't
> support optional arguments.
This is really, really ugly. Couldn't one use some sort of list instead?
Something that could be translated to Javascript as
g.add_drive_opts (filename, [ Guestfs.AddDriveOpts.FORMAT, "raw" ] )
or even
g.add_drive_opts (filename, Guestfs.AddDriveOpts.FORMAT, "raw" )
would be much nicer.
We went round the houses on this one. The main advantage of the optargs
object is that it's typesafe. It's also quite a lot more concise than
the [ GUESTFS_VERYVERYVERYLONG_OPTIONNAME, "value" ] format as soon as
you've got 2 optional arguments.
Note that you can shorten the syntax further by declaring the optargs
object inline. Compare:
g.add_drive_opts (filename, [Guestfs.AddDriveOpts.FORMAT, "raw"])
with:
g.add_drive_opts (filename, new Guestfs.AddDriveOpts({format: "raw}))
There's barely any difference, and for 2 options the latter would be
much shorter.
Yes, it would be nicer to have proper optional arguments, but GObject
Introspection is constrained somewhat by being a meta-binding.
Matt
--
Matthew Booth, RHCA, RHCSS
Red Hat Engineering, Virtualisation Team
GPG ID: D33C3490
GPG FPR: 3733 612D 2D05 5458 8A8A 1600 3441 EA19 D33C 3490