clang API Documentation

Classes | Public Types | Public Member Functions | Friends
clang::ASTWriter Class Reference

Writes an AST file containing the contents of a translation unit. More...

#include <ASTWriter.h>

Inheritance diagram for clang::ASTWriter:
Inheritance graph
[legend]
Collaboration diagram for clang::ASTWriter:
Collaboration graph
[legend]

List of all members.

Classes

struct  DeclIDInFileInfo
class  DeclOrType
 Stores a declaration or a type to be written to the AST file.
struct  QueuedCXXBaseSpecifiers
 A set of C++ base specifiers that is queued to be written into the AST file.
struct  ReplacedDeclInfo

Public Types

typedef SmallVector< uint64_t, 64 > RecordData
typedef SmallVectorImpl< uint64_t > RecordDataImpl

Public Member Functions

 ASTWriter (llvm::BitstreamWriter &Stream)
 Create a new precompiled header writer that outputs to the given bitstream.
 ~ASTWriter ()
void WriteAST (Sema &SemaRef, MemorizeStatCalls *StatCalls, const std::string &OutputFile, Module *WritingModule, StringRef isysroot, bool hasErrors=false)
 Write a precompiled header for the given semantic analysis.
void AddSourceLocation (SourceLocation Loc, RecordDataImpl &Record)
 Emit a source location.
void AddSourceRange (SourceRange Range, RecordDataImpl &Record)
 Emit a source range.
void AddAPInt (const llvm::APInt &Value, RecordDataImpl &Record)
 Emit an integral value.
void AddAPSInt (const llvm::APSInt &Value, RecordDataImpl &Record)
 Emit a signed integral value.
void AddAPFloat (const llvm::APFloat &Value, RecordDataImpl &Record)
 Emit a floating-point value.
void AddIdentifierRef (const IdentifierInfo *II, RecordDataImpl &Record)
 Emit a reference to an identifier.
void AddSelectorRef (Selector, RecordDataImpl &Record)
 Emit a Selector (which is a smart pointer reference).
void AddCXXTemporary (const CXXTemporary *Temp, RecordDataImpl &Record)
 Emit a CXXTemporary.
void AddCXXBaseSpecifiersRef (CXXBaseSpecifier const *Bases, CXXBaseSpecifier const *BasesEnd, RecordDataImpl &Record)
 Emit a set of C++ base specifiers to the record.
serialization::SelectorID getSelectorRef (Selector Sel)
 Get the unique number used to refer to the given selector.
serialization::IdentID getIdentifierRef (const IdentifierInfo *II)
 Get the unique number used to refer to the given identifier.
uint64_t getMacroOffset (const IdentifierInfo *II)
 Retrieve the offset of the macro definition for the given identifier.
void AddTypeRef (QualType T, RecordDataImpl &Record)
 Emit a reference to a type.
serialization::TypeID GetOrCreateTypeID (QualType T)
 Force a type to be emitted and get its ID.
serialization::TypeID getTypeID (QualType T) const
 Determine the type ID of an already-emitted type.
serialization::TypeIdx GetOrCreateTypeIdx (QualType T)
 Force a type to be emitted and get its index.
serialization::TypeIdx getTypeIdx (QualType T) const
 Determine the type index of an already-emitted type.
void AddTypeSourceInfo (TypeSourceInfo *TInfo, RecordDataImpl &Record)
 Emits a reference to a declarator info.
void AddTypeLoc (TypeLoc TL, RecordDataImpl &Record)
 Emits a type with source-location information.
void AddTemplateArgumentLocInfo (TemplateArgument::ArgKind Kind, const TemplateArgumentLocInfo &Arg, RecordDataImpl &Record)
 Emits a template argument location info.
void AddTemplateArgumentLoc (const TemplateArgumentLoc &Arg, RecordDataImpl &Record)
 Emits a template argument location.
void AddDeclRef (const Decl *D, RecordDataImpl &Record)
 Emit a reference to a declaration.
