From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Rob Hoes <rob.hoes@citrix.com>
Cc: "xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH v2 18/30] libxl: ocaml: use the "string option" type for IDL strings
Date: Thu, 13 Jun 2013 16:58:59 +0100 [thread overview]
Message-ID: <51B9EC43.2030000@citrix.com> (raw)
In-Reply-To: <1371137112-16692-19-git-send-email-rob.hoes@citrix.com>
On 13/06/13 16:25, Rob Hoes wrote:
> The libxl IDL is based on C type "char *", and therefore "strings" can
> by NULL, or be an actual string. In ocaml, it is common to encode such
"can be NULL" perhaps?
~Andrew
> things as option types.
>
> Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
> ---
> tools/ocaml/libs/xl/genwrap.py | 2 +-
> tools/ocaml/libs/xl/xenlight_stubs.c | 21 +++++++++++++++++++++
> 2 files changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/tools/ocaml/libs/xl/genwrap.py b/tools/ocaml/libs/xl/genwrap.py
> index f0d4885..d967ee6 100644
> --- a/tools/ocaml/libs/xl/genwrap.py
> +++ b/tools/ocaml/libs/xl/genwrap.py
> @@ -8,7 +8,7 @@ import idl
> builtins = {
> "bool": ("bool", "%(c)s = Bool_val(%(o)s)", "Val_bool(%(c)s)" ),
> "int": ("int", "%(c)s = Int_val(%(o)s)", "Val_int(%(c)s)" ),
> - "char *": ("string", "%(c)s = dup_String_val(%(o)s)", "caml_copy_string(%(c)s)"),
> + "char *": ("string option", "%(c)s = String_option_val(%(o)s)", "Val_string_option(%(c)s)"),
> "libxl_domid": ("domid", "%(c)s = Int_val(%(o)s)", "Val_int(%(c)s)" ),
> "libxl_devid": ("devid", "%(c)s = Int_val(%(o)s)", "Val_int(%(c)s)" ),
> "libxl_defbool": ("bool option", "%(c)s = Defbool_val(%(o)s)", "Val_defbool(%(c)s)" ),
> diff --git a/tools/ocaml/libs/xl/xenlight_stubs.c b/tools/ocaml/libs/xl/xenlight_stubs.c
> index 7b7d696..e801643 100644
> --- a/tools/ocaml/libs/xl/xenlight_stubs.c
> +++ b/tools/ocaml/libs/xl/xenlight_stubs.c
> @@ -371,6 +371,27 @@ static value Val_hwcap(libxl_hwcap *c_val)
> CAMLreturn(hwcap);
> }
>
> +static value Val_string_option(const char *c_val)
> +{
> + CAMLparam0();
> + CAMLlocal2(tmp1, tmp2);
> + if (c_val) {
> + tmp1 = caml_copy_string(c_val);
> + tmp2 = Val_some(tmp1);
> + CAMLreturn(tmp2);
> + }
> + else
> + CAMLreturn(Val_none);
> +}
> +
> +static char *String_option_val(value v)
> +{
> + char *s = NULL;
> + if (v != Val_none)
> + s = dup_String_val(Some_val(v));
> + return s;
> +}
> +
> #include "_libxl_types.inc"
>
> #define _STRINGIFY(x) #x
next prev parent reply other threads:[~2013-06-13 15:58 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-13 15:24 libxl: ocaml: improve the bindings Rob Hoes
2013-06-13 15:24 ` [PATCH v2 01/30] libxl: Add LIBXL_SHUTDOWN_REASON_UNKNOWN Rob Hoes
2013-06-13 15:24 ` [PATCH v2 02/30] libxl: idl: allow KeyedUnion members to be empty Rob Hoes
2013-06-13 15:24 ` [PATCH v2 03/30] libxl: idl: add domain_type field to libxl_dominfo struct Rob Hoes
2013-06-13 15:24 ` [PATCH v2 04/30] libxl: idl: complete some enums in the IDL with their defaults Rob Hoes
2013-06-13 15:24 ` [PATCH v2 05/30] libxl: ocaml: fix code intended to output comments before definitions Rob Hoes
2013-06-13 15:24 ` [PATCH v2 06/30] libxl: ocaml: support for Arrays in bindings generator Rob Hoes
2013-06-13 15:24 ` [PATCH v2 07/30] libxl: ocaml: avoid reserved words in type and field names Rob Hoes
2013-06-13 15:24 ` [PATCH v2 08/30] libxl: ocaml: support for KeyedUnion in the bindings generator Rob Hoes
2013-06-13 15:24 ` [PATCH v2 09/30] libxl: ocaml: add some more builtin types Rob Hoes
2013-06-13 15:24 ` [PATCH v2 10/30] libxc: ocaml: add simple binding for xentoollog (output only) Rob Hoes
2013-06-13 15:24 ` [PATCH v2 11/30] libxl: ocaml: allocate a long lived libxl context Rob Hoes
2013-06-13 15:24 ` [PATCH v2 12/30] libxl: ocaml: switch all functions over to take a context Rob Hoes
2013-06-13 15:24 ` [PATCH v2 13/30] libxl: ocaml: propagate the libxl return error code in exceptions Rob Hoes
2013-06-13 15:24 ` [PATCH v2 14/30] libxl: ocaml: make Val_defbool GC-proof Rob Hoes
2013-06-13 15:24 ` [PATCH v2 15/30] libxl: ocaml: add domain_build/create_info/config and events to the bindings Rob Hoes
2013-06-13 15:24 ` [PATCH v2 16/30] libxl: ocaml: add META to list of generated files in Makefile Rob Hoes
2013-06-13 15:24 ` [PATCH v2 17/30] libxl: ocaml: fix the handling of enums in the bindings generator Rob Hoes
2013-06-13 15:25 ` [PATCH v2 18/30] libxl: ocaml: use the "string option" type for IDL strings Rob Hoes
2013-06-13 15:58 ` Andrew Cooper [this message]
2013-06-13 15:25 ` [PATCH v2 19/30] libxl: ocaml: add xen_console_read Rob Hoes
2013-06-13 15:25 ` [PATCH v2 20/30] libxl: ocaml: add dominfo_list and dominfo_get Rob Hoes
2013-06-13 15:25 ` [PATCH v2 21/30] libxl: ocaml: implement some simple tests Rob Hoes
2013-06-13 15:25 ` [PATCH v2 22/30] libxl: ocaml: event management Rob Hoes
2013-06-13 15:25 ` [PATCH v2 23/30] libxl: ocaml: allow device operations to be called asynchronously Rob Hoes
2013-06-13 15:25 ` [PATCH v2 24/30] libxl: ocaml: add NIC helper functions Rob Hoes
2013-06-13 15:25 ` [PATCH v2 25/30] libxl: ocaml: add PCI device " Rob Hoes
2013-06-13 15:25 ` [PATCH v2 26/30] libxl: ocaml: add disk and cdrom " Rob Hoes
2013-06-13 15:25 ` [PATCH v2 27/30] libxl: ocaml: add VM lifecycle operations Rob Hoes
2013-06-13 15:25 ` [PATCH v2 28/30] libxl: ocaml: in send_debug_keys, clean up before raising exception Rob Hoes
2013-06-13 15:25 ` [PATCH v2 29/30] libxl: ocaml: provide defaults for libxl types Rob Hoes
2013-06-13 15:25 ` [PATCH v2 30/30] libxl: ocaml: use CAMLlocal1 macro rather than value-type in auto-generated C-code Rob Hoes
2013-08-22 10:21 ` libxl: ocaml: improve the bindings Rob Hoes
2013-08-22 10:28 ` Ian Campbell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51B9EC43.2030000@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=rob.hoes@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.