clang API Documentation
#include "clang/AST/ASTContext.h"
#include "clang/AST/Attr.h"
#include "clang/AST/CharUnits.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/Expr.h"
#include "clang/AST/PrettyPrinter.h"
#include "clang/AST/Type.h"
#include "clang/AST/TypeVisitor.h"
#include "clang/Basic/Specifiers.h"
#include "llvm/ADT/APSInt.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include "clang/AST/TypeNodes.def"
Go to the source code of this file.
Classes | |
class | clang::TypePropertyCache< Private > |
Namespaces | |
namespace | clang |
Defines | |
#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 | ABSTRACT_TYPE(Class, Parent) |
#define | TYPE(Class, Parent) |
#define | ABSTRACT_TYPE(Class, Parent) |
#define | TYPE(Class, Parent) |
#define | ABSTRACT_TYPE(Derived, Base) |
#define | TYPE(Derived, Base) case Derived: return #Derived; |
#define | TYPE(Class, Base) |
#define | NON_CANONICAL_TYPE(Class, Base) case Type::Class: |
#define | TYPE(Class, Base) |
#define | DEPENDENT_TYPE(Class, Base) case Type::Class: |
#define | NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Class, Base) case Type::Class: |
#define | TYPE(Class, Base) |
#define | NON_CANONICAL_TYPE(Class, Base) case Type::Class: |
#define | TYPE(Class, Base) |
#define | DEPENDENT_TYPE(Class, Base) case Type::Class: |
#define | NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Class, Base) case Type::Class: |
Typedefs | |
typedef TypePropertyCache < Private > | Cache |
Functions | |
template<typename T > | |
static const T * | getAsSugar (const Type *Cur) |
This will check for a T (which should be a Type which can act as sugar, such as a TypedefType) by removing any existing sugar until it reaches a T or a non-sugared type. | |
static TagDecl * | getInterestingTagDecl (TagDecl *decl) |
static CachedProperties | computeCachedProperties (const Type *T) |
static LinkageInfo | computeLinkageInfo (QualType T) |
static LinkageInfo | computeLinkageInfo (const Type *T) |
#define ABSTRACT_TYPE | ( | Class, | |
Parent | |||
) |
#define ABSTRACT_TYPE | ( | Class, | |
Parent | |||
) |
#define ABSTRACT_TYPE | ( | Class, | |
Parent | |||
) |
#define ABSTRACT_TYPE | ( | Class, | |
Parent | |||
) |
#define ABSTRACT_TYPE | ( | Class, | |
Parent | |||
) |
#define ABSTRACT_TYPE | ( | Derived, | |
Base | |||
) |
#define DEPENDENT_TYPE | ( | Class, | |
Base | |||
) | case Type::Class: |
#define DEPENDENT_TYPE | ( | Class, | |
Base | |||
) | case Type::Class: |
#define NON_CANONICAL_TYPE | ( | Class, | |
Base | |||
) | case Type::Class: |
#define NON_CANONICAL_TYPE | ( | Class, | |
Base | |||
) | case Type::Class: |
#define NON_CANONICAL_UNLESS_DEPENDENT_TYPE | ( | Class, | |
Base | |||
) | case Type::Class: |
#define NON_CANONICAL_UNLESS_DEPENDENT_TYPE | ( | Class, | |
Base | |||
) | case Type::Class: |
#define TYPE | ( | Class, | |
Parent | |||
) |
#define TYPE | ( | Class, | |
Parent | |||
) |
case Type::Class: { \ const Class##Type *Ty = cast<Class##Type>(CurTy); \ if (!Ty->isSugared()) \ return SplitQualType(Ty, Qs); \ Cur = Ty->desugar(); \ break; \ }
#define TYPE | ( | Class, | |
Parent | |||
) |
case Type::Class: { \ const Class##Type *ty = cast<Class##Type>(split.Ty); \ if (!ty->isSugared()) goto done; \ next = ty->desugar(); \ break; \ }
#define TYPE | ( | Class, | |
Parent | |||
) |
case Type::Class: { \ const Class##Type *Ty = cast<Class##Type>(Cur); \ if (!Ty->isSugared()) return 0; \ Cur = Ty->desugar().getTypePtr(); \ break; \ }
#define TYPE | ( | Class, | |
Parent | |||
) |
case Class: { \ const Class##Type *Ty = cast<Class##Type>(Cur); \ if (!Ty->isSugared()) return Cur; \ Cur = Ty->desugar().getTypePtr(); \ break; \ }
typedef TypePropertyCache<Private> Cache |
static CachedProperties computeCachedProperties | ( | const Type * | T | ) | [static] |
Definition at line 2155 of file Type.cpp.
References clang::ExternalLinkage, clang::TypePropertyCache< Private >::get(), clang::MemberPointerType::getClass(), clang::Decl::getDeclContext(), getElementType(), clang::NamedDecl::getLinkageInternal(), clang::MemberPointerType::getPointeeType(), clang::FunctionType::getReturnType(), clang::Type::getTypeClass(), clang::TagDecl::hasNameForLinkage(), clang::DeclContext::isFunctionOrMethod(), clang::Type::isInstantiationDependentType(), clang::FunctionProtoType::param_types(), and Record.
Referenced by clang::TypePropertyCache< Private >::ensure().
static LinkageInfo computeLinkageInfo | ( | QualType | T | ) | [static] |
Definition at line 2326 of file Type.cpp.
References clang::QualType::getTypePtr().
Referenced by computeLinkageInfo(), clang::Type::getLinkageAndVisibility(), and clang::Type::isLinkageValid().
static LinkageInfo computeLinkageInfo | ( | const Type * | T | ) | [static] |
Definition at line 2257 of file Type.cpp.
References computeLinkageInfo(), clang::LinkageInfo::external(), clang::MemberPointerType::getClass(), getElementType(), clang::MemberPointerType::getPointeeType(), clang::FunctionType::getReturnType(), clang::Type::getTypeClass(), clang::Type::isInstantiationDependentType(), clang::LinkageInfo::merge(), clang::FunctionProtoType::param_types(), and Record.
static const T* getAsSugar | ( | const Type * | Cur | ) | [static] |
This will check for a T (which should be a Type which can act as sugar, such as a TypedefType) by removing any existing sugar until it reaches a T or a non-sugared type.
Definition at line 315 of file Type.cpp.
References clang::Type::getTypeClass().
static TagDecl* getInterestingTagDecl | ( | TagDecl * | decl | ) | [static] |
Definition at line 1871 of file Type.cpp.
References clang::ast_matchers::decl, and clang::Redeclarable< decl_type >::redecls().
Referenced by clang::TagType::getDecl(), and clang::InjectedClassNameType::getDecl().