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(a)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 :|