clang  19.0.0git
ASTRecordReader.h
Go to the documentation of this file.
1 //===- ASTRecordReader.h - Helper classes for reading AST -------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file defines classes that are useful in the implementation of
10 // the ASTReader.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_CLANG_SERIALIZATION_ASTRECORDREADER_H
15 #define LLVM_CLANG_SERIALIZATION_ASTRECORDREADER_H
16 
17 #include "clang/AST/ASTContext.h"
19 #include "clang/Lex/Token.h"
22 #include "llvm/ADT/APFloat.h"
23 #include "llvm/ADT/APInt.h"
24 #include "llvm/ADT/APSInt.h"
25 
26 namespace clang {
27 class OpenACCClause;
28 class OMPTraitInfo;
29 class OMPChildren;
30 
31 /// An object for streaming information from a record.
33  : public serialization::DataStreamBasicReader<ASTRecordReader> {
36 
37  ASTReader *Reader;
38  ModuleFile *F;
39  unsigned Idx = 0;
41 
44 
45 public:
46  /// Construct an ASTRecordReader that uses the default encoding scheme.
48  : DataStreamBasicReader(Reader.getContext()), Reader(&Reader), F(&F) {}
49 
50  /// Reads a record with id AbbrevID from Cursor, resetting the
51  /// internal state.
52  Expected<unsigned> readRecord(llvm::BitstreamCursor &Cursor,
53  unsigned AbbrevID);
54 
55  /// Is this a module file for a module (rather than a PCH or similar).
56  bool isModule() const { return F->isModule(); }
57 
58  /// Retrieve the AST context that this AST reader supplements.
59  ASTContext &getContext() { return Reader->getContext(); }
60 
61  /// The current position in this record.
62  unsigned getIdx() const { return Idx; }
63 
64  /// The length of this record.
65  size_t size() const { return Record.size(); }
66 
67  /// An arbitrary index in this record.
68  const uint64_t &operator[](size_t N) { return Record[N]; }
69 
70  /// Returns the last value in this record.
71  uint64_t back() { return Record.back(); }
72 
73  /// Returns the current value in this record, and advances to the
74  /// next value.
75  uint64_t readInt() { return Record[Idx++]; }
76 
78  auto Array = llvm::ArrayRef(Record).slice(Idx, Len);
79  Idx += Len;
80  return Array;
81  }
82 
83  /// Returns the current value in this record, without advancing.
84  uint64_t peekInt() { return Record[Idx]; }
85 
86  /// Skips the specified number of values.
87  void skipInts(unsigned N) { Idx += N; }
88 
89  /// Retrieve the global submodule ID its local ID number.
91  getGlobalSubmoduleID(unsigned LocalID) {
92  return Reader->getGlobalSubmoduleID(*F, LocalID);
93  }
94 
95  /// Retrieve the submodule that corresponds to a global submodule ID.
97  return Reader->getSubmodule(GlobalID);
98  }
99 
100  /// Read the record that describes the lexical contents of a DC.
102  return Reader->ReadLexicalDeclContextStorage(*F, F->DeclsCursor, Offset,
103  DC);
104  }
105 
107  uint64_t Kind = readInt();
108  bool HasExpr = Kind & 0x1;
109  Kind = Kind >> 1;
110  return ExplicitSpecifier(HasExpr ? readExpr() : nullptr,
111  static_cast<ExplicitSpecKind>(Kind));
112  }
113 
114  /// Read information about an exception specification (inherited).
115  //FunctionProtoType::ExceptionSpecInfo
116  //readExceptionSpecInfo(SmallVectorImpl<QualType> &ExceptionStorage);
117 
118  /// Get the global offset corresponding to a local offset.
120  return Reader->getGlobalBitOffset(*F, LocalOffset);
121  }
122 
123  /// Reads a statement.
124  Stmt *readStmt() { return Reader->ReadStmt(*F); }
125  Stmt *readStmtRef() { return readStmt(); /* FIXME: readSubStmt? */ }
126 
127  /// Reads an expression.
128  Expr *readExpr() { return Reader->ReadExpr(*F); }
129 
130  /// Reads a sub-statement operand during statement reading.
131  Stmt *readSubStmt() { return Reader->ReadSubStmt(); }
132 
133  /// Reads a sub-expression operand during statement reading.
134  Expr *readSubExpr() { return Reader->ReadSubExpr(); }
135 
136  /// Reads a declaration with the given local ID in the given module.
137  ///
138  /// \returns The requested declaration, casted to the given return type.
139  template <typename T> T *GetLocalDeclAs(LocalDeclID LocalID) {
140  return cast_or_null<T>(Reader->GetLocalDecl(*F, LocalID));
141  }
142 
143  /// Reads a TemplateArgumentLocInfo appropriate for the
144  /// given TemplateArgument kind, advancing Idx.
147 
148  /// Reads a TemplateArgumentLoc, advancing Idx.
150 
152 
155 
156  // Reads a concept reference from the given record.
158 
159  /// Reads a declarator info from the given record, advancing Idx.
161 
162  /// Reads the location information for a type.
163  void readTypeLoc(TypeLoc TL, LocSeq *Seq = nullptr);
164 
165  /// Map a local type ID within a given AST file to a global type ID.
166  serialization::TypeID getGlobalTypeID(unsigned LocalID) const {
167  return Reader->getGlobalTypeID(*F, LocalID);
168  }
169 
172  }
173 
174  /// Read a type from the current position in the record.
176  return Reader->readType(*F, Record, Idx);
177  }
179  return readType();
180  }
181 
182  /// Reads a declaration ID from the given position in this record.
183  ///
184  /// \returns The declaration ID read from the record, adjusted to a global ID.
185  GlobalDeclID readDeclID() { return Reader->ReadDeclID(*F, Record, Idx); }
186 
187  /// Reads a declaration from the given position in a record in the
188  /// given module, advancing Idx.
190  return Reader->ReadDecl(*F, Record, Idx);
191  }
193  return readDecl();
194  }
195 
196  /// Reads a declaration from the given position in the record,
197  /// advancing Idx.
198  ///
199  /// \returns The declaration read from this location, casted to the given
200  /// result type.
201  template<typename T>
203  return Reader->ReadDeclAs<T>(*F, Record, Idx);
204  }
205 
207  return Reader->readIdentifier(*F, Record, Idx);
208  }
209 
210  /// Read a selector from the Record, advancing Idx.
212  return Reader->ReadSelector(*F, Record, Idx);
213  }
214 
216 
217  /// Read a declaration name, advancing Idx.
218  // DeclarationName readDeclarationName(); (inherited)
221 
222  void readQualifierInfo(QualifierInfo &Info);
223 
224  /// Return a nested name specifier, advancing Idx.
225  // NestedNameSpecifier *readNestedNameSpecifier(); (inherited)
226 
228 
229  /// Read a template name, advancing Idx.
230  // TemplateName readTemplateName(); (inherited)
231 
232  /// Read a template argument, advancing Idx. (inherited)
233  // TemplateArgument readTemplateArgument();
234  using DataStreamBasicReader::readTemplateArgument;
237  if (Canonicalize) {
239  }
240  return Arg;
241  }
242 
243  /// Read a template parameter list, advancing Idx.
245 
246  /// Read a template argument array, advancing Idx.
248  bool Canonicalize = false);
249 
250  /// Read a UnresolvedSet structure, advancing Idx.
252 
253  /// Read a C++ base specifier, advancing Idx.
255 
256  /// Read a CXXCtorInitializer array, advancing Idx.
258 
260  return Reader->ReadCXXTemporary(*F, Record, Idx);
261  }
262 
263  /// Read an OMPTraitInfo object, advancing Idx.
265 
266  /// Read an OpenMP clause, advancing Idx.
268 
269  /// Read an OpenMP children, advancing Idx.
270  void readOMPChildren(OMPChildren *Data);
271 
272  /// Read a list of Exprs used for a var-list.
274 
275  /// Read a list of Exprs used for a int-expr-list.
277 
278  /// Read an OpenACC clause, advancing Idx.
280 
281  /// Read a list of OpenACC clauses into the passed SmallVector.
283 
284  /// Read a source location, advancing Idx.
286  return Reader->ReadSourceLocation(*F, Record, Idx, Seq);
287  }
288 
289  /// Read a source range, advancing Idx.
291  return Reader->ReadSourceRange(*F, Record, Idx, Seq);
292  }
293 
294  /// Read an arbitrary constant value, advancing Idx.
295  // APValue readAPValue(); (inherited)
296 
297  /// Read an integral value, advancing Idx.
298  // llvm::APInt readAPInt(); (inherited)
299 
300  /// Read a signed integral value, advancing Idx.
301  // llvm::APSInt readAPSInt(); (inherited)
302 
303  /// Read a floating-point value, advancing Idx.
304  llvm::APFloat readAPFloat(const llvm::fltSemantics &Sem);
305 
306  /// Read a boolean value, advancing Idx.
307  bool readBool() { return readInt() != 0; }
308 
309  /// Read a 32-bit unsigned value; required to satisfy BasicReader.
310  uint32_t readUInt32() {
311  return uint32_t(readInt());
312  }
313 
314  /// Read a 64-bit unsigned value; required to satisfy BasicReader.
316  return readInt();
317  }
318 
319  /// Read a string, advancing Idx.
320  std::string readString() {
321  return Reader->ReadString(Record, Idx);
322  }
323 
324  /// Read a path, advancing Idx.
325  std::string readPath() {
326  return Reader->ReadPath(*F, Record, Idx);
327  }
328 
329  /// Read a version tuple, advancing Idx.
330  VersionTuple readVersionTuple() {
331  return ASTReader::ReadVersionTuple(Record, Idx);
332  }
333 
334  /// Reads one attribute from the current stream position, advancing Idx.
335  Attr *readAttr();
336 
337  /// Reads attributes from the current stream position, advancing Idx.
338  void readAttributes(AttrVec &Attrs);
339 
340  /// Read an BTFTypeTagAttr object.
341  BTFTypeTagAttr *readBTFTypeTagAttr() {
342  return cast<BTFTypeTagAttr>(readAttr());
343  }
344 
345  /// Reads a token out of a record, advancing Idx.
347  return Reader->ReadToken(*F, Record, Idx);
348  }
349 
350  void recordSwitchCaseID(SwitchCase *SC, unsigned ID) {
351  Reader->RecordSwitchCaseID(SC, ID);
352  }
353 
354  /// Retrieve the switch-case statement with the given ID.
356  return Reader->getSwitchCaseWithID(ID);
357  }
358 };
359 
360 /// Helper class that saves the current stream position and
361 /// then restores it when destroyed.
363  explicit SavedStreamPosition(llvm::BitstreamCursor &Cursor)
364  : Cursor(Cursor), Offset(Cursor.GetCurrentBitNo()) {}
365 
367  if (llvm::Error Err = Cursor.JumpToBit(Offset))
368  llvm::report_fatal_error(
369  llvm::Twine("Cursor should always be able to go back, failed: ") +
370  toString(std::move(Err)));
371  }
372 
373 private:
374  llvm::BitstreamCursor &Cursor;
375  uint64_t Offset;
376 };
377 
378 } // namespace clang
379 
380 #endif
Defines the clang::ASTContext interface.
static char ID
Definition: Arena.cpp:183
unsigned Offset
Definition: Format.cpp:2978
llvm::MachO::Record Record
Definition: MachO.h:31
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
Definition: ASTContext.h:185
TemplateArgument getCanonicalTemplateArgument(const TemplateArgument &Arg) const
Retrieve the "canonical" template argument.
Reads an AST files chain containing the contents of a translation unit.
Definition: ASTReader.h:366
SmallVectorImpl< uint64_t > RecordDataImpl
Definition: ASTReader.h:380
serialization::SubmoduleID getGlobalSubmoduleID(ModuleFile &M, unsigned LocalID) const
Retrieve the global submodule ID given a module and its local ID number.
Definition: ASTReader.cpp:8965
void RecordSwitchCaseID(SwitchCase *SC, unsigned ID)
Record that the given ID maps to the given switch-case statement.
Definition: ASTReader.cpp:9421
static std::string ReadString(const RecordDataImpl &Record, unsigned &Idx)
Definition: ASTReader.cpp:9364
QualType readType(ModuleFile &F, const RecordData &Record, unsigned &Idx)
Read a type from the current position in the given record, which was read from the given AST file.
Definition: ASTReader.h:1899
SourceLocation ReadSourceLocation(ModuleFile &MF, RawLocEncoding Raw, LocSeq *Seq=nullptr) const
Read a source location from raw form.
Definition: ASTReader.h:2242
Decl * GetLocalDecl(ModuleFile &F, LocalDeclID LocalID)
Reads a declaration with the given local ID in the given module.
Definition: ASTReader.h:1930
Expr * ReadSubExpr()
Reads a sub-expression operand during statement reading.
GlobalDeclID ReadDeclID(ModuleFile &F, const RecordData &Record, unsigned &Idx)
Reads a declaration ID from the given position in a record in the given module.
Definition: ASTReader.cpp:7826
IdentifierInfo * readIdentifier(ModuleFile &M, const RecordData &Record, unsigned &Idx)
Definition: ASTReader.h:2140
SourceRange ReadSourceRange(ModuleFile &F, const RecordData &Record, unsigned &Idx, LocSeq *Seq=nullptr)
Read a source range.
Definition: ASTReader.cpp:9339
Expr * ReadExpr(ModuleFile &F)
Reads an expression.
std::string ReadPath(ModuleFile &F, const RecordData &Record, unsigned &Idx)
Definition: ASTReader.cpp:9371
Selector ReadSelector(ModuleFile &M, const RecordData &Record, unsigned &Idx)
Definition: ASTReader.h:2214
Stmt * ReadSubStmt()
Reads a sub-statement operand during statement reading.
Definition: ASTReader.h:2332
static VersionTuple ReadVersionTuple(const RecordData &Record, unsigned &Idx)
Read a version tuple.
Definition: ASTReader.cpp:9386
Token ReadToken(ModuleFile &M, const RecordDataImpl &Record, unsigned &Idx)
Reads a token out of a record.
Definition: ASTReader.cpp:1780
SwitchCase * getSwitchCaseWithID(unsigned ID)
Retrieve the switch-case statement with the given ID.
Definition: ASTReader.cpp:9428
T * ReadDeclAs(ModuleFile &F, const RecordData &R, unsigned &I)
Reads a declaration from the given position in a record in the given module.
Definition: ASTReader.h:1968
Stmt * ReadStmt(ModuleFile &F)
Reads a statement.
CXXTemporary * ReadCXXTemporary(ModuleFile &F, const RecordData &Record, unsigned &Idx)
Definition: ASTReader.cpp:9398
Module * getSubmodule(serialization::SubmoduleID GlobalID)
Retrieve the submodule that corresponds to a global submodule ID.
Definition: ASTReader.cpp:8980
Decl * ReadDecl(ModuleFile &F, const RecordData &R, unsigned &I)
Reads a declaration from the given position in a record in the given module.
Definition: ASTReader.h:1958
SmallVector< uint64_t, 64 > RecordData
Definition: ASTReader.h:379
ASTContext & getContext()
Retrieve the AST context that this AST reader supplements.
Definition: ASTReader.h:2377
serialization::TypeID getGlobalTypeID(ModuleFile &F, unsigned LocalID) const
Map a local type ID within a given AST file into a global type ID.
Definition: ASTReader.cpp:7440
An object for streaming information from a record.
bool readBool()
Read a boolean value, advancing Idx.
std::string readString()
Read a string, advancing Idx.
uint32_t readUInt32()
Read a 32-bit unsigned value; required to satisfy BasicReader.
llvm::APFloat readAPFloat(const llvm::fltSemantics &Sem)
Read an arbitrary constant value, advancing Idx.
Definition: ASTReader.cpp:9359
TemplateArgumentLoc readTemplateArgumentLoc()
Reads a TemplateArgumentLoc, advancing Idx.
Definition: ASTReader.cpp:7491
SwitchCase * getSwitchCaseWithID(unsigned ID)
Retrieve the switch-case statement with the given ID.
void readTypeLoc(TypeLoc TL, LocSeq *Seq=nullptr)
Reads the location information for a type.
Definition: ASTReader.cpp:7119
ExplicitSpecifier readExplicitSpec()
uint64_t getGlobalBitOffset(uint64_t LocalOffset)
Read information about an exception specification (inherited).
Expr * readExpr()
Reads an expression.
void readUnresolvedSet(LazyASTUnresolvedSet &Set)
Read a UnresolvedSet structure, advancing Idx.
Definition: ASTReader.cpp:9187
T * GetLocalDeclAs(LocalDeclID LocalID)
Reads a declaration with the given local ID in the given module.
bool readLexicalDeclContextStorage(uint64_t Offset, DeclContext *DC)
Read the record that describes the lexical contents of a DC.
void readTemplateArgumentList(SmallVectorImpl< TemplateArgument > &TemplArgs, bool Canonicalize=false)
Read a template argument array, advancing Idx.
Definition: ASTReader.cpp:9177
void readAttributes(AttrVec &Attrs)
Reads attributes from the current stream position, advancing Idx.
void readQualifierInfo(QualifierInfo &Info)
Definition: ASTReader.cpp:9145
BTFTypeTagAttr * readBTFTypeTagAttr()
Read an BTFTypeTagAttr object.
unsigned getIdx() const
The current position in this record.
DeclarationNameLoc readDeclarationNameLoc(DeclarationName Name)
Read a declaration name, advancing Idx.
Definition: ASTReader.cpp:9108
CXXBaseSpecifier readCXXBaseSpecifier()
Read a C++ base specifier, advancing Idx.
Definition: ASTReader.cpp:9198
QualType readType()
Read a type from the current position in the record.
bool isModule() const
Is this a module file for a module (rather than a PCH or similar).
ASTContext & getContext()
Retrieve the AST context that this AST reader supplements.
Expr * readSubExpr()
Reads a sub-expression operand during statement reading.
Expected< unsigned > readRecord(llvm::BitstreamCursor &Cursor, unsigned AbbrevID)
Reads a record with id AbbrevID from Cursor, resetting the internal state.
DeclarationNameInfo readDeclarationNameInfo()
Definition: ASTReader.cpp:9133
IdentifierInfo * readIdentifier()
size_t size() const
The length of this record.
TemplateArgumentLocInfo readTemplateArgumentLocInfo(TemplateArgument::ArgKind Kind)
Reads a TemplateArgumentLocInfo appropriate for the given TemplateArgument kind, advancing Idx.
Definition: ASTReader.cpp:7459
uint64_t readUInt64()
Read a 64-bit unsigned value; required to satisfy BasicReader.
TemplateArgument readTemplateArgument(bool Canonicalize)
std::string readPath()
Read a path, advancing Idx.
TypeSourceInfo * readTypeSourceInfo()
Reads a declarator info from the given record, advancing Idx.
Definition: ASTReader.cpp:7126
uint64_t peekInt()
Returns the current value in this record, without advancing.
void readTemplateArgumentListInfo(TemplateArgumentListInfo &Result)
Definition: ASTReader.cpp:7501
TypeCoupledDeclRefInfo readTypeCoupledDeclRefInfo()
Definition: ASTReader.cpp:9141
void skipInts(unsigned N)
Skips the specified number of values.
T * readDeclAs()
Reads a declaration from the given position in the record, advancing Idx.
GlobalDeclID readDeclID()
Reads a declaration ID from the given position in this record.
SourceRange readSourceRange(LocSeq *Seq=nullptr)
Read a source range, advancing Idx.
serialization::TypeID getGlobalTypeID(unsigned LocalID) const
Map a local type ID within a given AST file to a global type ID.
NestedNameSpecifierLoc readNestedNameSpecifierLoc()
Return a nested name specifier, advancing Idx.
Definition: ASTReader.cpp:9278
ASTRecordReader(ASTReader &Reader, ModuleFile &F)
Construct an ASTRecordReader that uses the default encoding scheme.
ConceptReference * readConceptReference()
Definition: ASTReader.cpp:6962
Token readToken()
Reads a token out of a record, advancing Idx.
void recordSwitchCaseID(SwitchCase *SC, unsigned ID)
void readOMPChildren(OMPChildren *Data)
Read an OpenMP children, advancing Idx.
const uint64_t & operator[](size_t N)
An arbitrary index in this record.
OMPClause * readOMPClause()
Read an OpenMP clause, advancing Idx.
void readOpenACCClauseList(MutableArrayRef< const OpenACCClause * > Clauses)
Read a list of OpenACC clauses into the passed SmallVector.
Selector readSelector()
Read a selector from the Record, advancing Idx.
OMPTraitInfo * readOMPTraitInfo()
Read an OMPTraitInfo object, advancing Idx.
TemplateParameterList * readTemplateParameterList()
Read a template parameter list, advancing Idx.
Definition: ASTReader.cpp:9158
OpenACCClause * readOpenACCClause()
Read an OpenACC clause, advancing Idx.
VersionTuple readVersionTuple()
Read a version tuple, advancing Idx.
llvm::SmallVector< Expr * > readOpenACCVarList()
Read a list of Exprs used for a var-list.
CXXTemporary * readCXXTemporary()
uint64_t back()
Returns the last value in this record.
serialization::SubmoduleID getGlobalSubmoduleID(unsigned LocalID)
Retrieve the global submodule ID its local ID number.
ArrayRef< uint64_t > readIntArray(unsigned Len)
CXXCtorInitializer ** readCXXCtorInitializers()
Read a CXXCtorInitializer array, advancing Idx.
Definition: ASTReader.cpp:9213
const ASTTemplateArgumentListInfo * readASTTemplateArgumentListInfo()
Definition: ASTReader.cpp:7511
Stmt * readStmt()
Reads a statement.
uint64_t readInt()
Returns the current value in this record, and advances to the next value.
Attr * readAttr()
Reads one attribute from the current stream position, advancing Idx.
Decl * readDecl()
Reads a declaration from the given position in a record in the given module, advancing Idx.
Stmt * readSubStmt()
Reads a sub-statement operand during statement reading.
SourceLocation readSourceLocation(LocSeq *Seq=nullptr)
Read a source location, advancing Idx.
Module * getSubmodule(serialization::SubmoduleID GlobalID)
Retrieve the submodule that corresponds to a global submodule ID.
llvm::SmallVector< Expr * > readOpenACCIntExprList()
Read a list of Exprs used for a int-expr-list.
Attr - This represents one attribute.
Definition: Attr.h:46
Represents a base class of a C++ class.
Definition: DeclCXX.h:146
Represents a C++ base or member initializer.
Definition: DeclCXX.h:2300
Represents a C++ temporary.
Definition: ExprCXX.h:1453
A reference to a concept and its template args, as it appears in the code.
Definition: ASTConcept.h:128
DeclContext - This is used only as base class of specific decl types that can act as declaration cont...
Definition: DeclBase.h:1436
Decl - This represents one declaration (or definition), e.g.
Definition: DeclBase.h:86
DeclarationNameLoc - Additional source/type location info for a declaration name.
The name of a declaration.
Store information needed for an explicit specifier.
Definition: DeclCXX.h:1897
This represents one expression.
Definition: Expr.h:110
One of these records is kept for each identifier that is lexed.
An UnresolvedSet-like class that might not have been loaded from the external AST source yet.
Describes a module or submodule.
Definition: Module.h:105
A C++ nested-name-specifier augmented with source location information.
Contains data for OpenMP directives: clauses, children expressions/statements (helpers for codegen) a...
This is a basic class for representing single OpenMP clause.
Definition: OpenMPClause.h:55
Helper data structure representing the traits in a match clause of an declare variant or metadirectiv...
This is the base type for all OpenACC Clauses.
Definition: OpenACCClause.h:24
A (possibly-)qualified type.
Definition: Type.h:940
The collection of all-type qualifiers we support.
Definition: Type.h:318
static Qualifiers fromOpaqueValue(uint64_t opaque)
Definition: Type.h:434
Smart pointer class that efficiently represents Objective-C method names.
Serialized encoding of a sequence of SourceLocations.
Encodes a location in the source.
A trivial tuple used to represent a source range.
Stmt - This represents one statement.
Definition: Stmt.h:84
A convenient class for passing around template argument information.
Definition: TemplateBase.h:632
Location wrapper for a TemplateArgument.
Definition: TemplateBase.h:524
Represents a template argument.
Definition: TemplateBase.h:61
ArgKind
The kind of template argument we're storing.
Definition: TemplateBase.h:64
Stores a list of template parameters for a TemplateDecl and its derived classes.
Definition: DeclTemplate.h:73
Token - This structure provides full information about a lexed token.
Definition: Token.h:36
[BoundsSafety] Represents information of declarations referenced by the arguments of the counted_by a...
Definition: Type.h:3179
Base wrapper for a particular "section" of type source info.
Definition: TypeLoc.h:59
A container of type source information.
Definition: Type.h:7342
DataStreamBasicReader provides convenience implementations for many BasicReader methods based on the ...
Information about a module that has been loaded by the ASTReader.
Definition: ModuleFile.h:124
llvm::BitstreamCursor DeclsCursor
DeclsCursor - This is a cursor to the start of the DECLTYPES_BLOCK block.
Definition: ModuleFile.h:445
bool isModule() const
Is this a module file for a module (rather than a PCH or similar).
Definition: ModuleFile.h:527
llvm::APFloat APFloat
Definition: Floating.h:23
uint32_t TypeID
An ID number that refers to a type in an AST file.
Definition: ASTBitCodes.h:81
uint32_t SubmoduleID
An ID number that refers to a submodule in a module file.
Definition: ASTBitCodes.h:161
std::string toString(const til::SExpr *E)
The JSON file list parser is used to communicate input to InstallAPI.
@ Seq
'seq' clause, allowed on 'loop' and 'routine' directives.
const FunctionProtoType * T
ExplicitSpecKind
Define the meaning of possible values of the kind in ExplicitSpecifier.
Definition: Specifiers.h:28
unsigned long uint64_t
Represents an explicit template argument list in C++, e.g., the "<int>" in "sort<int>".
Definition: TemplateBase.h:676
DeclarationNameInfo - A collector data type for bundling together a DeclarationName and the correspon...
A struct with extended info about a syntactic name qualifier, to be used for the case of out-of-line ...
Definition: Decl.h:744
Helper class that saves the current stream position and then restores it when destroyed.
SavedStreamPosition(llvm::BitstreamCursor &Cursor)
Location information for a TemplateArgument.
Definition: TemplateBase.h:472