On Thu, Apr 20, 2023 at 04:04:58PM +0200, Laszlo Ersek wrote:
> Change the optional "parens" parameter of "print_arg_list" from bool to a
> new union type. The new union type has three data constructors, NoParens
> (matching the previous "false" value), ParensSameLine (matching the
> previous "true" value), and a third constructor called "ParensNewLine",
> which wraps an "int". [ParensNewLine n] stands for the following
> formatting construct (with wrapping):
> 
> > ret_type foobar (
> >            type1 param1, type2 param2, type3 param3, type4 param4,
> >            type5 param5
> >          );
> > <---n--->

I would have called it ParensNewLineWithIndent, and I would
have called this:

> +type args_style = NoParens | ParensSameLine | ParensNewLine of int

parens_style or parens_t just to tie it back to the only parameter
where it is used.

> +let rec print_arg_list ?(wrap = false) ?maxcol ?handle ?types
> +          ?(parens = ParensSameLine) ?closure_style args optargs =
> +  (match parens with
> +   | NoParens -> ()
> +   | ParensSameLine -> pr "("
> +   | ParensNewLine indent ->
> +       pr "(\n";
> +       for i = 0 to indent + 2 - 1 do
> +         pr " "
> +       done

libguestfs common/mlstdutils/std_utils.ml has a "spaces" function
which might be worth grabbing for this.  The license is compatible
enough, and if not as author I give you permission.

>    if wrap then
>      pr_wrap ?maxcol ','
>        (fun () -> print_arg_list' ?handle ?types ?closure_style args optargs)
>    else
>      print_arg_list' ?handle ?types ?closure_style args optargs;
> -  if parens then pr ")"
> +  (match parens with
> +   | NoParens -> ()
> +   | ParensSameLine -> pr ")"
> +   | ParensNewLine indent ->
> +       pr "\n";
> +       for i = 0 to indent - 1 do
> +         pr " "
> +       done;
> +       pr ")"
> +  )

& here.

The rest looks good to me.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-top is 'top' for virtual machines.  Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top
_______________________________________________
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs

Reply via email to