From 67d59d015306f69da4dfff70d818f0f55855ed68 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sat, 29 Dec 2012 12:48:23 +0000 Subject: [PATCH] haskell: Document current state of Haskell bindings. --- generator/haskell.ml | 4 ++-- src/guestfs.pod | 49 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/generator/haskell.ml b/generator/haskell.ml index 18187e1c9..21b251d1e 100644 --- a/generator/haskell.ml +++ b/generator/haskell.ml @@ -31,8 +31,8 @@ open Structs let rec generate_haskell_hs () = generate_header HaskellStyle LGPLv2plus; - (* XXX We only know how to generate partial FFI for Haskell - * at the moment. Please help out! + (* See guestfs(3)/Haskell for limitations of the current Haskell + * bindings. Please help out! XXX *) let can_generate name style = match name with diff --git a/src/guestfs.pod b/src/guestfs.pod index ff821099d..11622a278 100644 --- a/src/guestfs.pod +++ b/src/guestfs.pod @@ -910,9 +910,52 @@ available. See the C directory in the source. =item B -This is the only language binding that is working but incomplete. -Only calls which return simple integers have been bound in Haskell, -and we are looking for help to complete this binding. +This language binding is working but incomplete: + +=over 4 + +=item * + +Functions with optional arguments are not bound. Implementing +optional arguments in Haskell seems to be very complex. + +=item * + +Events are not bound. + +=item * + +Functions with the following return types are not bound: + +=over 4 + +=item * + +Any function returning a struct. + +=item * + +Any function returning a lists of structs. + +=item * + +A few functions that return fixed length buffers (specifically ones +declared C in the generator). + +=item * + +A tiny number of obscure functions that return constant strings +(specifically ones declared C in the generator). + +=back + +=item * + +The functions L and L are not +bound, because these names conflict with C and +C. + +=back =item B