Skip to content

Commit b1a3633

Browse files
praetorian20iMichka
authored andcommitted
Adapt patched output to CastXML cvs_revision 1.137
CastXML's output for default arguments for function parameters was modified in response to CastXML/CastXML#51. The tool now generates fully qualified names in default arguments, so we need to check the `cvs_revision` attribute in the XML output to differentiate between the different output formats. Change-Id: I18ee4d2319dd879e8b9a2d40bf6bee2d3ec1224e Cherry-picked from the develop branch
1 parent 1438982 commit b1a3633

File tree

3 files changed

+23
-8
lines changed

3 files changed

+23
-8
lines changed

pygccxml/parser/scanner.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,7 @@ def __read_version(self, attrs):
633633
# compatibility.
634634
logger.debug('CASTXML version - None ( %s )', version_str)
635635
utils.xml_generator = declarations.xml_generators.CASTXML_None
636+
utils.xml_output_version = version
636637

637638
def __update_unnamed_class(self, decl, attrs):
638639
"""

pygccxml/utils/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@
2020

2121
# Version of xml generator which was used.
2222
xml_generator = None
23+
xml_output_version = None

unittests/patcher_tester.py

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,34 +60,47 @@ def test_numeric_patcher(self):
6060
fix_numeric.arguments[0].default_value, val)
6161
else:
6262
if "CastXML" in utils.xml_generator:
63+
if utils.xml_output_version >= 1.137:
64+
val = "(unsigned long long)-1"
65+
else:
66+
val = "(ull)-1"
6367
self.assertEqual(
64-
fix_numeric.arguments[0].default_value, "(ull)-1")
68+
fix_numeric.arguments[0].default_value, val)
6569
else:
6670
self.assertEqual(
6771
fix_numeric.arguments[0].default_value, "0ffffffff")
6872

6973
def test_unnamed_enum_patcher(self):
7074
fix_unnamed = self.global_ns.free_fun("fix_unnamed")
75+
if ("CastXML" in utils.xml_generator and
76+
utils.xml_output_version >= 1.137):
77+
val = "fx::unnamed"
78+
else:
79+
val = "int(::fx::unnamed)"
7180
self.assertEqual(
72-
fix_unnamed.arguments[0].default_value, "int(::fx::unnamed)")
81+
fix_unnamed.arguments[0].default_value, val)
7382

7483
def test_function_call_patcher(self):
7584
fix_function_call = self.global_ns.free_fun("fix_function_call")
7685
default_val = fix_function_call.arguments[0].default_value
7786
if "CastXML" in utils.xml_generator:
78-
# Most clean output, no need to patch
79-
val = "calc(1, 2, 3)"
80-
self.assertEqual(default_val, val)
87+
if utils.xml_output_version >= 1.137:
88+
val = "function_call::calc(1, 2, 3)"
89+
else:
90+
val = "calc(1, 2, 3)"
8191
elif "0.9" in utils.xml_generator:
8292
val = "function_call::calc(1, 2, 3)"
83-
self.assertEqual(default_val, val)
8493
else:
8594
val = "function_call::calc( 1, 2, 3 )"
86-
self.assertEqual(default_val, val)
95+
self.assertEqual(default_val, val)
8796

8897
def test_fundamental_patcher(self):
8998
fcall = self.global_ns.free_fun("fix_fundamental")
90-
val = "(unsigned int)(::fundamental::eggs)"
99+
if ("CastXML" in utils.xml_generator and
100+
utils.xml_output_version >= 1.137):
101+
val = "fundamental::spam::eggs"
102+
else:
103+
val = "(unsigned int)(::fundamental::eggs)"
91104
self.assertEqual(
92105
fcall.arguments[0].default_value, val)
93106

0 commit comments

Comments
 (0)