diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2008-01-18 19:32:54 +0000 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2008-01-18 19:32:54 +0000 |
commit | aee5f1b6aa2b80873a34de67727c40ad43cccca7 (patch) | |
tree | ef3e9f9a52b90ef00b2b24dad49ea0b8db00b3b0 /libvirt/generator.pl | |
parent | 43b894e0ef93f380dcd8b1b20a3cd6626a8f3b7d (diff) | |
download | virt-top-aee5f1b6aa2b80873a34de67727c40ad43cccca7.tar.gz virt-top-aee5f1b6aa2b80873a34de67727c40ad43cccca7.tar.xz virt-top-aee5f1b6aa2b80873a34de67727c40ad43cccca7.zip |
More bindings autogenerated, more coverage of storage API.
Diffstat (limited to 'libvirt/generator.pl')
-rwxr-xr-x | libvirt/generator.pl | 57 |
1 files changed, 51 insertions, 6 deletions
diff --git a/libvirt/generator.pl b/libvirt/generator.pl index a54bd94..fa7f5bc 100755 --- a/libvirt/generator.pl +++ b/libvirt/generator.pl @@ -51,6 +51,8 @@ my @functions = ( sig => "conn, int : string array", weak => 1 }, { name => "virConnectGetCapabilities", sig => "conn : string" }, + { name => "virDomainLookupByName", sig => "conn, string : dom" }, + { name => "virDomainLookupByUUIDString", sig => "conn, string : dom" }, { name => "virDomainGetName", sig => "dom : static string" }, { name => "virDomainGetOSType", sig => "dom : string" }, { name => "virDomainGetXMLDesc", sig => "dom, 0 : string" }, @@ -61,12 +63,18 @@ my @functions = ( { name => "virDomainUndefine", sig => "dom : unit" }, { name => "virDomainCreate", sig => "dom : unit" }, + { name => "virNetworkLookupByName", sig => "conn, string : net" }, + { name => "virNetworkLookupByUUIDString", sig => "conn, string : net" }, { name => "virNetworkGetName", sig => "net : static string" }, { name => "virNetworkGetXMLDesc", sig => "net, 0 : string" }, { name => "virNetworkGetBridgeName", sig => "net : string" }, { name => "virNetworkUndefine", sig => "net : unit" }, { name => "virNetworkCreate", sig => "net : unit" }, + { name => "virStoragePoolLookupByName", + sig => "conn, string : pool", weak => 1 }, + { name => "virStoragePoolLookupByUUIDString", + sig => "conn, string : pool", weak => 1 }, { name => "virStoragePoolGetName", sig => "pool : static string", weak => 1 }, { name => "virStoragePoolGetXMLDesc", @@ -80,6 +88,12 @@ my @functions = ( { name => "virStoragePoolRefresh", sig => "pool, 0 : string", weak => 1 }, + { name => "virStorageVolLookupByName", + sig => "conn, string : vol", weak => 1 }, + { name => "virStorageVolLookupByKey", + sig => "conn, string : vol", weak => 1 }, + { name => "virStorageVolLookupByPath", + sig => "conn, string : vol", weak => 1 }, { name => "virStorageVolGetXMLDesc", sig => "pool, 0 : string", weak => 1 }, { name => "virStorageVolGetPath", @@ -112,17 +126,12 @@ my @unimplemented = ( "ocaml_libvirt_storage_pool_destroy", "ocaml_libvirt_storage_pool_define_xml", "ocaml_libvirt_storage_pool_create_xml", - "ocaml_libvirt_storage_pool_lookup_by_uuid_string", "ocaml_libvirt_storage_pool_lookup_by_uuid", - "ocaml_libvirt_storage_pool_lookup_by_name", "ocaml_libvirt_storage_vol_free", "ocaml_libvirt_storage_vol_destroy", "ocaml_libvirt_storage_vol_create_xml", "ocaml_libvirt_storage_vol_get_info", "ocaml_libvirt_pool_of_volume", - "ocaml_libvirt_storage_vol_lookup_by_path", - "ocaml_libvirt_storage_vol_lookup_by_key", - "ocaml_libvirt_storage_vol_lookup_by_name", "ocaml_libvirt_job_cancel", "ocaml_libvirt_job_get_network", "ocaml_libvirt_job_get_domain", @@ -193,7 +202,7 @@ sub camel_case_to_underscores { my $name = shift; - $name =~ s/([A-Z][a-z]+|XML|URI|OS)/$1,/g; + $name =~ s/([A-Z][a-z]+|XML|URI|OS|UUID)/$1,/g; my @subs = split (/,/, $name); @subs = map { lc($_) } @subs; join "_", @subs @@ -242,6 +251,10 @@ sub gen_c_signature } elsif ($sig =~ /^(\w+) : unit$/) { my $c_type = short_name_to_c_type ($1); "int $c_name ($c_type $1 dom)" + } elsif ($sig =~ /^(\w+), string : (\w+)$/) { + my $c_type = short_name_to_c_type ($1); + my $c_ret_type = short_name_to_c_type ($2); + "$c_ret_type $c_name ($c_type $1 dom)" } else { die "unknown signature $sig" } @@ -267,6 +280,8 @@ sub gen_arg_names ( "$1v" ) } elsif ($sig =~ /^(\w+) : unit$/) { ( "$1v" ) + } elsif ($sig =~ /^(\w+), string : (\w+)$/) { + ( "$1v", "strv" ) } else { die "unknown signature $sig" } @@ -295,6 +310,21 @@ sub gen_unpack_args } } +sub gen_pack_result +{ + local $_ = shift; + + if ($_ eq "dom") { + "rv = Val_domain (r, connv);" + } elsif ($_ eq "net") { + "rv = Val_network (r, connv);" + } elsif ($_ eq "pool") { + "rv = Val_pool (r, connv);" + } elsif ($_ eq "vol") { + "rv = Val_volume (r, connv);" + } +} + sub gen_c_code { my $sig = shift; @@ -404,6 +434,21 @@ sub gen_c_code CAMLreturn (Val_unit); " + } elsif ($sig =~ /^(\w+), string : (\w+)$/) { + my $c_ret_type = short_name_to_c_type ($2); + "\ + CAMLlocal1 (rv); + " . gen_unpack_args ($1) . " + char *str = String_val (strv); + $c_ret_type r; + + NONBLOCKING (r = $c_name ($1, str)); + CHECK_ERROR (!r, conn, \"$c_name\"); + + " . gen_pack_result ($2) . " + + CAMLreturn (rv); +" } else { die "unknown signature $sig" } |