[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] libxl: fix generating array of enums in getypes.py



On Mon, Oct 2, 2017 at 4:18 PM, Oleksandr Grytsov <al1img@xxxxxxxxx> wrote:
> On Mon, Oct 2, 2017 at 3:02 PM, Wei Liu <wei.liu2@xxxxxxxxxx> wrote:
>> On Fri, Sep 29, 2017 at 04:49:23PM +0300, Oleksandr Grytsov wrote:
>>> From: Oleksandr Grytsov <oleksandr_grytsov@xxxxxxxx>
>>>
>>> Enum always uses "x" value as input argument. In
>>> case of enum array "t" argument should be passed.
>>>
>>> Signed-off-by: Oleksandr Grytsov <oleksandr_grytsov@xxxxxxxx>
>>
>> Checking parent doesn't seem to be necessary. We already have "w" which
>> is passed by the higher level.
>>
>> Can you try the following patch?
>>
>> From c451e88dc64febbbea835563eb3347cbc24874ce Mon Sep 17 00:00:00 2001
>> From: Wei Liu <wei.liu2@xxxxxxxxxx>
>> Date: Mon, 2 Oct 2017 12:48:28 +0100
>> Subject: [PATCH] libxl/gentypes: fix generating array of enums
>>
>> There is no reason to hardcode "x" in code. Use "w" which is passed
>> by the higher level.
>>
>> This change requires us to allow "x" to be unused so that the
>> top-level enum parse_json functions continue to compile.
>>
>> Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
>> ---
>>  tools/libxl/gentypes.py | 6 +++---
>>  1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/tools/libxl/gentypes.py b/tools/libxl/gentypes.py
>> index 76aca76aaa..88e5c5f30e 100644
>> --- a/tools/libxl/gentypes.py
>> +++ b/tools/libxl/gentypes.py
>> @@ -432,7 +432,7 @@ def libxl_C_type_parse_json(ty, w, v, indent = "    ", 
>> parent = None, discrimina
>>      s = ""
>>      if parent is None:
>>          s += "int rc = 0;\n"
>> -        s += "const libxl__json_object *x = o;\n"
>> +        s += "const libxl__json_object *x __attribute__((__unused__)) = 
>> o;\n"
>>
>>      if isinstance(ty, idl.Array):
>>          if parent is None:
>> @@ -467,11 +467,11 @@ def libxl_C_type_parse_json(ty, w, v, indent = "    ", 
>> parent = None, discrimina
>>              raise Exception("Only KeyedUnion can have discriminator")
>>          s += "{\n"
>>          s += "    const char *enum_str;\n"
>> -        s += "    if (!libxl__json_object_is_string(x)) {\n"
>> +        s += "    if (!libxl__json_object_is_string(%s)) {\n" % w
>>          s += "        rc = -1;\n"
>>          s += "        goto out;\n"
>>          s += "    }\n"
>> -        s += "    enum_str = libxl__json_object_get_string(x);\n"
>> +        s += "    enum_str = libxl__json_object_get_string(%s);\n" % w
>>          s += "    rc = %s_from_string(enum_str, %s);\n" % (ty.typename, 
>> ty.pass_arg(v, parent is None, idl.PASS_BY_REFERENCE))
>>          s += "    if (rc)\n"
>>          s += "        goto out;\n"
>> --
>> 2.11.0
>>
>
> Checked this patch. It works.
>
> --
> Best Regards,
> Oleksandr Grytsov.

Hi Wei, will you commit your patch?

-- 
Best Regards,
Oleksandr Grytsov.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.