Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 98b68265cc | |||
| efa7f5eaad |
@@ -1732,7 +1732,7 @@ class CxxParser:
|
|||||||
if tok.value == '*':
|
if tok.value == '*':
|
||||||
if not ptr_to_member_ok:
|
if not ptr_to_member_ok:
|
||||||
raise self._parse_error(tok)
|
raise self._parse_error(tok)
|
||||||
return name, '*'
|
return name, 'PTR_TO_MEMBER'
|
||||||
|
|
||||||
pqname = PQName(segments, classkey, has_typename)
|
pqname = PQName(segments, classkey, has_typename)
|
||||||
|
|
||||||
@@ -1804,7 +1804,7 @@ class CxxParser:
|
|||||||
tok = self.lex.token_if("NAME", "final", "DBL_COLON")
|
tok = self.lex.token_if("NAME", "final", "DBL_COLON")
|
||||||
if tok:
|
if tok:
|
||||||
pqname, op = self._parse_pqname(tok, fn_ok=True, ptr_to_member_ok=True)
|
pqname, op = self._parse_pqname(tok, fn_ok=True, ptr_to_member_ok=True)
|
||||||
while op == '*':
|
while op == 'PTR_TO_MEMBER':
|
||||||
dtype = PointerToMember(base_type=Type(typename=pqname), ptr_to=dtype, const=dtype.const, volatile=dtype.volatile)
|
dtype = PointerToMember(base_type=Type(typename=pqname), ptr_to=dtype, const=dtype.const, volatile=dtype.volatile)
|
||||||
# dtype = self._parse_cv_ptr(dtype)
|
# dtype = self._parse_cv_ptr(dtype)
|
||||||
tok = self.lex.token_if("NAME", "final", "DBL_COLON")
|
tok = self.lex.token_if("NAME", "final", "DBL_COLON")
|
||||||
@@ -2506,7 +2506,7 @@ class CxxParser:
|
|||||||
tok = self.lex.token_if_in_set(self._pqname_start_tokens)
|
tok = self.lex.token_if_in_set(self._pqname_start_tokens)
|
||||||
if tok:
|
if tok:
|
||||||
pqname, op = self._parse_pqname(tok, fn_ok=True, ptr_to_member_ok=True)
|
pqname, op = self._parse_pqname(tok, fn_ok=True, ptr_to_member_ok=True)
|
||||||
while op == '*':
|
while op == 'PTR_TO_MEMBER':
|
||||||
dtype = PointerToMember(base_type=Type(typename=pqname), ptr_to=dtype, const=dtype.const, volatile=dtype.volatile)
|
dtype = PointerToMember(base_type=Type(typename=pqname), ptr_to=dtype, const=dtype.const, volatile=dtype.volatile)
|
||||||
# dtype = self._parse_cv_ptr(dtype)
|
# dtype = self._parse_cv_ptr(dtype)
|
||||||
tok = self.lex.token_if_in_set(self._pqname_start_tokens)
|
tok = self.lex.token_if_in_set(self._pqname_start_tokens)
|
||||||
|
|||||||
@@ -374,9 +374,9 @@ class PointerToMember:
|
|||||||
v = " volatile" if self.volatile else ""
|
v = " volatile" if self.volatile else ""
|
||||||
ptr_to = self.ptr_to
|
ptr_to = self.ptr_to
|
||||||
if isinstance(ptr_to, (Array, FunctionType)):
|
if isinstance(ptr_to, (Array, FunctionType)):
|
||||||
return ptr_to.format_decl(f"({base_type.format()}::*{c}{v})")
|
return ptr_to.format_decl(f"({self.base_type.format()}::*{c}{v})")
|
||||||
else:
|
else:
|
||||||
return f"{ptr_to.format()} {base_type.format()}::*{c}{v}"
|
return f"{ptr_to.format()} {self.base_type.format()}::*{c}{v}"
|
||||||
|
|
||||||
def format_decl(self, name: str):
|
def format_decl(self, name: str):
|
||||||
"""Format as a named declaration"""
|
"""Format as a named declaration"""
|
||||||
@@ -384,9 +384,9 @@ class PointerToMember:
|
|||||||
v = " volatile" if self.volatile else ""
|
v = " volatile" if self.volatile else ""
|
||||||
ptr_to = self.ptr_to
|
ptr_to = self.ptr_to
|
||||||
if isinstance(ptr_to, (Array, FunctionType)):
|
if isinstance(ptr_to, (Array, FunctionType)):
|
||||||
return ptr_to.format_decl(f"({base_type.format()}::*{c}{v} {name})")
|
return ptr_to.format_decl(f"({self.base_type.format()}::*{c}{v} {name})")
|
||||||
else:
|
else:
|
||||||
return f"{ptr_to.format()} {base_type.format()}::*{c}{v} {name}"
|
return f"{ptr_to.format()} {self.base_type.format()}::*{c}{v} {name}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user