class ASTDeclWriter

Declaration

class ASTDeclWriter : public DeclVisitor { /* full declaration omitted */ };

Description

A simple visitor class that helps create declaration visitors. This class does not preserve constness of Decl pointers (see also ConstDeclVisitor).

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:34

Inherits from: DeclVisitor

Member Variables

private clang::ASTWriter& Writer
private clang::ASTContext& Context
private clang::ASTRecordWriter Record
private serialization::DeclCode Code
private unsigned int AbbrevToUse

Method Overview

Methods

ASTDeclWriter(clang::ASTWriter& Writer,
              clang::ASTContext& Context,
              ASTWriter::RecordDataImpl& Record)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:43

Parameters

clang::ASTWriter& Writer
clang::ASTContext& Context
ASTWriter::RecordDataImpl& Record

void AddFirstDeclFromEachModule(
    const clang::Decl* D,
    bool IncludeLocal)

Description

Add to the record the first declaration from each module file that provides a declaration of D. The intent is to provide a sufficient set such that reloading this set will load all current redeclarations.

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:180

Parameters

const clang::Decl* D
bool IncludeLocal

void AddObjCTypeParamList(
    clang::ObjCTypeParamList* typeParams)

Description

Add an Objective-C type parameter list to the given record.

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:162

Parameters

clang::ObjCTypeParamList* typeParams