serialization::DeclID GetDeclRef (const Decl *D)
 Force a declaration to be emitted and get its ID.
serialization::DeclID getDeclID (const Decl *D)
 Determine the declaration ID of an already-emitted declaration.
void AddDeclarationName (DeclarationName Name, RecordDataImpl &Record)
 Emit a declaration name.
void AddDeclarationNameLoc (const DeclarationNameLoc &DNLoc, DeclarationName Name, RecordDataImpl &Record)
void AddDeclarationNameInfo (const DeclarationNameInfo &NameInfo, RecordDataImpl &Record)
void AddQualifierInfo (const QualifierInfo &Info, RecordDataImpl &Record)
void AddNestedNameSpecifier (NestedNameSpecifier *NNS, RecordDataImpl &Record)
 Emit a nested name specifier.
void AddNestedNameSpecifierLoc (NestedNameSpecifierLoc NNS, RecordDataImpl &Record)
 Emit a nested name specifier with source-location information.
void AddTemplateName (TemplateName Name, RecordDataImpl &Record)
 Emit a template name.
void AddTemplateArgument (const TemplateArgument &Arg, RecordDataImpl &Record)
 Emit a template argument.
void AddTemplateParameterList (const TemplateParameterList *TemplateParams, RecordDataImpl &Record)
 Emit a template parameter list.
void AddTemplateArgumentList (const TemplateArgumentList *TemplateArgs, RecordDataImpl &Record)
 Emit a template argument list.
void AddUnresolvedSet (const UnresolvedSetImpl &Set, RecordDataImpl &Record)
 Emit a UnresolvedSet structure.
void AddCXXBaseSpecifier (const CXXBaseSpecifier &Base, RecordDataImpl &Record)
 Emit a C++ base specifier.
void AddCXXCtorInitializers (const CXXCtorInitializer *const *CtorInitializers, unsigned NumCtorInitializers, RecordDataImpl &Record)
 Emit a CXXCtorInitializer array.
void AddCXXDefinitionData (const CXXRecordDecl *D, RecordDataImpl &Record)
void AddString (StringRef Str, RecordDataImpl &Record)
 Add a string to the given record.
void AddVersionTuple (const VersionTuple &Version, RecordDataImpl &Record)
 Add a version tuple to the given record.
void AddUpdatedDeclContext (const DeclContext *DC)
 Mark a declaration context as needing an update.
void RewriteDecl (const Decl *D)
bool isRewritten (const Decl *D) const
serialization::SubmoduleID inferSubmoduleIDFromLocation (SourceLocation Loc)
 Infer the submodule ID that contains an entity at the given source location.
void SetIdentifierOffset (const IdentifierInfo *II, uint32_t Offset)
 Note that the identifier II occurs at the given offset within the identifier table.
void SetSelectorOffset (Selector Sel, uint32_t Offset)
 Note that the selector Sel occurs at the given offset within the method pool/selector table.
void AddStmt (Stmt *S)
 Add the given statement or expression to the queue of statements to emit.
void FlushStmts ()
 Flush all of the statements and expressions that have been added to the queue via AddStmt().
void FlushCXXBaseSpecifiers ()
 Flush all of the C++ base specifier sets that have been added via AddCXXBaseSpecifiersRef().
unsigned RecordSwitchCaseID (SwitchCase *S)
 Record an ID for the given switch-case statement.
unsigned getSwitchCaseID (SwitchCase *S)
 Retrieve the ID for the given switch-case statement.
void ClearSwitchCaseIDs ()
unsigned getDeclParmVarAbbrev () const
unsigned getDeclRefExprAbbrev () const
unsigned getCharacterLiteralAbbrev () const
unsigned getDeclRecordAbbrev () const
unsigned getIntegerLiteralAbbrev () const
unsigned getDeclTypedefAbbrev () const
unsigned getDeclVarAbbrev () const
unsigned getDeclFieldAbbrev () const
unsigned getDeclEnumAbbrev () const
unsigned getDeclObjCIvarAbbrev () const
bool hasChain () const
void ReaderInitialized (ASTReader *Reader)
 The ASTReader was initialized.
