clang 22.0.0git
TypePrinter.cpp File Reference
#include "clang/AST/ASTContext.h"
#include "clang/AST/Attr.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclBase.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/Expr.h"
#include "clang/AST/NestedNameSpecifier.h"
#include "clang/AST/PrettyPrinter.h"
#include "clang/AST/TemplateBase.h"
#include "clang/AST/TemplateName.h"
#include "clang/AST/Type.h"
#include "clang/Basic/AddressSpaces.h"
#include "clang/Basic/AttrKinds.h"
#include "clang/Basic/ExceptionSpecificationType.h"
#include "clang/Basic/IdentifierTable.h"
#include "clang/Basic/LLVM.h"
#include "clang/Basic/LangOptions.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/Specifiers.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/SaveAndRestore.h"
#include "llvm/Support/raw_ostream.h"
#include <cassert>
#include <string>
#include "clang/AST/TypeNodes.inc"
#include "clang/Basic/TransformTypeTraits.def"
#include "clang/Basic/AttrList.inc"

Go to the source code of this file.

Macros

#define ABSTRACT_TYPE(CLASS, PARENT)
#define TYPE(CLASS, PARENT)
#define ABSTRACT_TYPE(CLASS, PARENT)
#define TYPE(CLASS, PARENT)
#define ABSTRACT_TYPE(CLASS, PARENT)
#define TYPE(CLASS, PARENT)
#define CC_VLS_CASE(ABI_VLEN)
#define TRANSFORM_TYPE_TRAIT_DEF(Enum, Trait)
#define TYPE_ATTR(NAME)
#define DECL_OR_TYPE_ATTR(NAME)
#define ATTR(NAME)

Functions

static void AppendTypeQualList (raw_ostream &OS, unsigned TypeQuals, bool HasRestrictKeyword)
static SplitQualType splitAccordingToPolicy (QualType QT, const PrintingPolicy &Policy)
static QualType skipTopLevelReferences (QualType T)
static void printCountAttributedImpl (const CountAttributedType *T, raw_ostream &OS, const PrintingPolicy &Policy)
static const TemplateArgumentgetArgument (const TemplateArgument &A)
static const TemplateArgumentgetArgument (const TemplateArgumentLoc &A)
static void printArgument (const TemplateArgument &A, const PrintingPolicy &PP, llvm::raw_ostream &OS, bool IncludeType)
static void printArgument (const TemplateArgumentLoc &A, const PrintingPolicy &PP, llvm::raw_ostream &OS, bool IncludeType)
static bool isSubstitutedTemplateArgument (ASTContext &Ctx, TemplateArgument Arg, TemplateArgument Pattern, ArrayRef< TemplateArgument > Args, unsigned Depth)
static bool isSubstitutedType (ASTContext &Ctx, QualType T, QualType Pattern, ArrayRef< TemplateArgument > Args, unsigned Depth)
static bool templateArgumentExpressionsEqual (ASTContext const &Ctx, TemplateArgument const &Pattern, TemplateArgument const &Arg)
 Evaluates the expression template argument 'Pattern' and returns true if 'Arg' evaluates to the same result.
template<typename TA>
static void printTo (raw_ostream &OS, ArrayRef< TA > Args, const PrintingPolicy &Policy, const TemplateParameterList *TPL, bool IsPack, unsigned ParmIndex)

Macro Definition Documentation

◆ ABSTRACT_TYPE [1/3]

#define ABSTRACT_TYPE ( CLASS,
PARENT )

Definition at line 138 of file TypePrinter.cpp.

◆ ABSTRACT_TYPE [2/3]

#define ABSTRACT_TYPE ( CLASS,
PARENT )

Definition at line 138 of file TypePrinter.cpp.

◆ ABSTRACT_TYPE [3/3]

#define ABSTRACT_TYPE ( CLASS,
PARENT )

Definition at line 138 of file TypePrinter.cpp.

◆ ATTR

#define ATTR ( NAME)
Value:
case attr::NAME:

◆ CC_VLS_CASE

#define CC_VLS_CASE ( ABI_VLEN)
Value:
case CC_RISCVVLSCall_##ABI_VLEN: \
OS << "__attribute__((riscv_vls_cc" #ABI_VLEN "))"; \
break;

◆ DECL_OR_TYPE_ATTR

#define DECL_OR_TYPE_ATTR ( NAME)

◆ TRANSFORM_TYPE_TRAIT_DEF

#define TRANSFORM_TYPE_TRAIT_DEF ( Enum,
Trait )
Value:
{UnaryTransformType::Enum, "__" #Trait},

◆ TYPE [1/3]

#define TYPE ( CLASS,
PARENT )
Value:
void print##CLASS##Before(const CLASS##Type *T, raw_ostream &OS); \
void print##CLASS##After(const CLASS##Type *T, raw_ostream &OS);
static void print(llvm::raw_ostream &OS, const T &V, ASTContext &ASTCtx, QualType Ty)
The base class of the type hierarchy.
Definition TypeBase.h:1833
const FunctionProtoType * T

Definition at line 139 of file TypePrinter.cpp.

◆ TYPE [2/3]

#define TYPE ( CLASS,
PARENT )
Value:
case Type::CLASS: \
print##CLASS##Before(cast<CLASS##Type>(T), OS); \
break;
U cast(CodeGen::Address addr)
Definition Address.h:327

Definition at line 139 of file TypePrinter.cpp.

◆ TYPE [3/3]

#define TYPE ( CLASS,
PARENT )
Value:
case Type::CLASS: \
print##CLASS##After(cast<CLASS##Type>(T), OS); \
break;

Definition at line 139 of file TypePrinter.cpp.

◆ TYPE_ATTR

#define TYPE_ATTR ( NAME)

Function Documentation

◆ AppendTypeQualList()

void AppendTypeQualList ( raw_ostream & OS,
unsigned TypeQuals,
bool HasRestrictKeyword )
static

◆ getArgument() [1/2]

◆ getArgument() [2/2]

const TemplateArgument & getArgument ( const TemplateArgumentLoc & A)
static

Definition at line 2339 of file TypePrinter.cpp.

References clang::TemplateArgumentLoc::getArgument().

◆ isSubstitutedTemplateArgument()

◆ isSubstitutedType()

◆ printArgument() [1/2]

void printArgument ( const TemplateArgument & A,
const PrintingPolicy & PP,
llvm::raw_ostream & OS,
bool IncludeType )
static

Definition at line 2343 of file TypePrinter.cpp.

References clang::TemplateArgument::print().

Referenced by printTo().

◆ printArgument() [2/2]

◆ printCountAttributedImpl()

void printCountAttributedImpl ( const CountAttributedType * T,
raw_ostream & OS,
const PrintingPolicy & Policy )
static

Definition at line 1849 of file TypePrinter.cpp.

References clang::T.

◆ printTo()

◆ skipTopLevelReferences()

QualType skipTopLevelReferences ( QualType T)
static

Definition at line 441 of file TypePrinter.cpp.

References skipTopLevelReferences(), and clang::T.

Referenced by skipTopLevelReferences().

◆ splitAccordingToPolicy()

◆ templateArgumentExpressionsEqual()

bool templateArgumentExpressionsEqual ( ASTContext const & Ctx,
TemplateArgument const & Pattern,
TemplateArgument const & Arg )
static