1 //===- PCHBitCodes.h - Enum values for the PCH bitcode format ---*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This header defines Bitcode enum values for Clang precompiled header files.
12 // The enum values defined in this file should be considered permanent. If
13 // new features are added, they should have values added at the end of the
16 //===----------------------------------------------------------------------===//
17 #ifndef LLVM_CLANG_FRONTEND_PCHBITCODES_H
18 #define LLVM_CLANG_FRONTEND_PCHBITCODES_H
20 #include "llvm/Bitcode/BitCodes.h"
21 #include "llvm/System/DataTypes.h"
25 /// \brief PCH major version number supported by this version of
28 /// Whenever the PCH format changes in a way that makes it
29 /// incompatible with previous versions (such that a reader
30 /// designed for the previous version could not support reading
31 /// the new version), this number should be increased.
33 /// Version 3 of PCH files also requires that the version control branch and
34 /// revision match exactly, since there is no backward compatibility of
35 /// PCH files at this time.
36 const unsigned VERSION_MAJOR = 3;
38 /// \brief PCH minor version number supported by this version of
41 /// Whenever the PCH format changes in a way that is still
42 /// compatible with previous versions (such that a reader designed
43 /// for the previous version could still support reading the new
44 /// version by ignoring new kinds of subblocks), this number
45 /// should be increased.
46 const unsigned VERSION_MINOR = 0;
48 /// \brief An ID number that refers to a declaration in a PCH file.
50 /// The ID numbers of types are consecutive (in order of
51 /// discovery) and start at 2. 0 is reserved for NULL, and 1 is
52 /// reserved for the translation unit declaration.
53 typedef uint32_t DeclID;
55 /// \brief An ID number that refers to a type in a PCH file.
57 /// The ID of a type is partitioned into two parts: the lower
58 /// three bits are used to store the const/volatile/restrict
59 /// qualifiers (as with QualType) and the upper bits provide a
60 /// type index. The type index values are partitioned into two
61 /// sets. The values below NUM_PREDEF_TYPE_IDs are predefined type
62 /// IDs (based on the PREDEF_TYPE_*_ID constants), with 0 as a
63 /// placeholder for "no type". Values from NUM_PREDEF_TYPE_IDs are
64 /// other types that have serialized representations.
65 typedef uint32_t TypeID;
67 /// \brief An ID number that refers to an identifier in a PCH
69 typedef uint32_t IdentID;
71 typedef uint32_t SelectorID;
73 /// \brief Describes the various kinds of blocks that occur within
76 /// \brief The PCH block, which acts as a container around the
78 PCH_BLOCK_ID = llvm::bitc::FIRST_APPLICATION_BLOCKID,
80 /// \brief The block containing information about the source
82 SOURCE_MANAGER_BLOCK_ID,
84 /// \brief The block containing information about the
86 PREPROCESSOR_BLOCK_ID,
88 /// \brief The block containing the definitions of all of the
89 /// types and decls used within the PCH file.
93 /// \brief Record types that occur within the PCH block itself.
95 /// \brief Record code for the offsets of each type.
97 /// The TYPE_OFFSET constant describes the record that occurs
98 /// within the PCH block. The record itself is an array of offsets that
99 /// point into the declarations and types block (identified by
100 /// DECLTYPES_BLOCK_ID). The index into the array is based on the ID
101 /// of a type. For a given type ID @c T, the lower three bits of
102 /// @c T are its qualifiers (const, volatile, restrict), as in
103 /// the QualType class. The upper bits, after being shifted and
104 /// subtracting NUM_PREDEF_TYPE_IDS, are used to index into the
105 /// TYPE_OFFSET block to determine the offset of that type's
106 /// corresponding record within the DECLTYPES_BLOCK_ID block.
109 /// \brief Record code for the offsets of each decl.
111 /// The DECL_OFFSET constant describes the record that occurs
112 /// within the block identified by DECL_OFFSETS_BLOCK_ID within
113 /// the PCH block. The record itself is an array of offsets that
114 /// point into the declarations and types block (identified by
115 /// DECLTYPES_BLOCK_ID). The declaration ID is an index into this
116 /// record, after subtracting one to account for the use of
117 /// declaration ID 0 for a NULL declaration pointer. Index 0 is
118 /// reserved for the translation unit declaration.
121 /// \brief Record code for the language options table.
123 /// The record with this code contains the contents of the
124 /// LangOptions structure. We serialize the entire contents of
125 /// the structure, and let the reader decide which options are
126 /// actually important to check.
127 LANGUAGE_OPTIONS = 3,
129 /// \brief PCH metadata, including the PCH file version number
130 /// and the target triple used to build the PCH file.
133 /// \brief Record code for the table of offsets of each
136 /// The offset table contains offsets into the blob stored in
137 /// the IDENTIFIER_TABLE record. Each offset points to the
138 /// NULL-terminated string that corresponds to that identifier.
139 IDENTIFIER_OFFSET = 5,
141 /// \brief Record code for the identifier table.
143 /// The identifier table is a simple blob that contains
144 /// NULL-terminated strings for all of the identifiers
145 /// referenced by the PCH file. The IDENTIFIER_OFFSET table
146 /// contains the mapping from identifier IDs to the characters
147 /// in this blob. Note that the starting offsets of all of the
148 /// identifiers are odd, so that, when the identifier offset
149 /// table is loaded in, we can use the low bit to distinguish
150 /// between offsets (for unresolved identifier IDs) and
151 /// IdentifierInfo pointers (for already-resolved identifier
153 IDENTIFIER_TABLE = 6,
155 /// \brief Record code for the array of external definitions.
157 /// The PCH file contains a list of all of the unnamed external
158 /// definitions present within the parsed headers, stored as an
159 /// array of declaration IDs. These external definitions will be
160 /// reported to the AST consumer after the PCH file has been
161 /// read, since their presence can affect the semantics of the
162 /// program (e.g., for code generation).
163 EXTERNAL_DEFINITIONS = 7,
165 /// \brief Record code for the set of non-builtin, special
168 /// This record contains the type IDs for the various type nodes
169 /// that are constructed during semantic analysis (e.g.,
170 /// __builtin_va_list). The SPECIAL_TYPE_* constants provide
171 /// offsets into this record.
174 /// \brief Record code for the extra statistics we gather while
175 /// generating a PCH file.
178 /// \brief Record code for the array of tentative definitions.
179 TENTATIVE_DEFINITIONS = 10,
181 /// \brief Record code for the array of locally-scoped external
183 LOCALLY_SCOPED_EXTERNAL_DECLS = 11,
185 /// \brief Record code for the table of offsets into the
186 /// Objective-C method pool.
187 SELECTOR_OFFSETS = 12,
189 /// \brief Record code for the Objective-C method pool,
192 /// \brief The value of the next __COUNTER__ to dispense.
193 /// [PP_COUNTER_VALUE, Val]
194 PP_COUNTER_VALUE = 14,
196 /// \brief Record code for the table of offsets into the block
197 /// of source-location information.
198 SOURCE_LOCATION_OFFSETS = 15,
200 /// \brief Record code for the set of source location entries
201 /// that need to be preloaded by the PCH reader.
203 /// This set contains the source location entry for the
204 /// predefines buffer and for any file entries that need to be
206 SOURCE_LOCATION_PRELOADS = 16,
208 /// \brief Record code for the stat() cache.
211 /// \brief Record code for the set of ext_vector type names.
212 EXT_VECTOR_DECLS = 18,
214 /// \brief Record code for the original file that was used to
215 /// generate the precompiled header.
216 ORIGINAL_FILE_NAME = 19,
218 /// \brief Record code for the sorted array of source ranges where
219 /// comments were encountered in the source code.
222 /// \brief Record code for the version control branch and revision
223 /// information of the compiler used to build this PCH file.
224 VERSION_CONTROL_BRANCH_REVISION = 21
227 /// \brief Record types used within a source manager block.
228 enum SourceManagerRecordTypes {
229 /// \brief Describes a source location entry (SLocEntry) for a
231 SM_SLOC_FILE_ENTRY = 1,
232 /// \brief Describes a source location entry (SLocEntry) for a
234 SM_SLOC_BUFFER_ENTRY = 2,
235 /// \brief Describes a blob that contains the data for a buffer
236 /// entry. This kind of record always directly follows a
237 /// SM_SLOC_BUFFER_ENTRY record.
238 SM_SLOC_BUFFER_BLOB = 3,
239 /// \brief Describes a source location entry (SLocEntry) for a
240 /// macro instantiation.
241 SM_SLOC_INSTANTIATION_ENTRY = 4,
242 /// \brief Describes the SourceManager's line table, with
243 /// information about #line directives.
245 /// \brief Describes one header file info [isImport, DirInfo, NumIncludes]
246 /// ControllingMacro is optional.
247 SM_HEADER_FILE_INFO = 6
250 /// \brief Record types used within a preprocessor block.
251 enum PreprocessorRecordTypes {
252 // The macros in the PP section are a PP_MACRO_* instance followed by a
253 // list of PP_TOKEN instances for each token in the definition.
255 /// \brief An object-like macro definition.
256 /// [PP_MACRO_OBJECT_LIKE, IdentInfoID, SLoc, IsUsed]
257 PP_MACRO_OBJECT_LIKE = 1,
259 /// \brief A function-like macro definition.
260 /// [PP_MACRO_FUNCTION_LIKE, <ObjectLikeStuff>, IsC99Varargs, IsGNUVarars,
261 /// NumArgs, ArgIdentInfoID* ]
262 PP_MACRO_FUNCTION_LIKE = 2,
264 /// \brief Describes one token.
265 /// [PP_TOKEN, SLoc, Length, IdentInfoID, Kind, Flags]
269 /// \defgroup PCHAST Precompiled header AST constants
271 /// The constants in this group describe various components of the
272 /// abstract syntax tree within a precompiled header.
276 /// \brief Predefined type IDs.
278 /// These type IDs correspond to predefined types in the AST
279 /// context, such as built-in types (int) and special place-holder
280 /// types (the <overload> and <dependent> type markers). Such
281 /// types are never actually serialized, since they will be built
282 /// by the AST context when it is created.
283 enum PredefinedTypeIDs {
284 /// \brief The NULL type.
285 PREDEF_TYPE_NULL_ID = 0,
286 /// \brief The void type.
287 PREDEF_TYPE_VOID_ID = 1,
288 /// \brief The 'bool' or '_Bool' type.
289 PREDEF_TYPE_BOOL_ID = 2,
290 /// \brief The 'char' type, when it is unsigned.
291 PREDEF_TYPE_CHAR_U_ID = 3,
292 /// \brief The 'unsigned char' type.
293 PREDEF_TYPE_UCHAR_ID = 4,
294 /// \brief The 'unsigned short' type.
295 PREDEF_TYPE_USHORT_ID = 5,
296 /// \brief The 'unsigned int' type.
297 PREDEF_TYPE_UINT_ID = 6,
298 /// \brief The 'unsigned long' type.
299 PREDEF_TYPE_ULONG_ID = 7,
300 /// \brief The 'unsigned long long' type.
301 PREDEF_TYPE_ULONGLONG_ID = 8,
302 /// \brief The 'char' type, when it is signed.
303 PREDEF_TYPE_CHAR_S_ID = 9,
304 /// \brief The 'signed char' type.
305 PREDEF_TYPE_SCHAR_ID = 10,
306 /// \brief The C++ 'wchar_t' type.
307 PREDEF_TYPE_WCHAR_ID = 11,
308 /// \brief The (signed) 'short' type.
309 PREDEF_TYPE_SHORT_ID = 12,
310 /// \brief The (signed) 'int' type.
311 PREDEF_TYPE_INT_ID = 13,
312 /// \brief The (signed) 'long' type.
313 PREDEF_TYPE_LONG_ID = 14,
314 /// \brief The (signed) 'long long' type.
315 PREDEF_TYPE_LONGLONG_ID = 15,
316 /// \brief The 'float' type.
317 PREDEF_TYPE_FLOAT_ID = 16,
318 /// \brief The 'double' type.
319 PREDEF_TYPE_DOUBLE_ID = 17,
320 /// \brief The 'long double' type.
321 PREDEF_TYPE_LONGDOUBLE_ID = 18,
322 /// \brief The placeholder type for overloaded function sets.
323 PREDEF_TYPE_OVERLOAD_ID = 19,
324 /// \brief The placeholder type for dependent types.
325 PREDEF_TYPE_DEPENDENT_ID = 20,
326 /// \brief The '__uint128_t' type.
327 PREDEF_TYPE_UINT128_ID = 21,
328 /// \brief The '__int128_t' type.
329 PREDEF_TYPE_INT128_ID = 22,
330 /// \brief The type of 'nullptr'.
331 PREDEF_TYPE_NULLPTR_ID = 23,
332 /// \brief The C++ 'char16_t' type.
333 PREDEF_TYPE_CHAR16_ID = 24,
334 /// \brief The C++ 'char32_t' type.
335 PREDEF_TYPE_CHAR32_ID = 25,
336 /// \brief The ObjC 'id' type.
337 PREDEF_TYPE_OBJC_ID = 26,
338 /// \brief The ObjC 'Class' type.
339 PREDEF_TYPE_OBJC_CLASS = 27,
340 /// \brief The ObjC 'SEL' type.
341 PREDEF_TYPE_OBJC_SEL = 28
344 /// \brief The number of predefined type IDs that are reserved for
345 /// the PREDEF_TYPE_* constants.
347 /// Type IDs for non-predefined types will start at
348 /// NUM_PREDEF_TYPE_IDs.
349 const unsigned NUM_PREDEF_TYPE_IDS = 100;
351 /// \brief Record codes for each kind of type.
353 /// These constants describe the type records that can occur within a
354 /// block identified by DECLTYPES_BLOCK_ID in the PCH file. Each
355 /// constant describes a record for a specific type class in the
358 /// \brief An ExtQualType record.
360 /// \brief A ComplexType record.
362 /// \brief A PointerType record.
364 /// \brief A BlockPointerType record.
365 TYPE_BLOCK_POINTER = 5,
366 /// \brief An LValueReferenceType record.
367 TYPE_LVALUE_REFERENCE = 6,
368 /// \brief An RValueReferenceType record.
369 TYPE_RVALUE_REFERENCE = 7,
370 /// \brief A MemberPointerType record.
371 TYPE_MEMBER_POINTER = 8,
372 /// \brief A ConstantArrayType record.
373 TYPE_CONSTANT_ARRAY = 9,
374 /// \brief An IncompleteArrayType record.
375 TYPE_INCOMPLETE_ARRAY = 10,
376 /// \brief A VariableArrayType record.
377 TYPE_VARIABLE_ARRAY = 11,
378 /// \brief A VectorType record.
380 /// \brief An ExtVectorType record.
381 TYPE_EXT_VECTOR = 13,
382 /// \brief A FunctionNoProtoType record.
383 TYPE_FUNCTION_NO_PROTO = 14,
384 /// \brief A FunctionProtoType record.
385 TYPE_FUNCTION_PROTO = 15,
386 /// \brief A TypedefType record.
388 /// \brief A TypeOfExprType record.
389 TYPE_TYPEOF_EXPR = 17,
390 /// \brief A TypeOfType record.
392 /// \brief A RecordType record.
394 /// \brief An EnumType record.
396 /// \brief An ObjCInterfaceType record.
397 TYPE_OBJC_INTERFACE = 21,
398 /// \brief An ObjCObjectPointerType record.
399 TYPE_OBJC_OBJECT_POINTER = 22,
400 /// \brief a DecltypeType record.
402 /// \brief An ElaboratedType record.
403 TYPE_ELABORATED = 24,
404 /// \brief A SubstTemplateTypeParmType record.
405 TYPE_SUBST_TEMPLATE_TYPE_PARM = 25,
406 /// \brief An UnresolvedUsingType record.
407 TYPE_UNRESOLVED_USING = 26
410 /// \brief The type IDs for special types constructed by semantic
413 /// The constants in this enumeration are indices into the
414 /// SPECIAL_TYPES record.
415 enum SpecialTypeIDs {
416 /// \brief __builtin_va_list
417 SPECIAL_TYPE_BUILTIN_VA_LIST = 0,
418 /// \brief Objective-C "id" type
419 SPECIAL_TYPE_OBJC_ID = 1,
420 /// \brief Objective-C selector type
421 SPECIAL_TYPE_OBJC_SELECTOR = 2,
422 /// \brief Objective-C Protocol type
423 SPECIAL_TYPE_OBJC_PROTOCOL = 3,
424 /// \brief Objective-C Class type
425 SPECIAL_TYPE_OBJC_CLASS = 4,
426 /// \brief CFConstantString type
427 SPECIAL_TYPE_CF_CONSTANT_STRING = 5,
428 /// \brief Objective-C fast enumeration state type
429 SPECIAL_TYPE_OBJC_FAST_ENUMERATION_STATE = 6,
430 /// \brief C FILE typedef type
431 SPECIAL_TYPE_FILE = 7,
432 /// \brief C jmp_buf typedef type
433 SPECIAL_TYPE_jmp_buf = 8,
434 /// \brief C sigjmp_buf typedef type
435 SPECIAL_TYPE_sigjmp_buf = 9,
436 /// \brief Objective-C "id" redefinition type
437 SPECIAL_TYPE_OBJC_ID_REDEFINITION = 10,
438 /// \brief Objective-C "Class" redefinition type
439 SPECIAL_TYPE_OBJC_CLASS_REDEFINITION = 11,
440 /// \brief Block descriptor type for Blocks CodeGen
441 SPECIAL_TYPE_BLOCK_DESCRIPTOR = 12,
442 /// \brief Block extedned descriptor type for Blocks CodeGen
443 SPECIAL_TYPE_BLOCK_EXTENDED_DESCRIPTOR = 13,
444 /// \brief Objective-C "SEL" redefinition type
445 SPECIAL_TYPE_OBJC_SEL_REDEFINITION = 14
448 /// \brief Record codes for each kind of declaration.
450 /// These constants describe the declaration records that can occur within
451 /// a declarations block (identified by DECLS_BLOCK_ID). Each
452 /// constant describes a record for a specific declaration class
455 /// \brief Attributes attached to a declaration.
457 /// \brief A TranslationUnitDecl record.
458 DECL_TRANSLATION_UNIT,
459 /// \brief A TypedefDecl record.
461 /// \brief An EnumDecl record.
463 /// \brief A RecordDecl record.
465 /// \brief An EnumConstantDecl record.
467 /// \brief A FunctionDecl record.
469 /// \brief A ObjCMethodDecl record.
471 /// \brief A ObjCInterfaceDecl record.
473 /// \brief A ObjCProtocolDecl record.
475 /// \brief A ObjCIvarDecl record.
477 /// \brief A ObjCAtDefsFieldDecl record.
478 DECL_OBJC_AT_DEFS_FIELD,
479 /// \brief A ObjCClassDecl record.
481 /// \brief A ObjCForwardProtocolDecl record.
482 DECL_OBJC_FORWARD_PROTOCOL,
483 /// \brief A ObjCCategoryDecl record.
485 /// \brief A ObjCCategoryImplDecl record.
486 DECL_OBJC_CATEGORY_IMPL,
487 /// \brief A ObjCImplementationDecl record.
488 DECL_OBJC_IMPLEMENTATION,
489 /// \brief A ObjCCompatibleAliasDecl record.
490 DECL_OBJC_COMPATIBLE_ALIAS,
491 /// \brief A ObjCPropertyDecl record.
493 /// \brief A ObjCPropertyImplDecl record.
494 DECL_OBJC_PROPERTY_IMPL,
495 /// \brief A FieldDecl record.
497 /// \brief A VarDecl record.
499 /// \brief An ImplicitParamDecl record.
501 /// \brief A ParmVarDecl record.
503 /// \brief A FileScopeAsmDecl record.
505 /// \brief A BlockDecl record.
507 /// \brief A record that stores the set of declarations that are
508 /// lexically stored within a given DeclContext.
510 /// The record itself is an array of declaration IDs, in the
511 /// order in which those declarations were added to the
512 /// declaration context. This data is used when iterating over
513 /// the contents of a DeclContext, e.g., via
514 /// DeclContext::decls_begin()/DeclContext::decls_end().
515 DECL_CONTEXT_LEXICAL,
516 /// \brief A record that stores the set of declarations that are
517 /// visible from a given DeclContext.
519 /// The record itself stores a set of mappings, each of which
520 /// associates a declaration name with one or more declaration
521 /// IDs. This data is used when performing qualified name lookup
522 /// into a DeclContext via DeclContext::lookup.
526 /// \brief Record codes for each kind of statement or expression.
528 /// These constants describe the records that describe statements
529 /// or expressions. These records occur within type and declarations
530 /// block, so they begin with record values of 100. Each constant
531 /// describes a record for a specific statement or expression class in the
534 /// \brief A marker record that indicates that we are at the end
535 /// of an expression.
537 /// \brief A NULL expression.
539 /// \brief A NullStmt record.
541 /// \brief A CompoundStmt record.
543 /// \brief A CaseStmt record.
545 /// \brief A DefaultStmt record.
547 /// \brief A LabelStmt record.
549 /// \brief An IfStmt record.
551 /// \brief A SwitchStmt record.
553 /// \brief A WhileStmt record.
555 /// \brief A DoStmt record.
557 /// \brief A ForStmt record.
559 /// \brief A GotoStmt record.
561 /// \brief An IndirectGotoStmt record.
563 /// \brief A ContinueStmt record.
565 /// \brief A BreakStmt record.
567 /// \brief A ReturnStmt record.
569 /// \brief A DeclStmt record.
571 /// \brief An AsmStmt record.
573 /// \brief A PredefinedExpr record.
575 /// \brief A DeclRefExpr record.
577 /// \brief An IntegerLiteral record.
578 EXPR_INTEGER_LITERAL,
579 /// \brief A FloatingLiteral record.
580 EXPR_FLOATING_LITERAL,
581 /// \brief An ImaginaryLiteral record.
582 EXPR_IMAGINARY_LITERAL,
583 /// \brief A StringLiteral record.
585 /// \brief A CharacterLiteral record.
586 EXPR_CHARACTER_LITERAL,
587 /// \brief A ParenExpr record.
589 /// \brief A UnaryOperator record.
591 /// \brief A SizefAlignOfExpr record.
592 EXPR_SIZEOF_ALIGN_OF,
593 /// \brief An ArraySubscriptExpr record.
594 EXPR_ARRAY_SUBSCRIPT,
595 /// \brief A CallExpr record.
597 /// \brief A MemberExpr record.
599 /// \brief A BinaryOperator record.
600 EXPR_BINARY_OPERATOR,
601 /// \brief A CompoundAssignOperator record.
602 EXPR_COMPOUND_ASSIGN_OPERATOR,
603 /// \brief A ConditionOperator record.
604 EXPR_CONDITIONAL_OPERATOR,
605 /// \brief An ImplicitCastExpr record.
607 /// \brief A CStyleCastExpr record.
609 /// \brief A CompoundLiteralExpr record.
610 EXPR_COMPOUND_LITERAL,
611 /// \brief An ExtVectorElementExpr record.
612 EXPR_EXT_VECTOR_ELEMENT,
613 /// \brief An InitListExpr record.
615 /// \brief A DesignatedInitExpr record.
616 EXPR_DESIGNATED_INIT,
617 /// \brief An ImplicitValueInitExpr record.
618 EXPR_IMPLICIT_VALUE_INIT,
619 /// \brief A VAArgExpr record.
621 /// \brief An AddrLabelExpr record.
623 /// \brief A StmtExpr record.
625 /// \brief A TypesCompatibleExpr record.
626 EXPR_TYPES_COMPATIBLE,
627 /// \brief A ChooseExpr record.
629 /// \brief A GNUNullExpr record.
631 /// \brief A ShuffleVectorExpr record.
635 /// \brief A BlockDeclRef record.
640 /// \brief An ObjCStringLiteral record.
641 EXPR_OBJC_STRING_LITERAL,
642 /// \brief An ObjCEncodeExpr record.
644 /// \brief An ObjCSelectorExpr record.
645 EXPR_OBJC_SELECTOR_EXPR,
646 /// \brief An ObjCProtocolExpr record.
647 EXPR_OBJC_PROTOCOL_EXPR,
648 /// \brief An ObjCIvarRefExpr record.
649 EXPR_OBJC_IVAR_REF_EXPR,
650 /// \brief An ObjCPropertyRefExpr record.
651 EXPR_OBJC_PROPERTY_REF_EXPR,
652 /// \brief An ObjCImplicitSetterGetterRefExpr record.
653 EXPR_OBJC_KVC_REF_EXPR,
654 /// \brief An ObjCMessageExpr record.
655 EXPR_OBJC_MESSAGE_EXPR,
656 /// \brief An ObjCSuperExpr record.
657 EXPR_OBJC_SUPER_EXPR,
658 /// \brief An ObjCIsa Expr record.
661 /// \brief An ObjCForCollectionStmt record.
662 STMT_OBJC_FOR_COLLECTION,
663 /// \brief An ObjCAtCatchStmt record.
665 /// \brief An ObjCAtFinallyStmt record.
667 /// \brief An ObjCAtTryStmt record.
669 /// \brief An ObjCAtSynchronizedStmt record.
670 STMT_OBJC_AT_SYNCHRONIZED,
671 /// \brief An ObjCAtThrowStmt record.
676 /// \brief A CXXOperatorCallExpr record.
677 EXPR_CXX_OPERATOR_CALL,
678 /// \brief A CXXConstructExpr record.
680 // \brief A CXXStaticCastExpr record.
681 EXPR_CXX_STATIC_CAST,
682 // \brief A CXXDynamicCastExpr record.
683 EXPR_CXX_DYNAMIC_CAST,
684 // \brief A CXXReinterpretCastExpr record.
685 EXPR_CXX_REINTERPRET_CAST,
686 // \brief A CXXConstCastExpr record.
688 // \brief A CXXFunctionalCastExpr record.
689 EXPR_CXX_FUNCTIONAL_CAST
692 /// \brief The kinds of designators that can occur in a
693 /// DesignatedInitExpr.
694 enum DesignatorTypes {
695 /// \brief Field designator where only the field name is known.
696 DESIG_FIELD_NAME = 0,
697 /// \brief Field designator where the field has been resolved to
699 DESIG_FIELD_DECL = 1,
700 /// \brief Array designator.
702 /// \brief GNU array range designator.
703 DESIG_ARRAY_RANGE = 3
708 } // end namespace clang