void IdentifierRead (serialization::IdentID ID, IdentifierInfo *II)
 An identifier was deserialized from the AST file.
void TypeRead (serialization::TypeIdx Idx, QualType T)
 A type was deserialized from the AST file. The ID here has the qualifier bits already removed, and T is guaranteed to be locally unqualified.
void SelectorRead (serialization::SelectorID ID, Selector Sel)
 A selector was read from the AST file.
void MacroDefinitionRead (serialization::PreprocessedEntityID ID, MacroDefinition *MD)
 A macro definition was read from the AST file.
void MacroVisible (IdentifierInfo *II)
 A macro definition that had previously been deserialized (and removed via IdentifierRead) has now been made visible.
void ModuleRead (serialization::SubmoduleID ID, Module *Mod)
 A module definition was read from the AST file.
virtual void CompletedTagDefinition (const TagDecl *D)
 A new TagDecl definition was completed.
virtual void AddedVisibleDecl (const DeclContext *DC, const Decl *D)
 A new declaration with name has been added to a DeclContext.
virtual void AddedCXXImplicitMember (const CXXRecordDecl *RD, const Decl *D)
 An implicit member was added after the definition was completed.
virtual void AddedCXXTemplateSpecialization (const ClassTemplateDecl *TD, const ClassTemplateSpecializationDecl *D)
 A template specialization (or partial one) was added to the template declaration.
virtual void AddedCXXTemplateSpecialization (const FunctionTemplateDecl *TD, const FunctionDecl *D)
 A template specialization (or partial one) was added to the template declaration.
virtual void CompletedImplicitDefinition (const FunctionDecl *D)
 An implicit member got a definition.
virtual void StaticDataMemberInstantiated (const VarDecl *D)
 A static data member was implicitly instantiated.
virtual void AddedObjCCategoryToInterface (const ObjCCategoryDecl *CatD, const ObjCInterfaceDecl *IFD)
 A new objc category class was added for an interface.
virtual void AddedObjCPropertyInClassExtension (const ObjCPropertyDecl *Prop, const ObjCPropertyDecl *OrigProp, const ObjCCategoryDecl *ClassExt)
 A objc class extension redeclared or introduced a property.

Friends

class ASTDeclWriter
class ASTStmtWriter

Detailed Description

Writes an AST file containing the contents of a translation unit.

The ASTWriter class produces a bitstream containing the serialized representation of a given abstract syntax tree and its supporting data structures. This bitstream can be de-serialized via an instance of the ASTReader class.

Definition at line 72 of file ASTWriter.h.


Member Typedef Documentation

typedef SmallVector<uint64_t, 64> clang::ASTWriter::RecordData

Definition at line 75 of file ASTWriter.h.

typedef SmallVectorImpl<uint64_t> clang::ASTWriter::RecordDataImpl

Definition at line 76 of file ASTWriter.h.


Constructor & Destructor Documentation

ASTWriter::ASTWriter ( llvm::BitstreamWriter &  Stream)

Create a new precompiled header writer that outputs to the given bitstream.

Definition at line 3122 of file ASTWriter.cpp.

ASTWriter::~ASTWriter ( )

Definition at line 3145 of file ASTWriter.cpp.


Member Function Documentation

void ASTWriter::AddAPFloat ( const llvm::APFloat &  Value,
RecordDataImpl Record 
)

Emit a floating-point value.

Definition at line 3667 of file ASTWriter.cpp.

References AddAPInt().

void ASTWriter::AddAPInt ( const llvm::APInt &  Value,
RecordDataImpl Record 
)

Emit an integral value.

Definition at line 3656 of file ASTWriter.cpp.

Referenced by AddAPFloat(), and AddAPSInt().

