summaryrefslogtreecommitdiffstats
path: root/libvirt/generator.pl
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2008-01-18 19:32:54 +0000
committerRichard W.M. Jones <rjones@redhat.com>2008-01-18 19:32:54 +0000
commitaee5f1b6aa2b80873a34de67727c40ad43cccca7 (patch)
treeef3e9f9a52b90ef00b2b24dad49ea0b8db00b3b0 /libvirt/generator.pl
parent43b894e0ef93f380dcd8b1b20a3cd6626a8f3b7d (diff)
downloadvirt-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-xlibvirt/generator.pl57
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"
}