[Libguestfs] [PATCH] php: add arginfo to php bindings
Richard W.M. Jones
rjones at redhat.com
Wed Jun 15 21:30:23 UTC 2022
On Wed, Jun 15, 2022 at 05:06:56PM -0400, Geoff Amey wrote:
> Starting with PHP8, arginfo is mandatory for PHP extensions. This patch
> updates the generator for the PHP bindings to generate the arginfo
> structures, using the Zend API macros. Only basic arginfo is added,
> without full documentation of argument and return types, in order to
> ensure compatibility with as many versions of PHP as possible.
Looks good, I have pushed it:
https://github.com/libguestfs/libguestfs/commit/ec27979398b0871c1a3e0e244849f8435c9c9a8d
I made a small change to .gitignore to ignore the new guestfs_php.dep
file.
Thanks,
Rich.
> generator/php.ml | 37 ++++++++++++++++++++++++++++++++++---
> 1 file changed, 34 insertions(+), 3 deletions(-)
>
> diff --git a/generator/php.ml b/generator/php.ml
> index 5c7ef48e8..acdc7b877 100644
> --- a/generator/php.ml
> +++ b/generator/php.ml
> @@ -130,6 +130,37 @@ typedef size_t guestfs_string_length;
> typedef int guestfs_string_length;
> #endif
>
> +/* Declare argument info structures */
> +ZEND_BEGIN_ARG_INFO_EX(arginfo_create, 0, 0, 0)
> +ZEND_END_ARG_INFO()
> +
> +ZEND_BEGIN_ARG_INFO_EX(arginfo_last_error, 0, 0, 1)
> + ZEND_ARG_INFO(0, g)
> +ZEND_END_ARG_INFO()
> +
> +";
> + List.iter (
> + fun { name = shortname; style = ret, args, optargs; } ->
> + let len = List.length args in
> + pr "ZEND_BEGIN_ARG_INFO_EX(arginfo_%s, 0, 0, %d)\n" shortname (len + 1);
> + pr " ZEND_ARG_INFO(0, g)\n";
> + List.iter (
> + function
> + | BufferIn n | Bool n | Int n | Int64 n | OptString n
> + | Pointer(_, n) | String (_, n) | StringList (_, n) ->
> + pr " ZEND_ARG_INFO(0, %s)\n" n
> + ) args;
> +
> + List.iter (
> + function
> + | OBool n | OInt n | OInt64 n | OString n | OStringList n ->
> + pr " ZEND_ARG_INFO(0, %s)\n" n
> + ) optargs;
> + pr "ZEND_END_ARG_INFO()\n\n";
> + ) (actions |> external_functions |> sort);
> +
> + pr "
> +
> /* Convert array to list of strings.
> * http://marc.info/?l=pecl-dev&m=112205192100631&w=2
> */
> @@ -204,12 +235,12 @@ PHP_MINIT_FUNCTION (guestfs_php)
> }
>
> static zend_function_entry guestfs_php_functions[] = {
> - PHP_FE (guestfs_create, NULL)
> - PHP_FE (guestfs_last_error, NULL)
> + PHP_FE (guestfs_create, arginfo_create)
> + PHP_FE (guestfs_last_error, arginfo_last_error)
> ";
>
> List.iter (
> - fun { name } -> pr " PHP_FE (guestfs_%s, NULL)\n" name
> + fun { name } -> pr " PHP_FE (guestfs_%s, arginfo_%s)\n" name name
> ) (actions |> external_functions |> sort);
>
> pr " { NULL, NULL, NULL }
> --
> 2.25.1
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW
More information about the Libguestfs
mailing list