//===--- TypePrinter.cpp - Pretty-Print Clang Types -----------------------===////// The LLVM Compiler Infrastructure//// This file is distributed under the University of Illinois Open Source// License. See LICENSE.TXT for details.////===----------------------------------------------------------------------===////// This contains code to print types from Clang's type system.////===----------------------------------------------------------------------===//#include"clang/AST/PrettyPrinter.h"#include"clang/AST/ASTContext.h"#include"clang/AST/Decl.h"#include"clang/AST/DeclObjC.h"#include"clang/AST/DeclTemplate.h"#include"clang/AST/Expr.h"#include"clang/AST/Type.h"#include"clang/Basic/LangOptions.h"#include"clang/Basic/SourceManager.h"#include"llvm/ADT/SmallString.h"#include"llvm/ADT/StringExtras.h"#include"llvm/Support/SaveAndRestore.h"#include"llvm/Support/raw_ostream.h"usingnamespaceclang;namespace{/// \brief RAII object that enables printing of the ARC __strong lifetime/// qualifier.classIncludeStrongLifetimeRAII{PrintingPolicy&Policy;boolOld;public:explicitIncludeStrongLifetimeRAII(PrintingPolicy&Policy):Policy(Policy),Old(Policy.SuppressStrongLifetime){Policy.SuppressStrongLifetime=false;}~IncludeStrongLifetimeRAII(){Policy.SuppressStrongLifetime=Old;}};class<