void ASTWriter::AddAPSInt ( const llvm::APSInt &  Value,
RecordDataImpl Record 
)

Emit a signed integral value.

Definition at line 3662 of file ASTWriter.cpp.

References AddAPInt().

Referenced by AddTemplateArgument().

void ASTWriter::AddCXXBaseSpecifier ( const CXXBaseSpecifier Base,
RecordDataImpl Record 
)
void ASTWriter::AddCXXBaseSpecifiersRef ( CXXBaseSpecifier const *  Bases,
CXXBaseSpecifier const *  BasesEnd,
RecordDataImpl Record 
)

Emit a set of C++ base specifiers to the record.

Definition at line 3710 of file ASTWriter.cpp.

Referenced by AddCXXDefinitionData().

void ASTWriter::AddCXXCtorInitializers ( const CXXCtorInitializer *const *  CtorInitializers,
unsigned  NumCtorInitializers,
RecordDataImpl Record 
)
void ASTWriter::AddCXXDefinitionData ( const CXXRecordDecl D,
RecordDataImpl Record 
)
void ASTWriter::AddCXXTemporary ( const CXXTemporary Temp,
RecordDataImpl Record 
)

Emit a CXXTemporary.

Definition at line 3706 of file ASTWriter.cpp.

References AddDeclRef(), and clang::CXXTemporary::getDestructor().

void ASTWriter::AddDeclarationName ( DeclarationName  Name,
RecordDataImpl Record 
)
void ASTWriter::AddDeclarationNameInfo ( const DeclarationNameInfo NameInfo,
RecordDataImpl Record 
)
void ASTWriter::AddDeclarationNameLoc ( const DeclarationNameLoc DNLoc,
DeclarationName  Name,
RecordDataImpl Record 
)
void ASTWriter::AddDeclRef ( const Decl D,
RecordDataImpl Record 
)
void ASTWriter::AddedCXXImplicitMember ( const CXXRecordDecl RD,
const Decl D 
) [virtual]

An implicit member was added after the definition was completed.

Reimplemented from clang::ASTMutationListener.

Definition at line 4465 of file ASTWriter.cpp.

References clang::TagDecl::isCompleteDefinition(), clang::Decl::isFromASTFile(), clang::Decl::isImplicit(), and clang::serialization::UPD_CXX_ADDED_IMPLICIT_MEMBER.

void ASTWriter::AddedCXXTemplateSpecialization ( const ClassTemplateDecl TD,
const ClassTemplateSpecializationDecl D 
) [virtual]

A template specialization (or partial one) was added to the template declaration.

Reimplemented from clang::ASTMutationListener.

Definition at line 4480 of file ASTWriter.cpp.

References clang::ClassTemplateDecl::getCanonicalDecl(), clang::Decl::isFromASTFile(), and clang::serialization::UPD_CXX_ADDED_TEMPLATE_SPECIALIZATION.

void ASTWriter::AddedCXXTemplateSpecialization ( const FunctionTemplateDecl TD,
const FunctionDecl D 
) [virtual]

A template specialization (or partial one) was added to the template declaration.

Reimplemented from clang::ASTMutationListener.

Definition at line 4493 of file ASTWriter.cpp.

References clang::FunctionTemplateDecl::getCanonicalDecl(), clang::Decl::isFromASTFile(), and clang::serialization::UPD_CXX_ADDED_TEMPLATE_SPECIALIZATION.

void ASTWriter::AddedObjCCategoryToInterface ( const ObjCCategoryDecl CatD,
const ObjCInterfaceDecl IFD 
) [virtual]

A new objc category class was added for an interface.

Reimplemented from clang::ASTMutationListener.

Definition at line 4529 of file ASTWriter.cpp.

References clang::ObjCInterfaceDecl::getDefinition(), and clang::Decl::isFromASTFile().

void ASTWriter::AddedObjCPropertyInClassExtension ( const ObjCPropertyDecl Prop,
const ObjCPropertyDecl OrigProp,
const ObjCCategoryDecl ClassExt 
) [virtual]

