[Libguestfs] example script for GObject
Matthew Booth
mbooth at redhat.com
Thu Jan 26 12:06:13 UTC 2012
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
More information about the Libguestfs
mailing list