From b8880276b257d584f2d7120a05daba19093de319 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 23 Mar 2021 20:43:47 +0400 Subject: Add glib:name to enum member MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This member will contain the string from the GEnumValue/GFlagsValue 'value_name' introspection dump. Signed-off-by: Marc-André Lureau --- docs/gir-1.2.rnc | 4 +- giscanner/ast.py | 3 +- giscanner/gdumpparser.py | 3 +- giscanner/girparser.py | 3 +- giscanner/girwriter.py | 2 + giscanner/transformer.py | 4 +- tests/scanner/Regress-1.0-expected.gir | 84 ++++++++++++++++++++++------------ 7 files changed, 68 insertions(+), 35 deletions(-) diff --git a/docs/gir-1.2.rnc b/docs/gir-1.2.rnc index a6478119..8f53c18e 100644 --- a/docs/gir-1.2.rnc +++ b/docs/gir-1.2.rnc @@ -679,8 +679,10 @@ grammar { attribute value { xsd:string }, ## corresponding C type of the member attribute c:identifier { xsd:string }, - ## short nickname of the member + ## short nickname of the member (from GEnumValue/GFlagsValue) attribute glib:nick { xsd:string }?, + ## name of the member (from GEnumValue/GFlagsValue) + attribute glib:name { xsd:string }?, Info.elements } diff --git a/giscanner/ast.py b/giscanner/ast.py index 593969f2..9a0d95c7 100644 --- a/giscanner/ast.py +++ b/giscanner/ast.py @@ -972,12 +972,13 @@ class Bitfield(Node, Registered): class Member(Annotated): - def __init__(self, name, value, symbol, nick): + def __init__(self, name, value, symbol, nick=None, dump_name=None): Annotated.__init__(self) self.name = name self.value = value self.symbol = symbol self.nick = nick + self.dump_name = dump_name self.parent = None def _compare(self, other, op): diff --git a/giscanner/gdumpparser.py b/giscanner/gdumpparser.py index ada1503d..03a4ecc3 100644 --- a/giscanner/gdumpparser.py +++ b/giscanner/gdumpparser.py @@ -285,7 +285,8 @@ blob containing data gleaned from GObject's primitive introspection.""" members.append(ast.Member(name, value, symbol, - member.attrib['nick'])) + member.attrib['nick'], + member.attrib['name'])) if xmlnode.tag == 'flags': klass = ast.Bitfield diff --git a/giscanner/girparser.py b/giscanner/girparser.py index d229b164..da200a65 100644 --- a/giscanner/girparser.py +++ b/giscanner/girparser.py @@ -609,7 +609,8 @@ class GIRParser(object): member = ast.Member(node.attrib['name'], node.attrib['value'], node.attrib.get(_cns('identifier')), - node.attrib.get(_glibns('nick'))) + node.attrib.get(_glibns('nick')), + node.attrib.get(_glibns('name'))) self._parse_generic_attribs(node, member) return member diff --git a/giscanner/girwriter.py b/giscanner/girwriter.py index 2b837362..54c957c0 100644 --- a/giscanner/girwriter.py +++ b/giscanner/girwriter.py @@ -442,6 +442,8 @@ class GIRWriter(XMLWriter): self._append_version(member, attrs) if member.nick is not None: attrs.append(('glib:nick', member.nick)) + if member.dump_name is not None: + attrs.append(('glib:name', member.dump_name)) with self.tagcontext('member', attrs): self._write_generic(member) diff --git a/giscanner/transformer.py b/giscanner/transformer.py index bcabdedc..ad2a87f4 100644 --- a/giscanner/transformer.py +++ b/giscanner/transformer.py @@ -432,9 +432,7 @@ raise ValueError.""" name = self._strip_symbol(child) members.append(ast.Member(name.lower(), child.const_int, - child.ident, - None)) - + child.ident)) enum_name = self.strip_identifier(symbol.ident) if symbol.base_type.is_bitfield: klass = ast.Bitfield diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir index 302800cc..e0f02521 100644 --- a/tests/scanner/Regress-1.0-expected.gir +++ b/tests/scanner/Regress-1.0-expected.gir @@ -1623,17 +1623,20 @@ it says it's pointer but it's actually a string. + glib:nick="alpha" + glib:name="REGRESS_FOO_ENUM_ALPHA"> + glib:nick="beta" + glib:name="REGRESS_FOO_ENUM_BETA"> + glib:nick="delta" + glib:name="REGRESS_FOO_ENUM_DELTA"> @@ -1666,17 +1669,20 @@ it says it's pointer but it's actually a string. + glib:nick="good" + glib:name="REGRESS_FOO_ERROR_GOOD"> + glib:nick="bad" + glib:name="REGRESS_FOO_ERROR_BAD"> + glib:nick="ugly" + glib:name="REGRESS_FOO_ERROR_UGLY"> @@ -1727,17 +1733,20 @@ it says it's pointer but it's actually a string. + glib:nick="first" + glib:name="REGRESS_FOO_FLAGS_FIRST"> + glib:nick="second" + glib:name="REGRESS_FOO_FLAGS_SECOND"> + glib:nick="third" + glib:name="REGRESS_FOO_FLAGS_THIRD"> + glib:nick="code1" + glib:name="REGRESS_TEST_ABC_ERROR_CODE1"> + glib:nick="code2" + glib:name="REGRESS_TEST_ABC_ERROR_CODE2"> + glib:nick="code3" + glib:name="REGRESS_TEST_ABC_ERROR_CODE3"> @@ -3339,29 +3351,34 @@ use it should be. + glib:nick="value1" + glib:name="REGRESS_TEST_VALUE1"> value 1 + glib:nick="value2" + glib:name="REGRESS_TEST_VALUE2"> value 2 + glib:nick="value3" + glib:name="REGRESS_TEST_VALUE3"> + glib:nick="value4" + glib:name="REGRESS_TEST_VALUE4"> + glib:nick="value5" + glib:name="REGRESS_TEST_VALUE5"> @@ -3391,12 +3408,14 @@ use it should be. + glib:nick="value1" + glib:name="REGRESS_TEST_UNSIGNED_VALUE1"> + glib:nick="value2" + glib:name="REGRESS_TEST_UNSIGNED_VALUE2"> + glib:nick="code1" + glib:name="REGRESS_TEST_ERROR_CODE1"> + glib:nick="code2" + glib:name="REGRESS_TEST_ERROR_CODE2"> + glib:nick="code3" + glib:name="REGRESS_TEST_ERROR_CODE3"> @@ -3447,17 +3469,20 @@ use it should be. + glib:nick="flag1" + glib:name="TEST_FLAG1"> + glib:nick="flag2" + glib:name="TEST_FLAG2"> + glib:nick="flag3" + glib:name="TEST_FLAG3"> + glib:nick="code1" + glib:name="REGRESS_TEST_OTHER_ERROR_CODE1"> + glib:nick="code2" + glib:name="REGRESS_TEST_OTHER_ERROR_CODE2"> + glib:nick="code3" + glib:name="REGRESS_TEST_OTHER_ERROR_CODE3"> -- cgit v1.2.1