A objc class extension redeclared or introduced a property.

Parameters:
Propthe property in the class extension
OrigPropthe property from the original interface that was declared or null if the property was introduced.
ClassExtthe class extension.

Reimplemented from clang::ASTMutationListener.

Definition at line 4541 of file ASTWriter.cpp.

References clang::ObjCCategoryDecl::getClassInterface(), clang::Decl::isFromASTFile(), and RewriteDecl().

void ASTWriter::AddedVisibleDecl ( const DeclContext DC,
const Decl D 
) [virtual]

A new declaration with name has been added to a DeclContext.

Reimplemented from clang::ASTMutationListener.

Definition at line 4452 of file ASTWriter.cpp.

References AddUpdatedDeclContext(), and clang::Decl::isFromASTFile().

void ASTWriter::AddIdentifierRef ( const IdentifierInfo II,
RecordDataImpl Record 
)

Emit a reference to an identifier.

Definition at line 3671 of file ASTWriter.cpp.

References getIdentifierRef().

Referenced by AddDeclarationName(), AddNestedNameSpecifier(), AddNestedNameSpecifierLoc(), and AddTemplateName().

void ASTWriter::AddNestedNameSpecifier ( NestedNameSpecifier NNS,
RecordDataImpl Record 
)
void ASTWriter::AddNestedNameSpecifierLoc ( NestedNameSpecifierLoc  NNS,
RecordDataImpl Record 
)
void ASTWriter::AddQualifierInfo ( const QualifierInfo Info,
RecordDataImpl Record 
)
void ASTWriter::AddSelectorRef ( Selector  SelRef,
RecordDataImpl Record 
)

Emit a Selector (which is a smart pointer reference).

Definition at line 3685 of file ASTWriter.cpp.

References getSelectorRef().

Referenced by AddDeclarationName().

void ASTWriter::AddSourceLocation ( SourceLocation  Loc,
RecordDataImpl Record 
)
void ASTWriter::AddSourceRange ( SourceRange  Range,
RecordDataImpl Record 
)

Emit a source range.

Definition at line 3651 of file ASTWriter.cpp.

References AddSourceLocation(), clang::SourceRange::getBegin(), and clang::SourceRange::getEnd().

Referenced by AddCXXBaseSpecifier(), and AddNestedNameSpecifierLoc().

void clang::ASTWriter::AddStmt ( Stmt S) [inline]

Add the given statement or expression to the queue of statements to emit.

This routine should be used when emitting types and declarations that have expressions as part of their formulation. Once the type or declaration has been written, call FlushStmts() to write the corresponding statements just after the type or declaration.

Definition at line 647 of file ASTWriter.h.

Referenced by AddCXXCtorInitializers(), AddTemplateArgument(), and AddTemplateArgumentLocInfo().

void ASTWriter::AddString ( StringRef  Str,
RecordDataImpl Record 
)

Add a string to the given record.

Definition at line 3082 of file ASTWriter.cpp.

void ASTWriter::AddTemplateArgument ( const TemplateArgument Arg,
RecordDataImpl Record 
)
void ASTWriter::AddTemplateArgumentList ( const TemplateArgumentList TemplateArgs,
RecordDataImpl Record 
)

Emit a template argument list.

Definition at line 4192 of file ASTWriter.cpp.

References AddTemplateArgument(), clang::TemplateArgumentList::get(), and clang::TemplateArgumentList::size().

void ASTWriter::AddTemplateArgumentLoc ( const TemplateArgumentLoc Arg,
RecordDataImpl Record 
)
void ASTWriter::AddTemplateArgumentLocInfo ( TemplateArgument::ArgKind  Kind,
const TemplateArgumentLocInfo Arg,
RecordDataImpl Record 
)
void ASTWriter::AddTemplateName ( TemplateName  Name,
RecordDataImpl Record 
)
void ASTWriter::AddTemplateParameterList ( const TemplateParameterList TemplateParams,
RecordDataImpl Record 
)
void ASTWriter::AddTypeLoc ( TypeLoc  TL,
RecordDataImpl Record 
)

