Skip to content

Commit ad7d4d6

Browse files
committed
scanner: debug spaces in templates
1 parent ea300f6 commit ad7d4d6

File tree

6 files changed

+162
-147
lines changed

6 files changed

+162
-147
lines changed

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,4 +102,4 @@ jobs:
102102
- name: Run tests
103103
run: |
104104
export PATH=~/castxml/bin:$PATH
105-
pytest tests
105+
pytest tests/test_remove_template_defaults.py

pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,5 @@ docs = [
6464
examples = [
6565
"notebook",
6666
]
67+
[tool.pytest.ini_options]
68+
pythonpath = ["src"]

src/pygccxml/declarations/container_traits.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,9 @@ def get_container_or_none(self, type_):
378378
379379
"""
380380

381+
print("get_container_or_none", type_)
381382
type_ = type_traits.remove_alias(type_)
383+
print("get_container_or_none", type_)
382384
type_ = type_traits.remove_cv(type_)
383385

384386
utils.loggers.queries_engine.debug(
@@ -520,13 +522,14 @@ def remove_defaults(self, type_or_string):
520522
std::vector< int >
521523
522524
"""
523-
525+
print("xxxx", type_or_string)
524526
name = type_or_string
525527
if not isinstance(type_or_string, str):
526528
name = self.class_declaration(type_or_string).name
527529
if not self.remove_defaults_impl:
528530
return name
529531
no_defaults = self.remove_defaults_impl(name)
532+
print("xxxx", name)
530533
if not no_defaults:
531534
return name
532535
return no_defaults

src/pygccxml/declarations/type_traits.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,15 @@ def remove_alias(type_):
5252
Returns:
5353
type_t: the type associated to the inputted declaration
5454
"""
55+
print("remove_alias", type_)
5556
if isinstance(type_, cpptypes.type_t):
5657
type_ref = type_
5758
elif isinstance(type_, typedef.typedef_t):
5859
type_ref = type_.decl_type
5960
else:
6061
# Not a valid input, just return it
6162
return type_
63+
print("remove_alias type_ref", type_ref)
6264
if type_ref.cache.remove_alias:
6365
return type_ref.cache.remove_alias
6466
no_alias = __remove_alias(type_ref.clone())

src/pygccxml/parser/scanner.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,8 @@ def members(self):
286286

287287
def startElement(self, name, attrs):
288288

289+
# print(attrs)
290+
289291
try:
290292
if name not in self.__readers:
291293
return
@@ -654,6 +656,7 @@ def __read_variable(self, attrs):
654656

655657
def __read_class_impl(self, class_type, attrs):
656658
name = attrs.get(XML_AN_NAME, '')
659+
# name = name.replace(">", " >").replace("<", "< ")
657660
if '$' in name or '.' in name:
658661
name = ''
659662
if XML_AN_INCOMPLETE in attrs:

tests/test_remove_template_defaults.py

Lines changed: 150 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
'remove_template_defaults.hpp'
1818
]
1919

20+
# import logging
21+
# utils.loggers.set_level(logging.DEBUG)
22+
2023

2124
@pytest.fixture
2225
def global_ns():
@@ -28,6 +31,7 @@ def global_ns():
2831
# https://github.com/jetbrains/kotlin/commit/d50f585911dedec5723213da8835707ac95e1c01
2932
else:
3033
config.cflags = "-std=c++11"
34+
# config.keep_xml = True
3135
decls = parser.parse(TEST_FILES, config, COMPILATION_MODE)
3236
global_ns = declarations.get_global_namespace(decls)
3337
global_ns.init_optimizer()
@@ -38,148 +42,149 @@ def test_vector(global_ns):
3842
v_int = global_ns.typedef('v_int')
3943
v_traits = declarations.vector_traits
4044
assert 'vector< int >' == v_traits.remove_defaults(v_int)
41-
v_string = global_ns.typedef('v_string')
42-
assert 'vector< std::string >' == \
43-
v_traits.remove_defaults(v_string)
44-
v_v_int = global_ns.typedef('v_v_int')
45-
assert 'vector< std::vector< int > >' == \
46-
v_traits.remove_defaults(v_v_int)
47-
48-
49-
def test_list(global_ns):
50-
l_int = global_ns.typedef('l_int')
51-
l_traits = declarations.list_traits
52-
assert 'list< int >' == l_traits.remove_defaults(l_int)
53-
l_wstring = global_ns.typedef('l_wstring')
54-
assert 'list< std::wstring >' == l_traits.remove_defaults(l_wstring)
55-
56-
57-
def test_deque(global_ns):
58-
d_v_int = global_ns.typedef('d_v_int')
59-
d_v_traits = declarations.deque_traits
60-
assert 'deque< std::vector< int > >' == \
61-
d_v_traits.remove_defaults(d_v_int)
62-
d_l_string = global_ns.typedef('d_l_string')
63-
assert 'deque< std::list< std::string > >' == \
64-
d_v_traits.remove_defaults(d_l_string)
65-
66-
67-
def test_queue(global_ns):
68-
q_int = global_ns.typedef('q_int')
69-
q_traits = declarations.queue_traits
70-
assert 'queue< int >' == q_traits.remove_defaults(q_int)
71-
q_string = global_ns.typedef('q_string')
72-
assert 'queue< std::string >' == q_traits.remove_defaults(q_string)
73-
74-
75-
def test_priority_queue(global_ns):
76-
pq_int = global_ns.typedef('pq_int')
77-
pq_traits = declarations.priority_queue_traits
78-
assert 'priority_queue< int >' == pq_traits.remove_defaults(pq_int)
79-
pq_string = global_ns.typedef('pq_string')
80-
assert 'priority_queue< std::string >' == \
81-
pq_traits.remove_defaults(pq_string)
82-
83-
84-
def test_set(global_ns):
85-
s_v_int = global_ns.typedef('s_v_int')
86-
assert 'set< std::vector< int > >' == \
87-
declarations.set_traits.remove_defaults(s_v_int)
88-
s_string = global_ns.typedef('s_string')
89-
assert 'set< std::string >' == \
90-
declarations.set_traits.remove_defaults(s_string)
91-
92-
93-
def test_multiset(global_ns):
94-
ms_v_int = global_ns.typedef('ms_v_int')
95-
ms_v_traits = declarations.multiset_traits
96-
assert 'multiset< std::vector< int > >' == \
97-
ms_v_traits.remove_defaults(ms_v_int)
98-
ms_string = global_ns.typedef('ms_string')
99-
assert 'multiset< std::string >' == \
100-
ms_v_traits.remove_defaults(ms_string)
101-
102-
103-
def test_map(global_ns):
104-
m_i2d = global_ns.typedef('m_i2d')
105-
assert 'map< int, double >' == \
106-
declarations.map_traits.remove_defaults(m_i2d)
107-
m_wstr2d = global_ns.typedef('m_wstr2d')
108-
assert 'map< std::wstring, double >' == \
109-
declarations.map_traits.remove_defaults(m_wstr2d)
110-
m_v_i2m_wstr2d = global_ns.typedef('m_v_i2m_wstr2d')
111-
m = 'map< const std::vector< int >, std::map< std::wstring, double > >'
112-
assert m == declarations.map_traits.remove_defaults(m_v_i2m_wstr2d)
113-
114-
115-
def test_multimap(global_ns):
116-
mm_i2d = global_ns.typedef('mm_i2d')
117-
mm_traits = declarations.multimap_traits
118-
assert 'multimap< int, double >' == mm_traits.remove_defaults(mm_i2d)
119-
mm_wstr2d = global_ns.typedef('mm_wstr2d')
120-
assert 'multimap< const std::wstring, double >' == \
121-
mm_traits.remove_defaults(mm_wstr2d)
122-
mm_v_i2mm_wstr2d = global_ns.typedef('mm_v_i2mm_wstr2d')
123-
assert ('multimap< const std::vector< int >, ' +
124-
'const std::multimap< const std::wstring, double > >') == \
125-
mm_traits.remove_defaults(mm_v_i2mm_wstr2d)
126-
127-
128-
def test_hash_set(global_ns):
129-
hs_v_int = global_ns.typedef('hs_v_int')
130-
hs_traits = declarations.unordered_set_traits
131-
name = 'unordered_set'
132-
assert (name + '< std::vector< int > >') == \
133-
hs_traits.remove_defaults(hs_v_int), \
134-
hs_traits.remove_defaults(hs_v_int)
135-
hs_string = global_ns.typedef('hs_string')
136-
assert (name + '< std::string >') == \
137-
hs_traits.remove_defaults(hs_string)
138-
139-
140-
def test_hash_multiset(global_ns):
141-
mhs_v_int = global_ns.typedef('mhs_v_int')
142-
mhs_traits = declarations.unordered_multiset_traits
143-
name = 'unordered_multiset'
144-
assert (name + '< std::vector< int > >') == \
145-
mhs_traits.remove_defaults(mhs_v_int)
146-
mhs_string = global_ns.typedef('mhs_string')
147-
assert (name + '< std::string >') == \
148-
mhs_traits.remove_defaults(mhs_string)
149-
150-
151-
def test_hash_map(global_ns):
152-
hm_i2d = global_ns.typedef('hm_i2d')
153-
hm_traits = declarations.unordered_map_traits
154-
name = 'unordered_map'
155-
assert (name + '< int, double >') == \
156-
hm_traits.remove_defaults(hm_i2d)
157-
hm_wstr2d = global_ns.typedef('hm_wstr2d')
158-
assert (name + '< std::wstring, double >') == \
159-
hm_traits.remove_defaults(hm_wstr2d)
160-
161-
162-
def test_hash_multimap(global_ns):
163-
hmm_i2d = global_ns.typedef('hmm_i2d')
164-
hmm_traits = declarations.unordered_multimap_traits
165-
name = 'unordered_multimap'
166-
assert (name + '< int, double >') == \
167-
hmm_traits.remove_defaults(hmm_i2d)
168-
hmm_wstr2d = global_ns.typedef('hmm_wstr2d')
169-
assert (name + '< const std::wstring, double >') == \
170-
hmm_traits.remove_defaults(hmm_wstr2d)
171-
172-
hmm_v_i2mm_wstr2d = global_ns.typedef('hmm_v_i2mm_wstr2d')
173-
174-
hmm_traits_value = hmm_traits.remove_defaults(hmm_v_i2mm_wstr2d)
175-
176-
possible_values = (
177-
name + '< const std::vector< int >, ' +
178-
'const __gnu_cxx::' + name + '< const std::wstring, double > >',
179-
name + '< const std::vector< int >, ' +
180-
'const std::' + utils.get_tr1(hmm_traits_value) + name +
181-
'< const std::wstring, double > >',
182-
name + '< const std::vector< int >, ' +
183-
'const stdext::' + name + '< const std::wstring, double > >')
184-
185-
assert hmm_traits_value in possible_values, hmm_traits_value
45+
# v_string = global_ns.typedef('v_string')
46+
# assert 'vector< std::string >' == \
47+
# v_traits.remove_defaults(v_string)
48+
# v_v_int = global_ns.typedef('v_v_int')
49+
# assert 'vector< std::vector< int > >' == \
50+
# v_traits.remove_defaults(v_v_int)
51+
raise
52+
53+
54+
# def test_list(global_ns):
55+
# l_int = global_ns.typedef('l_int')
56+
# l_traits = declarations.list_traits
57+
# assert 'list< int >' == l_traits.remove_defaults(l_int)
58+
# l_wstring = global_ns.typedef('l_wstring')
59+
# assert 'list< std::wstring >' == l_traits.remove_defaults(l_wstring)
60+
61+
62+
# def test_deque(global_ns):
63+
# d_v_int = global_ns.typedef('d_v_int')
64+
# d_v_traits = declarations.deque_traits
65+
# assert 'deque< std::vector< int > >' == \
66+
# d_v_traits.remove_defaults(d_v_int)
67+
# d_l_string = global_ns.typedef('d_l_string')
68+
# assert 'deque< std::list< std::string > >' == \
69+
# d_v_traits.remove_defaults(d_l_string)
70+
71+
72+
# def test_queue(global_ns):
73+
# q_int = global_ns.typedef('q_int')
74+
# q_traits = declarations.queue_traits
75+
# assert 'queue< int >' == q_traits.remove_defaults(q_int)
76+
# q_string = global_ns.typedef('q_string')
77+
# assert 'queue< std::string >' == q_traits.remove_defaults(q_string)
78+
79+
80+
# def test_priority_queue(global_ns):
81+
# pq_int = global_ns.typedef('pq_int')
82+
# pq_traits = declarations.priority_queue_traits
83+
# assert 'priority_queue< int >' == pq_traits.remove_defaults(pq_int)
84+
# pq_string = global_ns.typedef('pq_string')
85+
# assert 'priority_queue< std::string >' == \
86+
# pq_traits.remove_defaults(pq_string)
87+
88+
89+
# def test_set(global_ns):
90+
# s_v_int = global_ns.typedef('s_v_int')
91+
# assert 'set< std::vector< int > >' == \
92+
# declarations.set_traits.remove_defaults(s_v_int)
93+
# s_string = global_ns.typedef('s_string')
94+
# assert 'set< std::string >' == \
95+
# declarations.set_traits.remove_defaults(s_string)
96+
97+
98+
# def test_multiset(global_ns):
99+
# ms_v_int = global_ns.typedef('ms_v_int')
100+
# ms_v_traits = declarations.multiset_traits
101+
# assert 'multiset< std::vector< int > >' == \
102+
# ms_v_traits.remove_defaults(ms_v_int)
103+
# ms_string = global_ns.typedef('ms_string')
104+
# assert 'multiset< std::string >' == \
105+
# ms_v_traits.remove_defaults(ms_string)
106+
107+
108+
# def test_map(global_ns):
109+
# m_i2d = global_ns.typedef('m_i2d')
110+
# assert 'map< int, double >' == \
111+
# declarations.map_traits.remove_defaults(m_i2d)
112+
# m_wstr2d = global_ns.typedef('m_wstr2d')
113+
# assert 'map< std::wstring, double >' == \
114+
# declarations.map_traits.remove_defaults(m_wstr2d)
115+
# m_v_i2m_wstr2d = global_ns.typedef('m_v_i2m_wstr2d')
116+
# m = 'map< const std::vector< int >, std::map< std::wstring, double > >'
117+
# assert m == declarations.map_traits.remove_defaults(m_v_i2m_wstr2d)
118+
119+
120+
# def test_multimap(global_ns):
121+
# mm_i2d = global_ns.typedef('mm_i2d')
122+
# mm_traits = declarations.multimap_traits
123+
# assert 'multimap< int, double >' == mm_traits.remove_defaults(mm_i2d)
124+
# mm_wstr2d = global_ns.typedef('mm_wstr2d')
125+
# assert 'multimap< const std::wstring, double >' == \
126+
# mm_traits.remove_defaults(mm_wstr2d)
127+
# mm_v_i2mm_wstr2d = global_ns.typedef('mm_v_i2mm_wstr2d')
128+
# assert ('multimap< const std::vector< int >, ' +
129+
# 'const std::multimap< const std::wstring, double > >') == \
130+
# mm_traits.remove_defaults(mm_v_i2mm_wstr2d)
131+
132+
133+
# def test_hash_set(global_ns):
134+
# hs_v_int = global_ns.typedef('hs_v_int')
135+
# hs_traits = declarations.unordered_set_traits
136+
# name = 'unordered_set'
137+
# assert (name + '< std::vector< int > >') == \
138+
# hs_traits.remove_defaults(hs_v_int), \
139+
# hs_traits.remove_defaults(hs_v_int)
140+
# hs_string = global_ns.typedef('hs_string')
141+
# assert (name + '< std::string >') == \
142+
# hs_traits.remove_defaults(hs_string)
143+
144+
145+
# def test_hash_multiset(global_ns):
146+
# mhs_v_int = global_ns.typedef('mhs_v_int')
147+
# mhs_traits = declarations.unordered_multiset_traits
148+
# name = 'unordered_multiset'
149+
# assert (name + '< std::vector< int > >') == \
150+
# mhs_traits.remove_defaults(mhs_v_int)
151+
# mhs_string = global_ns.typedef('mhs_string')
152+
# assert (name + '< std::string >') == \
153+
# mhs_traits.remove_defaults(mhs_string)
154+
155+
156+
# def test_hash_map(global_ns):
157+
# hm_i2d = global_ns.typedef('hm_i2d')
158+
# hm_traits = declarations.unordered_map_traits
159+
# name = 'unordered_map'
160+
# assert (name + '< int, double >') == \
161+
# hm_traits.remove_defaults(hm_i2d)
162+
# hm_wstr2d = global_ns.typedef('hm_wstr2d')
163+
# assert (name + '< std::wstring, double >') == \
164+
# hm_traits.remove_defaults(hm_wstr2d)
165+
166+
167+
# def test_hash_multimap(global_ns):
168+
# hmm_i2d = global_ns.typedef('hmm_i2d')
169+
# hmm_traits = declarations.unordered_multimap_traits
170+
# name = 'unordered_multimap'
171+
# assert (name + '< int, double >') == \
172+
# hmm_traits.remove_defaults(hmm_i2d)
173+
# hmm_wstr2d = global_ns.typedef('hmm_wstr2d')
174+
# assert (name + '< const std::wstring, double >') == \
175+
# hmm_traits.remove_defaults(hmm_wstr2d)
176+
177+
# hmm_v_i2mm_wstr2d = global_ns.typedef('hmm_v_i2mm_wstr2d')
178+
179+
# hmm_traits_value = hmm_traits.remove_defaults(hmm_v_i2mm_wstr2d)
180+
181+
# possible_values = (
182+
# name + '< const std::vector< int >, ' +
183+
# 'const __gnu_cxx::' + name + '< const std::wstring, double > >',
184+
# name + '< const std::vector< int >, ' +
185+
# 'const std::' + utils.get_tr1(hmm_traits_value) + name +
186+
# '< const std::wstring, double > >',
187+
# name + '< const std::vector< int >, ' +
188+
# 'const stdext::' + name + '< const std::wstring, double > >')
189+
190+
# assert hmm_traits_value in possible_values, hmm_traits_value

0 commit comments

Comments
 (0)