clang
3.9.0
|
An object for streaming information to a record. More...
#include <ASTWriter.h>
Public Member Functions | |
ASTRecordWriter (ASTWriter &Writer, ASTWriter::RecordDataImpl &Record) | |
Construct a ASTRecordWriter that uses the default encoding scheme. More... | |
ASTRecordWriter (ASTRecordWriter &Parent, ASTWriter::RecordDataImpl &Record) | |
Construct a ASTRecordWriter that uses the same encoding scheme as another ASTRecordWriter. More... | |
ASTRecordWriter (const ASTRecordWriter &)=delete | |
Copying an ASTRecordWriter is almost certainly a bug. More... | |
void | operator= (const ASTRecordWriter &)=delete |
ASTWriter::RecordDataImpl & | getRecordData () const |
Extract the underlying record storage. More... | |
uint64_t | Emit (unsigned Code, unsigned Abbrev=0) |
Emit the record to the stream, followed by its substatements, and return its offset. More... | |
uint64_t | EmitStmt (unsigned Code, unsigned Abbrev=0) |
Emit the record to the stream, preceded by its substatements. More... | |
void | AddOffset (uint64_t BitOffset) |
Add a bit offset into the record. More... | |
void | AddStmt (Stmt *S) |
Add the given statement or expression to the queue of statements to emit. More... | |
void | AddFunctionDefinition (const FunctionDecl *FD) |
Add a definition for the given function to the queue of statements to emit. More... | |
void | AddSourceLocation (SourceLocation Loc) |
Emit a source location. More... | |
void | AddSourceRange (SourceRange Range) |
Emit a source range. More... | |
void | AddAPInt (const llvm::APInt &Value) |
Emit an integral value. More... | |
void | AddAPSInt (const llvm::APSInt &Value) |
Emit a signed integral value. More... | |
void | AddAPFloat (const llvm::APFloat &Value) |
Emit a floating-point value. More... | |
void | AddIdentifierRef (const IdentifierInfo *II) |
Emit a reference to an identifier. More... | |
void | AddSelectorRef (Selector S) |
Emit a Selector (which is a smart pointer reference). More... | |
void | AddCXXTemporary (const CXXTemporary *Temp) |
Emit a CXXTemporary. More... | |
void | AddCXXBaseSpecifier (const CXXBaseSpecifier &Base) |
Emit a C++ base specifier. More... | |
void | AddCXXBaseSpecifiers (ArrayRef< CXXBaseSpecifier > Bases) |
Emit a set of C++ base specifiers. More... | |
void | AddTypeRef (QualType T) |
Emit a reference to a type. More... | |
void | AddTypeSourceInfo (TypeSourceInfo *TInfo) |
Emits a reference to a declarator info. More... | |
void | AddTypeLoc (TypeLoc TL) |
Emits a type with source-location information. More... | |
void | AddTemplateArgumentLocInfo (TemplateArgument::ArgKind Kind, const TemplateArgumentLocInfo &Arg) |
Emits a template argument location info. More... | |
void | AddTemplateArgumentLoc (const TemplateArgumentLoc &Arg) |
Emits a template argument location. More... | |
void | AddASTTemplateArgumentListInfo (const ASTTemplateArgumentListInfo *ASTTemplArgList) |
Emits an AST template argument list info. More... | |
void | AddDeclRef (const Decl *D) |
Emit a reference to a declaration. More... | |
void | AddDeclarationName (DeclarationName Name) |
Emit a declaration name. More... | |
void | AddDeclarationNameLoc (const DeclarationNameLoc &DNLoc, DeclarationName Name) |
void | AddDeclarationNameInfo (const DeclarationNameInfo &NameInfo) |
void | AddQualifierInfo (const QualifierInfo &Info) |
void | AddNestedNameSpecifier (NestedNameSpecifier *NNS) |
Emit a nested name specifier. More... | |
void | AddNestedNameSpecifierLoc (NestedNameSpecifierLoc NNS) |
Emit a nested name specifier with source-location information. More... | |
void | AddTemplateName (TemplateName Name) |
Emit a template name. More... | |
void | AddTemplateArgument (const TemplateArgument &Arg) |
Emit a template argument. More... | |
void | AddTemplateParameterList (const TemplateParameterList *TemplateParams) |
Emit a template parameter list. More... | |
void | AddTemplateArgumentList (const TemplateArgumentList *TemplateArgs) |
Emit a template argument list. More... | |
void | AddUnresolvedSet (const ASTUnresolvedSet &Set) |
Emit a UnresolvedSet structure. More... | |
void | AddCXXCtorInitializers (ArrayRef< CXXCtorInitializer * > CtorInits) |
Emit a CXXCtorInitializer array. More... | |
void | AddCXXDefinitionData (const CXXRecordDecl *D) |
void | AddString (StringRef Str) |
Emit a string. More... | |
void | AddPath (StringRef Path) |
Emit a path. More... | |
void | AddVersionTuple (const VersionTuple &Version) |
Emit a version tuple. More... | |
void | AddAttributes (ArrayRef< const Attr * > Attrs) |
Emit a list of attributes. More... | |
void | push_back (uint64_t N) |
Minimal vector-like interface. More... | |
template<typename InputIterator > | |
void | append (InputIterator begin, InputIterator end) |
bool | empty () const |
size_t | size () const |
uint64_t & | operator[] (size_t N) |
An object for streaming information to a record.
Definition at line 693 of file ASTWriter.h.
|
inline |
Construct a ASTRecordWriter that uses the default encoding scheme.
Definition at line 724 of file ASTWriter.h.
|
inline |
Construct a ASTRecordWriter that uses the same encoding scheme as another ASTRecordWriter.
Definition at line 729 of file ASTWriter.h.
|
delete |
Copying an ASTRecordWriter is almost certainly a bug.
void ASTRecordWriter::AddAPFloat | ( | const llvm::APFloat & | Value | ) |
Emit a floating-point value.
Definition at line 4806 of file ASTWriter.cpp.
void ASTRecordWriter::AddAPInt | ( | const llvm::APInt & | Value | ) |
Emit an integral value.
Definition at line 4795 of file ASTWriter.cpp.
void ASTRecordWriter::AddAPSInt | ( | const llvm::APSInt & | Value | ) |
Emit a signed integral value.
Definition at line 4801 of file ASTWriter.cpp.
void ASTRecordWriter::AddASTTemplateArgumentListInfo | ( | const ASTTemplateArgumentListInfo * | ASTTemplArgList | ) |
Emits an AST template argument list info.
Definition at line 5378 of file ASTWriter.cpp.
References clang::ASTWriter::AddSourceLocation(), clang::ASTTemplateArgumentListInfo::getTemplateArgs(), clang::ASTTemplateArgumentListInfo::LAngleLoc, clang::ASTTemplateArgumentListInfo::NumTemplateArgs, and clang::ASTTemplateArgumentListInfo::RAngleLoc.
Emit a list of attributes.
Emit the list of attributes to the specified record.
Definition at line 3975 of file ASTWriter.cpp.
void ASTRecordWriter::AddCXXBaseSpecifier | ( | const CXXBaseSpecifier & | Base | ) |
Emit a C++ base specifier.
Definition at line 5399 of file ASTWriter.cpp.
References clang::ASTWriter::AddSourceLocation(), clang::ASTWriter::AddSourceRange(), clang::CXXBaseSpecifier::getAccessSpecifierAsWritten(), clang::CXXBaseSpecifier::getEllipsisLoc(), clang::CXXBaseSpecifier::getInheritConstructors(), clang::CXXBaseSpecifier::getSourceRange(), clang::CXXBaseSpecifier::getTypeSourceInfo(), clang::CXXBaseSpecifier::isBaseOfClass(), clang::CXXBaseSpecifier::isPackExpansion(), and clang::CXXBaseSpecifier::isVirtual().
Referenced by EmitCXXBaseSpecifiers().
void ASTRecordWriter::AddCXXBaseSpecifiers | ( | ArrayRef< CXXBaseSpecifier > | Bases | ) |
Emit a set of C++ base specifiers.
Definition at line 5423 of file ASTWriter.cpp.
References EmitCXXBaseSpecifiers().
void ASTRecordWriter::AddCXXCtorInitializers | ( | ArrayRef< CXXCtorInitializer * > | CtorInits | ) |
Emit a CXXCtorInitializer array.
Definition at line 5468 of file ASTWriter.cpp.
References EmitCXXCtorInitializers().
void ASTRecordWriter::AddCXXDefinitionData | ( | const CXXRecordDecl * | D | ) |
Definition at line 5473 of file ASTWriter.cpp.
References clang::ASTWriter::AddDeclRef(), clang::ASTWriter::AddSourceLocation(), clang::LambdaCapture::capturesVariable(), clang::LambdaCapture::getCapturedVar(), clang::LambdaCapture::getCaptureKind(), clang::LambdaCapture::getEllipsisLoc(), clang::LambdaCapture::getLocation(), I, clang::LambdaCapture::isImplicit(), clang::LambdaCapture::isPackExpansion(), clang::LCK_ByCopy, clang::LCK_ByRef, clang::LCK_StarThis, clang::LCK_This, and clang::LCK_VLAType.
void ASTRecordWriter::AddCXXTemporary | ( | const CXXTemporary * | Temp | ) |
Emit a CXXTemporary.
Definition at line 4875 of file ASTWriter.cpp.
References clang::ASTWriter::AddDeclRef(), and clang::CXXTemporary::getDestructor().
void ASTRecordWriter::AddDeclarationName | ( | DeclarationName | Name | ) |
Emit a declaration name.
Definition at line 5067 of file ASTWriter.cpp.
References clang::ASTWriter::AddIdentifierRef(), clang::ASTWriter::AddTypeRef(), clang::DeclarationName::CXXConstructorName, clang::DeclarationName::CXXConversionFunctionName, clang::DeclarationName::CXXDestructorName, clang::DeclarationName::CXXLiteralOperatorName, clang::DeclarationName::CXXOperatorName, clang::DeclarationName::CXXUsingDirective, clang::DeclarationName::getAsIdentifierInfo(), clang::DeclarationName::getCXXLiteralIdentifier(), clang::DeclarationName::getCXXNameType(), clang::DeclarationName::getCXXOverloadedOperator(), clang::DeclarationName::getNameKind(), clang::DeclarationName::getObjCSelector(), clang::DeclarationName::Identifier, clang::DeclarationName::ObjCMultiArgSelector, clang::DeclarationName::ObjCOneArgSelector, and clang::DeclarationName::ObjCZeroArgSelector.
void ASTRecordWriter::AddDeclarationNameInfo | ( | const DeclarationNameInfo & | NameInfo | ) |
Definition at line 5152 of file ASTWriter.cpp.
References clang::ASTWriter::AddSourceLocation(), clang::DeclarationNameInfo::getInfo(), clang::DeclarationNameInfo::getLoc(), and clang::DeclarationNameInfo::getName().
void ASTRecordWriter::AddDeclarationNameLoc | ( | const DeclarationNameLoc & | DNLoc, |
DeclarationName | Name | ||
) |
Definition at line 5122 of file ASTWriter.cpp.
References clang::ASTWriter::AddSourceLocation(), clang::DeclarationNameLoc::CXXOpName::BeginOpNameLoc, clang::DeclarationName::CXXConstructorName, clang::DeclarationName::CXXConversionFunctionName, clang::DeclarationName::CXXDestructorName, clang::DeclarationName::CXXLiteralOperatorName, clang::DeclarationNameLoc::CXXLiteralOperatorName, clang::DeclarationName::CXXOperatorName, clang::DeclarationNameLoc::CXXOperatorName, clang::DeclarationName::CXXUsingDirective, clang::DeclarationNameLoc::CXXOpName::EndOpNameLoc, clang::SourceLocation::getFromRawEncoding(), clang::DeclarationName::getNameKind(), clang::DeclarationName::Identifier, clang::DeclarationNameLoc::NamedType, clang::DeclarationName::ObjCMultiArgSelector, clang::DeclarationName::ObjCOneArgSelector, clang::DeclarationName::ObjCZeroArgSelector, clang::DeclarationNameLoc::CXXLitOpName::OpNameLoc, and clang::DeclarationNameLoc::NT::TInfo.
|
inline |
Emit a reference to a declaration.
Definition at line 851 of file ASTWriter.h.
References clang::ASTWriter::AddDeclRef().
Referenced by addExceptionSpec(), EmitCXXCtorInitializers(), and clang::ASTDeclWriter::VisitRedeclarable().
void ASTRecordWriter::AddFunctionDefinition | ( | const FunctionDecl * | FD | ) |
Add a definition for the given function to the queue of statements to emit.
Definition at line 2180 of file ASTWriterDecl.cpp.
References clang::FunctionDecl::doesThisDeclarationHaveABody(), and clang::FunctionDecl::getBody().
|
inline |
Emit a reference to an identifier.
Definition at line 812 of file ASTWriter.h.
References clang::ASTWriter::AddIdentifierRef().
void ASTRecordWriter::AddNestedNameSpecifier | ( | NestedNameSpecifier * | NNS | ) |
Emit a nested name specifier.
Definition at line 5166 of file ASTWriter.cpp.
References clang::ASTWriter::AddDeclRef(), clang::ASTWriter::AddIdentifierRef(), clang::ASTWriter::AddTypeRef(), clang::NestedNameSpecifier::getAsIdentifier(), clang::NestedNameSpecifier::getAsNamespace(), clang::NestedNameSpecifier::getAsNamespaceAlias(), clang::NestedNameSpecifier::getAsRecordDecl(), clang::NestedNameSpecifier::getAsType(), clang::NestedNameSpecifier::getKind(), clang::NestedNameSpecifier::getPrefix(), clang::NestedNameSpecifier::Global, clang::NestedNameSpecifier::Identifier, clang::NestedNameSpecifier::Namespace, clang::NestedNameSpecifier::NamespaceAlias, clang::NestedNameSpecifier::Super, clang::NestedNameSpecifier::TypeSpec, and clang::NestedNameSpecifier::TypeSpecWithTemplate.
void ASTRecordWriter::AddNestedNameSpecifierLoc | ( | NestedNameSpecifierLoc | NNS | ) |
Emit a nested name specifier with source-location information.
Definition at line 5212 of file ASTWriter.cpp.
References clang::ASTWriter::AddDeclRef(), clang::ASTWriter::AddIdentifierRef(), clang::ASTWriter::AddSourceLocation(), clang::ASTWriter::AddSourceRange(), clang::NestedNameSpecifier::getAsIdentifier(), clang::NestedNameSpecifier::getAsNamespace(), clang::NestedNameSpecifier::getAsNamespaceAlias(), clang::NestedNameSpecifier::getAsRecordDecl(), clang::SourceRange::getEnd(), clang::NestedNameSpecifier::getKind(), clang::NestedNameSpecifierLoc::getLocalSourceRange(), clang::NestedNameSpecifierLoc::getNestedNameSpecifier(), clang::NestedNameSpecifierLoc::getPrefix(), clang::NestedNameSpecifierLoc::getTypeLoc(), clang::NestedNameSpecifier::Global, clang::NestedNameSpecifier::Identifier, clang::NestedNameSpecifier::Namespace, clang::NestedNameSpecifier::NamespaceAlias, clang::NestedNameSpecifier::Super, clang::NestedNameSpecifier::TypeSpec, and clang::NestedNameSpecifier::TypeSpecWithTemplate.
|
inline |
Add a bit offset into the record.
This will be converted into an offset relative to the current record when emitted.
Definition at line 772 of file ASTWriter.h.
|
inline |
void ASTRecordWriter::AddQualifierInfo | ( | const QualifierInfo & | Info | ) |
Definition at line 5159 of file ASTWriter.cpp.
References clang::QualifierInfo::NumTemplParamLists, clang::QualifierInfo::QualifierLoc, and clang::QualifierInfo::TemplParamLists.
void ASTRecordWriter::AddSelectorRef | ( | Selector | S | ) |
Emit a Selector (which is a smart pointer reference).
Definition at line 4852 of file ASTWriter.cpp.
|
inline |
Emit a source location.
Definition at line 793 of file ASTWriter.h.
References clang::ASTWriter::AddSourceLocation().
Referenced by clang::ASTStmtWriter::AddTemplateKWAndArgsInfo(), EmitCXXCtorInitializers(), and clang::OMPClauseWriter::writeClause().
|
inline |
Emit a source range.
Definition at line 798 of file ASTWriter.h.
References clang::ASTWriter::AddSourceRange().
|
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, Emit() will write the corresponding statements just after the record.
Definition at line 784 of file ASTWriter.h.
Referenced by addExceptionSpec(), EmitCXXCtorInitializers(), clang::OMPClauseWriter::VisitOMPClauseWithPostUpdate(), and clang::OMPClauseWriter::VisitOMPClauseWithPreInit().
|
inline |
Emit a string.
Definition at line 891 of file ASTWriter.h.
References clang::ASTWriter::AddString().
void ASTRecordWriter::AddTemplateArgument | ( | const TemplateArgument & | Arg | ) |
Emit a template argument.
Definition at line 5318 of file ASTWriter.cpp.
References clang::ASTWriter::AddDeclRef(), clang::ASTWriter::AddTypeRef(), clang::TemplateArgument::Declaration, clang::TemplateArgument::Expression, clang::TemplateArgument::getAsDecl(), clang::TemplateArgument::getAsExpr(), clang::TemplateArgument::getAsIntegral(), clang::TemplateArgument::getAsTemplateOrTemplatePattern(), clang::TemplateArgument::getAsType(), clang::TemplateArgument::getIntegralType(), clang::TemplateArgument::getKind(), clang::TemplateArgument::getNullPtrType(), clang::TemplateArgument::getNumTemplateExpansions(), clang::TemplateArgument::getParamTypeForDecl(), clang::TemplateArgument::Integral, clang::TemplateArgument::Null, clang::TemplateArgument::NullPtr, P, clang::TemplateArgument::Pack, clang::TemplateArgument::pack_elements(), clang::TemplateArgument::pack_size(), clang::TemplateArgument::Template, clang::TemplateArgument::TemplateExpansion, and clang::TemplateArgument::Type.
void ASTRecordWriter::AddTemplateArgumentList | ( | const TemplateArgumentList * | TemplateArgs | ) |
Emit a template argument list.
Definition at line 5370 of file ASTWriter.cpp.
References clang::TemplateArgumentList::get(), and clang::TemplateArgumentList::size().
void ASTRecordWriter::AddTemplateArgumentLoc | ( | const TemplateArgumentLoc & | Arg | ) |
Emits a template argument location.
Definition at line 4907 of file ASTWriter.cpp.
References clang::TemplateArgument::Expression, clang::TemplateArgumentLoc::getArgument(), clang::TemplateArgument::getAsExpr(), clang::TemplateArgumentLocInfo::getAsExpr(), clang::TemplateArgument::getKind(), and clang::TemplateArgumentLoc::getLocInfo().
Referenced by clang::ASTStmtWriter::AddTemplateKWAndArgsInfo().
void ASTRecordWriter::AddTemplateArgumentLocInfo | ( | TemplateArgument::ArgKind | Kind, |
const TemplateArgumentLocInfo & | Arg | ||
) |
Emits a template argument location info.
Definition at line 4879 of file ASTWriter.cpp.
References clang::ASTWriter::AddSourceLocation(), clang::TemplateArgument::Declaration, clang::TemplateArgument::Expression, clang::TemplateArgumentLocInfo::getAsExpr(), clang::TemplateArgumentLocInfo::getAsTypeSourceInfo(), clang::TemplateArgumentLocInfo::getTemplateEllipsisLoc(), clang::TemplateArgumentLocInfo::getTemplateNameLoc(), clang::TemplateArgumentLocInfo::getTemplateQualifierLoc(), clang::TemplateArgument::Integral, clang::TemplateArgument::Null, clang::TemplateArgument::NullPtr, clang::TemplateArgument::Pack, clang::TemplateArgument::Template, clang::TemplateArgument::TemplateExpansion, and clang::TemplateArgument::Type.
void ASTRecordWriter::AddTemplateName | ( | TemplateName | Name | ) |
Emit a template name.
Definition at line 5265 of file ASTWriter.cpp.
References clang::ASTWriter::AddDeclRef(), clang::ASTWriter::AddIdentifierRef(), clang::TemplateName::DependentTemplate, clang::SubstTemplateTemplateParmPackStorage::getArgumentPack(), clang::TemplateName::getAsDependentTemplateName(), clang::TemplateName::getAsOverloadedTemplate(), clang::TemplateName::getAsQualifiedTemplateName(), clang::TemplateName::getAsSubstTemplateTemplateParm(), clang::TemplateName::getAsSubstTemplateTemplateParmPack(), clang::TemplateName::getAsTemplateDecl(), clang::DependentTemplateName::getIdentifier(), clang::TemplateName::getKind(), clang::DependentTemplateName::getOperator(), clang::SubstTemplateTemplateParmStorage::getParameter(), clang::SubstTemplateTemplateParmPackStorage::getParameterPack(), clang::QualifiedTemplateName::getQualifier(), clang::DependentTemplateName::getQualifier(), clang::SubstTemplateTemplateParmStorage::getReplacement(), clang::QualifiedTemplateName::getTemplateDecl(), clang::QualifiedTemplateName::hasTemplateKeyword(), clang::DependentTemplateName::isIdentifier(), clang::TemplateName::OverloadedTemplate, clang::TemplateName::QualifiedTemplate, clang::UncommonTemplateNameStorage::size(), clang::TemplateName::SubstTemplateTemplateParm, clang::TemplateName::SubstTemplateTemplateParmPack, and clang::TemplateName::Template.
void ASTRecordWriter::AddTemplateParameterList | ( | const TemplateParameterList * | TemplateParams | ) |
Emit a template parameter list.
Definition at line 5358 of file ASTWriter.cpp.
References clang::ASTWriter::AddDeclRef(), clang::ASTWriter::AddSourceLocation(), clang::TemplateParameterList::getLAngleLoc(), clang::TemplateParameterList::getRAngleLoc(), clang::TemplateParameterList::getTemplateLoc(), P, and clang::TemplateParameterList::size().
void ASTRecordWriter::AddTypeLoc | ( | TypeLoc | TL | ) |
Emits a type with source-location information.
Definition at line 4929 of file ASTWriter.cpp.
References clang::ASTWriter::AddTypeRef(), clang::TypeLoc::getNextTypeLoc(), clang::TypeLoc::getType(), and clang::TypeLoc::isNull().
|
inline |
Emit a reference to a type.
Definition at line 829 of file ASTWriter.h.
References clang::ASTWriter::AddTypeRef().
Referenced by addExceptionSpec().
void ASTRecordWriter::AddTypeSourceInfo | ( | TypeSourceInfo * | TInfo | ) |
Emits a reference to a declarator info.
Definition at line 4920 of file ASTWriter.cpp.
References clang::ASTWriter::AddTypeRef(), and clang::TypeSourceInfo::getTypeLoc().
Referenced by EmitCXXCtorInitializers().
void ASTRecordWriter::AddUnresolvedSet | ( | const ASTUnresolvedSet & | Set | ) |
Emit a UnresolvedSet structure.
Definition at line 5389 of file ASTWriter.cpp.
References clang::ASTWriter::AddDeclRef(), clang::ASTUnresolvedSet::begin(), E, clang::ASTUnresolvedSet::end(), I, and clang::ASTUnresolvedSet::size().
|
inline |
Emit a version tuple.
Definition at line 901 of file ASTWriter.h.
References clang::ASTWriter::AddVersionTuple().
|
inline |
Definition at line 743 of file ASTWriter.h.
Emit the record to the stream, followed by its substatements, and return its offset.
Definition at line 754 of file ASTWriter.h.
Referenced by EmitCXXBaseSpecifiers(), EmitCXXCtorInitializers(), and clang::ASTDeclWriter::VisitRedeclarable().
Emit the record to the stream, preceded by its substatements.
Definition at line 763 of file ASTWriter.h.
Referenced by clang::ASTStmtWriter::Emit().
|
inline |
Definition at line 746 of file ASTWriter.h.
|
inline |
Extract the underlying record storage.
Definition at line 737 of file ASTWriter.h.
|
delete |
|
inline |
Definition at line 748 of file ASTWriter.h.
|
inline |
Minimal vector-like interface.
Definition at line 741 of file ASTWriter.h.
Referenced by addExceptionSpec(), EmitCXXBaseSpecifiers(), EmitCXXCtorInitializers(), and clang::OMPClauseWriter::writeClause().
|
inline |
Definition at line 747 of file ASTWriter.h.