Emits a type with source-location information.

Definition at line 3772 of file ASTWriter.cpp.

References AddTypeRef(), clang::TypeLoc::getNextTypeLoc(), clang::TypeLoc::getType(), and clang::TypeLoc::isNull().

Referenced by AddNestedNameSpecifierLoc(), and AddTypeSourceInfo().

void ASTWriter::AddTypeRef ( QualType  T,
RecordDataImpl Record 
)

Emit a reference to a type.

Definition at line 3780 of file ASTWriter.cpp.

References GetOrCreateTypeID().

Referenced by AddDeclarationName(), AddNestedNameSpecifier(), AddTemplateArgument(), AddTypeLoc(), and AddTypeSourceInfo().

void ASTWriter::AddTypeSourceInfo ( TypeSourceInfo TInfo,
RecordDataImpl Record 
)

Emits a reference to a declarator info.

Definition at line 3762 of file ASTWriter.cpp.

References AddTypeLoc(), AddTypeRef(), and clang::TypeSourceInfo::getTypeLoc().

Referenced by AddCXXBaseSpecifier(), AddCXXCtorInitializers(), AddDeclarationNameLoc(), and AddTemplateArgumentLocInfo().

void ASTWriter::AddUnresolvedSet ( const UnresolvedSetImpl Set,
RecordDataImpl Record 
)
void clang::ASTWriter::AddUpdatedDeclContext ( const DeclContext DC) [inline]

Mark a declaration context as needing an update.

Definition at line 615 of file ASTWriter.h.

Referenced by AddedVisibleDecl().

void ASTWriter::AddVersionTuple ( const VersionTuple Version,
RecordDataImpl Record 
)

Add a version tuple to the given record.

Definition at line 3087 of file ASTWriter.cpp.

References clang::VersionTuple::getMajor(), clang::VersionTuple::getMinor(), and clang::VersionTuple::getSubminor().

void ASTWriter::ClearSwitchCaseIDs ( )

Definition at line 1567 of file ASTWriterStmt.cpp.

void ASTWriter::CompletedImplicitDefinition ( const FunctionDecl D) [virtual]

An implicit member got a definition.

Reimplemented from clang::ASTMutationListener.

Definition at line 4506 of file ASTWriter.cpp.

References clang::Decl::isFromASTFile(), and RewriteDecl().

void ASTWriter::CompletedTagDefinition ( const TagDecl D) [virtual]

A new TagDecl definition was completed.

Reimplemented from clang::ASTMutationListener.

Definition at line 4439 of file ASTWriter.cpp.

References clang::TagDecl::isCompleteDefinition(), and RewriteDecl().

void ASTWriter::FlushCXXBaseSpecifiers ( )

Flush all of the C++ base specifier sets that have been added via AddCXXBaseSpecifiersRef().

Definition at line 4224 of file ASTWriter.cpp.

References AddCXXBaseSpecifier(), clang::serialization::DECL_CXX_BASE_SPECIFIERS, FlushStmts(), and Index.

void ASTWriter::FlushStmts ( )

Flush all of the statements and expressions that have been added to the queue via AddStmt().

Flush all of the statements that have been added to the queue via AddStmt().

Definition at line 1645 of file ASTWriterStmt.cpp.

References clang::serialization::STMT_STOP.

Referenced by FlushCXXBaseSpecifiers().

unsigned clang::ASTWriter::getCharacterLiteralAbbrev ( ) const [inline]

Definition at line 669 of file ASTWriter.h.

unsigned clang::ASTWriter::getDeclEnumAbbrev ( ) const [inline]

Definition at line 675 of file ASTWriter.h.

unsigned clang::ASTWriter::getDeclFieldAbbrev ( ) const [inline]

Definition at line 674 of file ASTWriter.h.

