[libvirt PATCH 4/4] scripts: emit raw enum value in API build description
Daniel P. Berrangé
berrange at redhat.com
Fri May 22 09:07:03 UTC 2020
On Tue, May 19, 2020 at 02:01:19PM +0100, Daniel P. Berrangé wrote:
> Currently the value for an enum is only emitted if it is a plain
> string. If the enum is an integer or hex value, or a complex code block,
> it is omitted from the API build. This fixes that by emitting the raw
> value if no string value is present.
>
> With this change:
>
> <macro name='LIBVIR_CHECK_VERSION'
> file='libvirt-common'
> params='major,minor,micro'>
> <macro name='LIBVIR_VERSION_NUMBER'
> file='libvirt-common'>
> <macro name='VIR_COPY_CPUMAP'
> file='libvirt-domain'
> params='cpumaps,maplen,vcpu,cpumap'>
> ...snip...
>
> <macro name='LIBVIR_CHECK_VERSION'
> file='libvirt-common'
> params='major,minor,micro'
> raw='((major) * 1000000 + (minor) * 1000 + (micro) <= LIBVIR_VERSION_NUMBER)'>
> <macro name='LIBVIR_VERSION_NUMBER'
> file='libvirt-common'
> raw='6004000'>
> <macro name='VIR_COPY_CPUMAP'
> file='libvirt-domain'
> params='cpumaps,maplen,vcpu,cpumap'
> raw='memcpy(cpumap, VIR_GET_CPUMAP(cpumaps, maplen, vcpu), maplen)'>
> ...snip...
>
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
> scripts/apibuild.py | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/apibuild.py b/scripts/apibuild.py
> index 9faf15a75e..d63489ba62 100755
> --- a/scripts/apibuild.py
> +++ b/scripts/apibuild.py
> @@ -1027,11 +1027,14 @@ class CParser:
> return token
>
> strValue = None
> + rawValue = None
> if len(lst) == 1 and lst[0][0] == '"' and lst[0][-1] == '"':
> strValue = lst[0][1:-1]
> + else:
> + rawValue = " ".join(lst)
> (args, desc) = self.parseMacroComment(name, not self.is_header)
> self.index_add(name, self.filename, not self.is_header,
> - "macro", (args, desc, params, strValue))
> + "macro", (args, desc, params, strValue, rawValue))
> return token
>
> #
> @@ -2178,13 +2181,16 @@ class docBuilder:
> desc = None
> params = None
> strValue = None
> + rawValue = None
> else:
> - (args, desc, params, strValue) = id.info
> + (args, desc, params, strValue, rawValue) = id.info
>
> if params is not None:
> output.write(" params='%s'" % params)
> if strValue is not None:
> output.write(" string='%s'" % strValue)
> + else:
> + output.write(" raw='%s'" % rawValue)
> output.write(">\n")
>
> if desc is not None and desc != "":
This last chunk needs to be
if strValue is not None:
output.write(" string='%s'" % strValue)
+ else:
+ output.write(" raw='%s'" % escape(rawValue))
output.write(">\n")
if desc is not None and desc != "":
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
More information about the libvir-list
mailing list