| 1675 | |
| 1676 | |
| 1677 | TypeBuilder DemangleGNU3::DemangleNestedName() |
| 1678 | { |
| 1679 | /* |
| 1680 | This can be either a qualified name like: "foo::bar::bas" |
| 1681 | or it can be a qualified type like: "foo::bar::bas & const" thus we return either |
| 1682 | a name or a type. |
| 1683 | |
| 1684 | <nested-name> ::= N [<CV-qualifiers>] [<ref-qualifier>] <prefix> <unqualified-name> E |
| 1685 | ::= N [<CV-qualifiers>] [<ref-qualifier>] <template-prefix> <template-args> E |
| 1686 | |
| 1687 | <prefix> ::= <unqualified-name> # global class or namespace |
| 1688 | ::= <prefix> <unqualified-name> # nested class or namespace |
| 1689 | ::= <template-prefix> <template-args> # class template specialization |
| 1690 | ::= <template-param> # template type parameter |
| 1691 | ::= <decltype> # decltype qualifier |
| 1692 | ::= <prefix> <data-member-prefix> # initializer of a data member |
| 1693 | ::= <substitution> |
| 1694 | |
| 1695 | <template-prefix> ::= <template unqualified-name> # global template |
| 1696 | ::= <prefix> <template unqualified-name> # nested template |
| 1697 | ::= <template-param> # template template parameter |
| 1698 | ::= <substitution> |
| 1699 | |
| 1700 | <unqualified-name> ::= <operator-name> |
| 1701 | ::= <ctor-dtor-name> |
| 1702 | ::= <source-name> |
| 1703 | ::= <unnamed-type-name> |
| 1704 | |
| 1705 | <source-name> ::= <positive length number> <identifier> |
| 1706 | <identifier> ::= <unqualified source code identifier> |
| 1707 | */ |
| 1708 | |
| 1709 | indent(); |
| 1710 | MyLogDebug("%s:: '%s'\n", __FUNCTION__, m_reader.GetRaw().c_str()); |
| 1711 | TypeBuilder type = TypeBuilder::NamedType(NamedTypeReference::GenerateAutoDemangledTypeReference( |
| 1712 | UnknownNamedTypeClass, QualifiedName())); |
| 1713 | bool cnst = false, vltl = false, rstrct = false; |
| 1714 | bool ref = false; |
| 1715 | bool rvalueRef = false; |
| 1716 | bool substitute = true; |
| 1717 | TypeBuilder newType; |
| 1718 | bool base = false; |
| 1719 | bool isTemplate = false; |
| 1720 | bool hasB = false; |
| 1721 | //[<CV-qualifiers>] |
| 1722 | DemangleCVQualifiers(cnst, vltl, rstrct); |
| 1723 | |
| 1724 | //[<ref-qualifier>] |
| 1725 | if (m_reader.Peek() == 'R') |
| 1726 | { |
| 1727 | m_reader.Consume(); |
| 1728 | ref = true; |
| 1729 | } |
| 1730 | else if (m_reader.Peek() == 'O') |
| 1731 | { |
| 1732 | m_reader.Consume(); |
| 1733 | ref = true; |
| 1734 | rvalueRef = true; |
nothing calls this directly
no test coverage detected