DeclID ASTWriter::getDeclID ( const Decl D)

Determine the declaration ID of an already-emitted declaration.

Definition at line 3847 of file ASTWriter.cpp.

References clang::Decl::getGlobalID(), and clang::Decl::isFromASTFile().

unsigned clang::ASTWriter::getDeclObjCIvarAbbrev ( ) const [inline]

Definition at line 676 of file ASTWriter.h.

unsigned clang::ASTWriter::getDeclParmVarAbbrev ( ) const [inline]

Definition at line 667 of file ASTWriter.h.

unsigned clang::ASTWriter::getDeclRecordAbbrev ( ) const [inline]

Definition at line 670 of file ASTWriter.h.

DeclID ASTWriter::GetDeclRef ( const Decl D)

Force a declaration to be emitted and get its ID.

Definition at line 3823 of file ASTWriter.cpp.

References clang::Decl::getGlobalID(), and clang::Decl::isFromASTFile().

Referenced by AddDeclRef().

unsigned clang::ASTWriter::getDeclRefExprAbbrev ( ) const [inline]

Definition at line 668 of file ASTWriter.h.

unsigned clang::ASTWriter::getDeclTypedefAbbrev ( ) const [inline]

Definition at line 672 of file ASTWriter.h.

unsigned clang::ASTWriter::getDeclVarAbbrev ( ) const [inline]

Definition at line 673 of file ASTWriter.h.

IdentID ASTWriter::getIdentifierRef ( const IdentifierInfo II)

Get the unique number used to refer to the given identifier.

Definition at line 3675 of file ASTWriter.cpp.

Referenced by AddIdentifierRef().

unsigned clang::ASTWriter::getIntegerLiteralAbbrev ( ) const [inline]

Definition at line 671 of file ASTWriter.h.

uint64_t clang::ASTWriter::getMacroOffset ( const IdentifierInfo II) [inline]

Retrieve the offset of the macro definition for the given identifier.

The identifier must refer to a macro.

Definition at line 516 of file ASTWriter.h.

TypeID ASTWriter::GetOrCreateTypeID ( QualType  T)

Force a type to be emitted and get its ID.

Definition at line 3784 of file ASTWriter.cpp.

References GetOrCreateTypeIdx(), and clang::serialization::MakeTypeID().

Referenced by AddTypeRef().

TypeIdx ASTWriter::GetOrCreateTypeIdx ( QualType  T)

Force a type to be emitted and get its index.

Definition at line 3794 of file ASTWriter.cpp.

References clang::QualType::getLocalFastQualifiers(), and clang::QualType::isNull().

Referenced by GetOrCreateTypeID().

SelectorID ASTWriter::getSelectorRef ( Selector  Sel)

Get the unique number used to refer to the given selector.

Definition at line 3689 of file ASTWriter.cpp.

References clang::Selector::getAsOpaquePtr(), and clang::ASTReader::LoadSelector().

Referenced by AddSelectorRef().

unsigned ASTWriter::getSwitchCaseID ( SwitchCase S)

Retrieve the ID for the given switch-case statement.

Definition at line 1561 of file ASTWriterStmt.cpp.

References S.

TypeID ASTWriter::getTypeID ( QualType  T) const

Determine the type ID of an already-emitted type.

Definition at line 3789 of file ASTWriter.cpp.

References getTypeIdx(), and clang::serialization::MakeTypeID().

TypeIdx ASTWriter::getTypeIdx ( QualType  T) const

Determine the type index of an already-emitted type.

Definition at line 3809 of file ASTWriter.cpp.

References clang::QualType::getLocalFastQualifiers(), and clang::QualType::isNull().

Referenced by getTypeID().

bool clang::ASTWriter::hasChain ( ) const [inline]

Definition at line 678 of file ASTWriter.h.

void ASTWriter::IdentifierRead ( serialization::IdentID  ID,
IdentifierInfo II 
) [virtual]

An identifier was deserialized from the AST file.

