[Libguestfs] [libnbd PATCH 1/3] generator: Introduce REnum/RFlags return types
Eric Blake
eblake at redhat.com
Mon Sep 7 14:38:15 UTC 2020
On 9/7/20 9:13 AM, Richard W.M. Jones wrote:
>> +++ b/generator/C.ml
>> @@ -66,15 +66,15 @@ let errcode_of_ret =
>> function
>> | RBool | RErr | RFd | RInt | RInt64 | RCookie -> Some "-1"
>> | RStaticString | RString -> Some "NULL"
>> - | RUInt -> None (* errors not possible *)
>> + | RUInt | REnum (_) | RFlags (_) -> None (* errors not possible *)
>>
>> let type_of_ret =
>> function
>> - | RBool | RErr | RFd | RInt -> "int"
>> + | RBool | RErr | RFd | RInt | REnum (_) -> "int"
>
> This is good because Enum is passed as int.
>
>> [...]
>
> You used unsigned for RFlags, but shouldn't it be this instead?
>
> + | RFlags (_) -> "uint32_t"
Hmm. For Flags as input, we take uint32_t, but for get_handshake_flags
which used to return RUint, we returned unsigned; as written, my patch
preserved generated code in its entirety. Changing it to return
uint32_t makes sense, but is a minor API change. Fortunately, it would
not be an ABI change on any of the platforms we compile on. So I can go
ahead and return the smarter type unless we have a strong reason not to
(the API change might affect anyone that was storing a function pointer
to nbd_get_handshake_flags, and more so in C++ than C).
>
> The rest of the patch looks fine.
>
> Rich.
>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
More information about the Libguestfs
mailing list