template <typename DeclTy>
void AddTemplateSpecializations(DeclTy* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:210

Templates

DeclTy

Parameters

DeclTy* D

uint64_t Emit(clang::Decl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:48

Parameters

clang::Decl* D

void RegisterTemplateSpecialization(
    const clang::Decl* Template,
    const clang::Decl* Specialization)

Description

Ensure that this template specialization is associated with the specified template on reload.

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:250

Parameters

const clang::Decl* Template
const clang::Decl* Specialization

void Visit(clang::Decl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:55

Parameters

clang::Decl* D

void VisitAccessSpecDecl(clang::AccessSpecDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:126

Parameters

clang::AccessSpecDecl* D

void VisitBindingDecl(clang::BindingDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:106

Parameters

clang::BindingDecl* D

void VisitBlockDecl(clang::BlockDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:130

Parameters

clang::BlockDecl* D

void VisitCXXConstructorDecl(
    clang::CXXConstructorDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:93

Parameters

clang::CXXConstructorDecl* D

void VisitCXXConversionDecl(
    clang::CXXConversionDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:95

Parameters

clang::CXXConversionDecl* D

void VisitCXXDeductionGuideDecl(
    clang::CXXDeductionGuideDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:91

Parameters

clang::CXXDeductionGuideDecl* D

void VisitCXXDestructorDecl(
    clang::CXXDestructorDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:94

Parameters

clang::CXXDestructorDecl* D

void VisitCXXMethodDecl(clang::CXXMethodDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:92

Parameters

clang::CXXMethodDecl* D

void VisitCXXRecordDecl(clang::CXXRecordDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:75

Parameters

clang::CXXRecordDecl* D

void VisitCapturedDecl(clang::CapturedDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:131

Parameters

clang::CapturedDecl* D

void VisitClassScopeFunctionSpecializationDecl(
    clang::ClassScopeFunctionSpecializationDecl*
        D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:83

Parameters

clang::ClassScopeFunctionSpecializationDecl* D

void VisitClassTemplateDecl(
    clang::ClassTemplateDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:112

Parameters

clang::ClassTemplateDecl* D

void VisitClassTemplatePartialSpecializationDecl(
    clang::ClassTemplatePartialSpecializationDecl*
        D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:78

Parameters

clang::ClassTemplatePartialSpecializationDecl* D

void VisitClassTemplateSpecializationDecl(
    clang::ClassTemplateSpecializationDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:76

Parameters

clang::ClassTemplateSpecializationDecl* D

void VisitConceptDecl(clang::ConceptDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:109

Parameters

clang::ConceptDecl* D

void VisitConstructorUsingShadowDecl(
    clang::ConstructorUsingShadowDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:121

Parameters

clang::ConstructorUsingShadowDecl* D

void VisitDecl(clang::Decl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:57

Parameters

clang::Decl* D

void VisitDeclContext(clang::DeclContext* DC)

Description

Emit the DeclContext part of a declaration context decl.

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:135

Parameters

clang::DeclContext* DC

void VisitDeclaratorDecl(clang::DeclaratorDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:89

Parameters

clang::DeclaratorDecl* D

void VisitDecompositionDecl(
    clang::DecompositionDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:105

Parameters

clang::DecompositionDecl* D

void VisitEmptyDecl(clang::EmptyDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:132

Parameters

clang::EmptyDecl* D

void VisitEnumConstantDecl(
    clang::EnumConstantDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:87

Parameters

clang::EnumConstantDecl* D

void VisitEnumDecl(clang::EnumDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:73

Parameters

clang::EnumDecl* D

void VisitExportDecl(clang::ExportDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:123

Parameters

clang::ExportDecl* D

void VisitFieldDecl(clang::FieldDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:96

Parameters

clang::FieldDecl* D

void VisitFileScopeAsmDecl(
    clang::FileScopeAsmDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:124

Parameters

clang::FileScopeAsmDecl* D

void VisitFriendDecl(clang::FriendDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:127

Parameters

clang::FriendDecl* D

void VisitFriendTemplateDecl(
    clang::FriendTemplateDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:128

Parameters

clang::FriendTemplateDecl* D

void VisitFunctionDecl(clang::FunctionDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:90

Parameters

clang::FunctionDecl* D

void VisitFunctionTemplateDecl(
    clang::FunctionTemplateDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:114

Parameters

clang::FunctionTemplateDecl* D

void VisitImplicitParamDecl(
    clang::ImplicitParamDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:103

Parameters

clang::ImplicitParamDecl* D

void VisitImportDecl(clang::ImportDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:125

Parameters

clang::ImportDecl* D

void VisitIndirectFieldDecl(
    clang::IndirectFieldDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:101

Parameters

clang::IndirectFieldDecl* D

void VisitLabelDecl(clang::LabelDecl* LD)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:62

Parameters

clang::LabelDecl* LD

void VisitLifetimeExtendedTemporaryDecl(
    clang::LifetimeExtendedTemporaryDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:133

Parameters

clang::LifetimeExtendedTemporaryDecl* D

void VisitLinkageSpecDecl(
    clang::LinkageSpecDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:122

Parameters

clang::LinkageSpecDecl* D

void VisitMSGuidDecl(clang::MSGuidDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:98

Parameters

clang::MSGuidDecl* D

void VisitMSPropertyDecl(clang::MSPropertyDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:97

Parameters

clang::MSPropertyDecl* D

void VisitNamedDecl(clang::NamedDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:61

Parameters

clang::NamedDecl* D

void VisitNamespaceAliasDecl(
    clang::NamespaceAliasDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:65

Parameters

clang::NamespaceAliasDecl* D

void VisitNamespaceDecl(clang::NamespaceDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:63

Parameters

clang::NamespaceDecl* D

void VisitNonTypeTemplateParmDecl(
    clang::NonTypeTemplateParmDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:107

Parameters

clang::NonTypeTemplateParmDecl* D

void VisitOMPAllocateDecl(
    clang::OMPAllocateDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:155

Parameters

clang::OMPAllocateDecl* D

void VisitOMPCapturedExprDecl(
    clang::OMPCapturedExprDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:159

Parameters

clang::OMPCapturedExprDecl* D

void VisitOMPDeclareMapperDecl(
    clang::OMPDeclareMapperDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:158

Parameters

clang::OMPDeclareMapperDecl* D

void VisitOMPDeclareReductionDecl(
    clang::OMPDeclareReductionDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:157

Parameters

clang::OMPDeclareReductionDecl* D

void VisitOMPRequiresDecl(
    clang::OMPRequiresDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:156

Parameters

clang::OMPRequiresDecl* D

void VisitOMPThreadPrivateDecl(
    clang::OMPThreadPrivateDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:154

Parameters

clang::OMPThreadPrivateDecl* D

void VisitObjCAtDefsFieldDecl(
    clang::ObjCAtDefsFieldDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:146

Parameters

clang::ObjCAtDefsFieldDecl* D

void VisitObjCCategoryDecl(
    clang::ObjCCategoryDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:147

Parameters

clang::ObjCCategoryDecl* D

void VisitObjCCategoryImplDecl(
    clang::ObjCCategoryImplDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:149

Parameters

clang::ObjCCategoryImplDecl* D

void VisitObjCCompatibleAliasDecl(
    clang::ObjCCompatibleAliasDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:151

Parameters

clang::ObjCCompatibleAliasDecl* D

void VisitObjCContainerDecl(
    clang::ObjCContainerDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:142

Parameters

clang::ObjCContainerDecl* D

void VisitObjCImplDecl(clang::ObjCImplDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:148

Parameters

clang::ObjCImplDecl* D

void VisitObjCImplementationDecl(
    clang::ObjCImplementationDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:150

Parameters

clang::ObjCImplementationDecl* D

void VisitObjCInterfaceDecl(
    clang::ObjCInterfaceDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:143

Parameters

clang::ObjCInterfaceDecl* D

void VisitObjCIvarDecl(clang::ObjCIvarDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:144

Parameters

clang::ObjCIvarDecl* D

void VisitObjCMethodDecl(clang::ObjCMethodDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:140

Parameters

clang::ObjCMethodDecl* D

void VisitObjCPropertyDecl(
    clang::ObjCPropertyDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:152

Parameters

clang::ObjCPropertyDecl* D

void VisitObjCPropertyImplDecl(
    clang::ObjCPropertyImplDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:153

Parameters

clang::ObjCPropertyImplDecl* D

void VisitObjCProtocolDecl(
    clang::ObjCProtocolDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:145

Parameters

clang::ObjCProtocolDecl* D

void VisitObjCTypeParamDecl(
    clang::ObjCTypeParamDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:141

Parameters

clang::ObjCTypeParamDecl* D

void VisitParmVarDecl(clang::ParmVarDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:104

Parameters

clang::ParmVarDecl* D

void VisitPragmaCommentDecl(
    clang::PragmaCommentDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:58

Parameters

clang::PragmaCommentDecl* D

void VisitPragmaDetectMismatchDecl(
    clang::PragmaDetectMismatchDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:59

Parameters

clang::PragmaDetectMismatchDecl* D

void VisitRecordDecl(clang::RecordDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:74

Parameters

clang::RecordDecl* D

template <typename T>
void VisitRedeclarable(Redeclarable<T>* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:136

Templates

T

Parameters

Redeclarable<T>* D

void VisitRedeclarableTemplateDecl(
    clang::RedeclarableTemplateDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:111

Parameters

clang::RedeclarableTemplateDecl* D

void VisitRequiresExprBodyDecl(
    clang::RequiresExprBodyDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:110

Parameters

clang::RequiresExprBodyDecl* D

void VisitStaticAssertDecl(
    clang::StaticAssertDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:129

Parameters

clang::StaticAssertDecl* D

void VisitTagDecl(clang::TagDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:72

Parameters

clang::TagDecl* D

void VisitTemplateDecl(clang::TemplateDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:108

Parameters

clang::TemplateDecl* D

void VisitTemplateParamObjectDecl(
    clang::TemplateParamObjectDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:100

Parameters

clang::TemplateParamObjectDecl* D

void VisitTemplateTemplateParmDecl(
    clang::TemplateTemplateParmDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:115

Parameters

clang::TemplateTemplateParmDecl* D

void VisitTemplateTypeParmDecl(
    clang::TemplateTypeParmDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:85

Parameters

clang::TemplateTypeParmDecl* D

void VisitTranslationUnitDecl(
    clang::TranslationUnitDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:60

Parameters

clang::TranslationUnitDecl* D

void VisitTypeAliasDecl(clang::TypeAliasDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:69

Parameters

clang::TypeAliasDecl* D

void VisitTypeAliasTemplateDecl(
    clang::TypeAliasTemplateDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:116

Parameters

clang::TypeAliasTemplateDecl* D

void VisitTypeDecl(clang::TypeDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:66

Parameters

clang::TypeDecl* D

void VisitTypedefDecl(clang::TypedefDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:68

Parameters

clang::TypedefDecl* D

void VisitTypedefNameDecl(
    clang::TypedefNameDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:67

Parameters

clang::TypedefNameDecl* D

void VisitUnnamedGlobalConstantDecl(
    clang::UnnamedGlobalConstantDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:99

Parameters

clang::UnnamedGlobalConstantDecl* D

void VisitUnresolvedUsingIfExistsDecl(
    clang::UnresolvedUsingIfExistsDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:71

Parameters

clang::UnresolvedUsingIfExistsDecl* D

void VisitUnresolvedUsingTypenameDecl(
    clang::UnresolvedUsingTypenameDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:70

Parameters

clang::UnresolvedUsingTypenameDecl* D

void VisitUnresolvedUsingValueDecl(
    clang::UnresolvedUsingValueDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:88

Parameters

clang::UnresolvedUsingValueDecl* D

void VisitUsingDecl(clang::UsingDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:117

Parameters

clang::UsingDecl* D

void VisitUsingDirectiveDecl(
    clang::UsingDirectiveDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:64

Parameters

clang::UsingDirectiveDecl* D

void VisitUsingEnumDecl(clang::UsingEnumDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:118

Parameters

clang::UsingEnumDecl* D

void VisitUsingPackDecl(clang::UsingPackDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:119

Parameters

clang::UsingPackDecl* D

void VisitUsingShadowDecl(
    clang::UsingShadowDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:120

Parameters

clang::UsingShadowDecl* D

void VisitValueDecl(clang::ValueDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:86

Parameters

clang::ValueDecl* D

void VisitVarDecl(clang::VarDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:102

Parameters

clang::VarDecl* D

void VisitVarTemplateDecl(
    clang::VarTemplateDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:113

Parameters

clang::VarTemplateDecl* D

void VisitVarTemplatePartialSpecializationDecl(
    clang::VarTemplatePartialSpecializationDecl*
        D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:81

Parameters

clang::VarTemplatePartialSpecializationDecl* D

void VisitVarTemplateSpecializationDecl(
    clang::VarTemplateSpecializationDecl* D)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:80

Parameters

clang::VarTemplateSpecializationDecl* D

ArrayRef<clang::Decl> getPartialSpecializations(
    FunctionTemplateDecl::Common*)

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:205

Parameters

FunctionTemplateDecl::Common*

template <typename T>
decltype(T::PartialSpecializations)&
getPartialSpecializations(T* Common)

Description

Get the list of partial specializations from a template's common ptr.

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:202

Templates

T

Parameters

T* Common

template <typename EntryType>
typename RedeclarableTemplateDecl::
    SpecEntryTraits<EntryType>::DeclType*
    getSpecializationDecl(EntryType& T)

Description

Get the specialization decl from an entry in the specialization list.

Declared at: clang/lib/Serialization/ASTWriterDecl.cpp:196

Templates

EntryType

Parameters

EntryType& T