void TypePrinter::printElaborated(const ElaboratedType *T, std::string &S) { std::string MyString; { llvm::raw_string_ostream OS(MyString); OS << TypeWithKeyword::getKeywordName(T->getKeyword()); if (T->getKeyword() != ETK_None) OS << " "; NestedNameSpecifier* Qualifier = T->getQualifier(); if (Qualifier) Qualifier->print(OS, Policy); } std::string TypeStr; PrintingPolicy InnerPolicy(Policy); InnerPolicy.SuppressTagKeyword = true; InnerPolicy.SuppressScope = true; TypePrinter(InnerPolicy).print(T->getNamedType(), TypeStr); MyString += TypeStr; if (S.empty()) S.swap(MyString); else S = MyString + ' ' + S; }
void TypePrinter::printElaboratedBefore(const ElaboratedType *T, raw_ostream &OS) { OS << TypeWithKeyword::getKeywordName(T->getKeyword()); if (T->getKeyword() != ETK_None) OS << " "; NestedNameSpecifier* Qualifier = T->getQualifier(); if (Qualifier) Qualifier->print(OS, Policy); ElaboratedTypePolicyRAII PolicyRAII(Policy); printBefore(T->getNamedType(), OS); }