@@ -255,11 +255,13 @@ def _split_namespace(namestack):
255
255
256
256
:rtype: Tuple[str, list]
257
257
"""
258
+ # TODO: this should be using tokens instead of nhack
259
+
258
260
last_colon = None
259
261
for i , n in enumerate (namestack ):
260
- if n == ":" :
262
+ if n == ":: " :
261
263
last_colon = i
262
- if i and n != ":" and not _nhack .match (n ):
264
+ if i and n != ":: " and not _nhack .match (n ):
263
265
break
264
266
265
267
if last_colon :
@@ -472,12 +474,8 @@ def _parse_cppclass_name(c, stack):
472
474
if t == ":" :
473
475
if i >= sl :
474
476
raise CppParseError ("class decl ended with ':'" )
475
- t = stack [i ]
476
- if t != ":" :
477
- # reached the base declaration
478
- break
479
-
480
- i += 1
477
+ break
478
+ elif t == "::" :
481
479
name += "::"
482
480
continue
483
481
elif t == "final" :
@@ -954,7 +952,7 @@ def __init__(self, nameStack, curClass, methinfo, curTemplate, doxygen, location
954
952
if len (self ["rtnType" ]) == 0 or self ["name" ] == curClass :
955
953
self ["rtnType" ] = "void"
956
954
957
- self ["rtnType" ] = self ["rtnType" ].replace (" : : " , "::" )
955
+ self ["rtnType" ] = self ["rtnType" ].replace (" :: " , "::" )
958
956
self ["rtnType" ] = self ["rtnType" ].replace (" < " , "<" )
959
957
self ["rtnType" ] = self ["rtnType" ].replace (" > " , "> " ).replace (">>" , "> >" )
960
958
self ["rtnType" ] = self ["rtnType" ].replace (" ," , "," )
@@ -1959,8 +1957,8 @@ def finalize(self):
1959
1957
)
1960
1958
meth ["returns_unknown" ] = True
1961
1959
1962
- if meth ["returns" ].startswith (": : " ):
1963
- meth ["returns" ] = meth ["returns" ].replace (": : " , "::" )
1960
+ if meth ["returns" ].startswith (":: " ):
1961
+ meth ["returns" ] = meth ["returns" ].replace (":: " , "::" )
1964
1962
1965
1963
for cls in list (self .classes .values ()):
1966
1964
methnames = cls .get_all_method_names ()
@@ -1996,7 +1994,7 @@ def parse_method_type(self, stack):
1996
1994
stack = stack [1 :]
1997
1995
info = {
1998
1996
"debug" : " " .join (stack )
1999
- .replace (" : : " , "::" )
1997
+ .replace (" :: " , "::" )
2000
1998
.replace (" < " , "<" )
2001
1999
.replace (" > " , "> " )
2002
2000
.replace (" >" , ">" )
@@ -2010,7 +2008,7 @@ def parse_method_type(self, stack):
2010
2008
2011
2009
header = stack [: stack .index ("(" )]
2012
2010
header = " " .join (header )
2013
- header = header .replace (" : : " , "::" )
2011
+ header = header .replace (" :: " , "::" )
2014
2012
header = header .replace (" < " , "<" )
2015
2013
header = header .replace (" > " , "> " )
2016
2014
header = header .replace ("default " , "default" )
@@ -2452,6 +2450,7 @@ def evalute_forward_decl(self):
2452
2450
"+" ,
2453
2451
"STRING_LITERAL" ,
2454
2452
"ELLIPSIS" ,
2453
+ "DBL_COLON" ,
2455
2454
"SHIFT_LEFT" ,
2456
2455
}
2457
2456
@@ -3164,7 +3163,7 @@ def _parse_template(self):
3164
3163
consumed = self ._consume_balanced_tokens (tok )
3165
3164
tmpl = " " .join (tok .value for tok in consumed )
3166
3165
tmpl = (
3167
- tmpl .replace (" : : " , "::" )
3166
+ tmpl .replace (" :: " , "::" )
3168
3167
.replace (" <" , "<" )
3169
3168
.replace ("< " , "<" )
3170
3169
.replace (" >" , ">" )
@@ -3364,10 +3363,10 @@ def _parse_enumerator_list(self, values):
3364
3363
while True :
3365
3364
tok = self .lex .token ()
3366
3365
if tok .type == "}" :
3367
- value ["value" ] = ( " " .join (v )). replace ( ": :" , "::" )
3366
+ value ["value" ] = " " .join (v )
3368
3367
return
3369
3368
elif tok .type == "," :
3370
- value ["value" ] = ( " " .join (v )). replace ( ": :" , "::" )
3369
+ value ["value" ] = " " .join (v )
3371
3370
break
3372
3371
elif tok .type in self ._balanced_token_map :
3373
3372
v .extend (t .value for t in self ._consume_balanced_tokens (tok ))
0 commit comments