Reimplemented from clang::ASTDeserializationListener.

Definition at line 4403 of file ASTWriter.cpp.

References clang::IdentifierInfo::hasMacroDefinition().

serialization::SubmoduleID ASTWriter::inferSubmoduleIDFromLocation ( SourceLocation  Loc)
bool clang::ASTWriter::isRewritten ( const Decl D) const [inline]

Definition at line 623 of file ASTWriter.h.

void ASTWriter::MacroDefinitionRead ( serialization::PreprocessedEntityID  ,
MacroDefinition MD 
) [virtual]

A macro definition was read from the AST file.

Reimplemented from clang::ASTDeserializationListener.

Definition at line 4424 of file ASTWriter.cpp.

void ASTWriter::MacroVisible ( IdentifierInfo II) [virtual]

A macro definition that had previously been deserialized (and removed via IdentifierRead) has now been made visible.

Reimplemented from clang::ASTDeserializationListener.

Definition at line 4430 of file ASTWriter.cpp.

void ASTWriter::ModuleRead ( serialization::SubmoduleID  ID,
Module Mod 
) [virtual]

A module definition was read from the AST file.

Reimplemented from clang::ASTDeserializationListener.

Definition at line 4434 of file ASTWriter.cpp.

void ASTWriter::ReaderInitialized ( ASTReader Reader) [virtual]
unsigned ASTWriter::RecordSwitchCaseID ( SwitchCase S)

Record an ID for the given switch-case statement.

Definition at line 1553 of file ASTWriterStmt.cpp.

References S.

void clang::ASTWriter::RewriteDecl ( const Decl D) [inline]
void ASTWriter::SelectorRead ( serialization::SelectorID  iD,
Selector  Sel 
) [virtual]

A selector was read from the AST file.

Reimplemented from clang::ASTDeserializationListener.

Definition at line 4420 of file ASTWriter.cpp.

References S.

void ASTWriter::SetIdentifierOffset ( const IdentifierInfo II,
uint32_t  Offset 
)

Note that the identifier II occurs at the given offset within the identifier table.

Definition at line 3102 of file ASTWriter.cpp.

void ASTWriter::SetSelectorOffset ( Selector  Sel,
uint32_t  Offset 
)

Note that the selector Sel occurs at the given offset within the method pool/selector table.

Definition at line 3112 of file ASTWriter.cpp.

void ASTWriter::StaticDataMemberInstantiated ( const VarDecl D) [virtual]
void ASTWriter::TypeRead ( serialization::TypeIdx  Idx,
QualType  T 
) [virtual]

A type was deserialized from the AST file. The ID here has the qualifier bits already removed, and T is guaranteed to be locally unqualified.

Reimplemented from clang::ASTDeserializationListener.

Definition at line 4409 of file ASTWriter.cpp.

References clang::serialization::TypeIdx::getIndex().

void ASTWriter::WriteAST ( Sema SemaRef,
MemorizeStatCalls StatCalls,
const std::string &  OutputFile,
Module WritingModule,
StringRef  isysroot,
bool  hasErrors = false 
)

Write a precompiled header for the given semantic analysis.

Parameters:
SemaRefa reference to the semantic analysis object that processed the AST to be written into the precompiled header.
StatCallsthe object that cached all of the stat() calls made while searching for source files and headers.
WritingModuleThe module that we are writing. If null, we are writing a precompiled header.
isysrootif non-empty, write a relocatable file whose headers are relative to the given system root.

Definition at line 3151 of file ASTWriter.cpp.

References clang::Sema::Context, and clang::Sema::PP.

Referenced by clang::PCHGenerator::HandleTranslationUnit(), and clang::ASTUnit::serialize().


Friends And Related Function Documentation

friend class ASTDeclWriter [friend]

Definition at line 78 of file ASTWriter.h.

friend class ASTStmtWriter [friend]

Definition at line 79 of file ASTWriter.h.


The documentation for this class was generated from the following files: