From 61fdc9670681843be9167a2aafadfc0803b5b77c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Tue, 19 May 2020 12:32:19 +0100 Subject: [PATCH] scripts: emit raw enum value in API build description MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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: ...snip... ...snip... Reviewed-by: Michal Privoznik Signed-off-by: Daniel P. Berrangé --- scripts/apibuild.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/scripts/apibuild.py b/scripts/apibuild.py index 9faf15a75e..7cac9b136b 100755 --- a/scripts/apibuild.py +++ b/scripts/apibuild.py @@ -500,8 +500,8 @@ class CLexer: endArg = self.tokens[1][1].find(")") if endArg != -1: - extra = self.tokens[1][1][endArg+1:] - name = self.tokens[1][1][0:endArg+1] + extra = self.tokens[1][1][endArg + 1:] + name = self.tokens[1][1][0:endArg + 1] newtokens.append(('preproc', name)) if extra != "": newtokens.append(('preproc', extra)) @@ -1017,7 +1017,7 @@ class CParser: paramStart = name.find("(") params = None if paramStart != -1: - params = name[paramStart+1:-1] + params = name[paramStart + 1:-1] name = name[0:paramStart] # skip hidden macros @@ -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'" % escape(rawValue)) output.write(">\n") if desc is not None and desc != "":