Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
libcxxabi/src/demangle/ItaniumDemangle.h
Show First 20 Lines • Show All 1,375 Lines • ▼ Show 20 Lines | public: | ||||
template<typename Fn> void match(Fn F) const { F(Params); } | template<typename Fn> void match(Fn F) const { F(Params); } | ||||
NodeArray getParams() { return Params; } | NodeArray getParams() { return Params; } | ||||
void printLeft(OutputBuffer &OB) const override { | void printLeft(OutputBuffer &OB) const override { | ||||
ScopedOverride<unsigned> LT(OB.GtIsGt, 0); | ScopedOverride<unsigned> LT(OB.GtIsGt, 0); | ||||
OB += "<"; | OB += "<"; | ||||
Params.printWithComma(OB); | Params.printWithComma(OB); | ||||
if (OB.back() == '>') | |||||
OB += " "; | |||||
OB += ">"; | OB += ">"; | ||||
} | } | ||||
}; | }; | ||||
/// A forward-reference to a template argument that was not known at the point | /// A forward-reference to a template argument that was not known at the point | ||||
/// where the template parameter name was parsed in a mangling. | /// where the template parameter name was parsed in a mangling. | ||||
/// | /// | ||||
/// This is created when demangling the name of a specialization of a | /// This is created when demangling the name of a specialization of a | ||||
▲ Show 20 Lines • Show All 146 Lines • ▼ Show 20 Lines | void printLeft(OutputBuffer &OB) const override { | ||||
case SpecialSubKind::allocator: | case SpecialSubKind::allocator: | ||||
OB += "std::allocator"; | OB += "std::allocator"; | ||||
break; | break; | ||||
case SpecialSubKind::basic_string: | case SpecialSubKind::basic_string: | ||||
OB += "std::basic_string"; | OB += "std::basic_string"; | ||||
break; | break; | ||||
case SpecialSubKind::string: | case SpecialSubKind::string: | ||||
OB += "std::basic_string<char, std::char_traits<char>, " | OB += "std::basic_string<char, std::char_traits<char>, " | ||||
"std::allocator<char> >"; | "std::allocator<char>>"; | ||||
break; | break; | ||||
case SpecialSubKind::istream: | case SpecialSubKind::istream: | ||||
OB += "std::basic_istream<char, std::char_traits<char> >"; | OB += "std::basic_istream<char, std::char_traits<char>>"; | ||||
break; | break; | ||||
case SpecialSubKind::ostream: | case SpecialSubKind::ostream: | ||||
OB += "std::basic_ostream<char, std::char_traits<char> >"; | OB += "std::basic_ostream<char, std::char_traits<char>>"; | ||||
break; | break; | ||||
case SpecialSubKind::iostream: | case SpecialSubKind::iostream: | ||||
OB += "std::basic_iostream<char, std::char_traits<char> >"; | OB += "std::basic_iostream<char, std::char_traits<char>>"; | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
}; | }; | ||||
class SpecialSubstitution final : public Node { | class SpecialSubstitution final : public Node { | ||||
public: | public: | ||||
SpecialSubKind SSK; | SpecialSubKind SSK; | ||||
▲ Show 20 Lines • Show All 332 Lines • ▼ Show 20 Lines | public: | ||||
} | } | ||||
void printLeft(OutputBuffer &OB) const override { | void printLeft(OutputBuffer &OB) const override { | ||||
OB += CastKind; | OB += CastKind; | ||||
{ | { | ||||
ScopedOverride<unsigned> LT(OB.GtIsGt, 0); | ScopedOverride<unsigned> LT(OB.GtIsGt, 0); | ||||
OB += "<"; | OB += "<"; | ||||
To->printLeft(OB); | To->printLeft(OB); | ||||
if (OB.back() == '>') | |||||
OB += " "; | |||||
OB += ">"; | OB += ">"; | ||||
} | } | ||||
OB.printOpen(); | OB.printOpen(); | ||||
From->printAsOperand(OB); | From->printAsOperand(OB); | ||||
OB.printClose(); | OB.printClose(); | ||||
} | } | ||||
}; | }; | ||||
▲ Show 20 Lines • Show All 3,605 Lines • Show Last 20 Lines |