ASTBitCodes.h revision 34b41d939a1328f484511c6002ba2456db879a29
105a07605322dfef2b017781042043a261c5a89cdSebastian Redl//===- ASTBitCodes.h - Enum values for the PCH bitcode format ---*- C++ -*-===// 22cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// 32cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// The LLVM Compiler Infrastructure 42cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// 52cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// This file is distributed under the University of Illinois Open Source 62cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// License. See LICENSE.TXT for details. 72cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// 82cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor//===----------------------------------------------------------------------===// 92cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// 10f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl// This header defines Bitcode enum values for Clang serialized AST files. 112cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// 122cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// The enum values defined in this file should be considered permanent. If 132cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// new features are added, they should have values added at the end of the 142cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// respective lists. 152cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// 162cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor//===----------------------------------------------------------------------===// 172cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#ifndef LLVM_CLANG_FRONTEND_PCHBITCODES_H 182cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#define LLVM_CLANG_FRONTEND_PCHBITCODES_H 192cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 20c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis#include "clang/AST/Type.h" 212cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#include "llvm/Bitcode/BitCodes.h" 2203013fa9a0bf1ef4b907f5fec006c8f4000fdd21Michael J. Spencer#include "llvm/Support/DataTypes.h" 235d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis#include "llvm/ADT/DenseMap.h" 242cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 252cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregornamespace clang { 268538e8d43a3a9bd439c987c0de37bcbf035dd391Sebastian Redl namespace serialization { 27f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief AST file major version number supported by this version of 28ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// Clang. 29ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// 30f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// Whenever the AST file format changes in a way that makes it 31ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// incompatible with previous versions (such that a reader 32ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// designed for the previous version could not support reading 33ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// the new version), this number should be increased. 34445e23e9b909ec8e21303c7dd82c90b72fc09ac4Douglas Gregor /// 35f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// Version 4 of AST files also requires that the version control branch and 36445e23e9b909ec8e21303c7dd82c90b72fc09ac4Douglas Gregor /// revision match exactly, since there is no backward compatibility of 37f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// AST files at this time. 38a93e3b5bde9f0a7b59215f19f176f7d69881b81cSebastian Redl const unsigned VERSION_MAJOR = 4; 39ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor 40f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief AST file minor version number supported by this version of 41ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// Clang. 42ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// 43f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// Whenever the AST format changes in a way that is still 44ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// compatible with previous versions (such that a reader designed 45ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// for the previous version could still support reading the new 46ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// version by ignoring new kinds of subblocks), this number 47ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// should be increased. 48ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor const unsigned VERSION_MINOR = 0; 49ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor 50f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief An ID number that refers to a declaration in an AST file. 518038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// 52a93e3b5bde9f0a7b59215f19f176f7d69881b81cSebastian Redl /// The ID numbers of declarations are consecutive (in order of 538038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// discovery) and start at 2. 0 is reserved for NULL, and 1 is 548038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// reserved for the translation unit declaration. 558038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor typedef uint32_t DeclID; 568038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor 57eb5e9986e577b1e2bff3cca5973a2494fb593fbbArgyrios Kyrtzidis /// \brief a Decl::Kind/DeclID pair. 58eb5e9986e577b1e2bff3cca5973a2494fb593fbbArgyrios Kyrtzidis typedef std::pair<uint32_t, DeclID> KindDeclIDPair; 59eb5e9986e577b1e2bff3cca5973a2494fb593fbbArgyrios Kyrtzidis 60f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief An ID number that refers to a type in an AST file. 618038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// 628038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// The ID of a type is partitioned into two parts: the lower 638038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// three bits are used to store the const/volatile/restrict 648038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// qualifiers (as with QualType) and the upper bits provide a 658038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// type index. The type index values are partitioned into two 668038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// sets. The values below NUM_PREDEF_TYPE_IDs are predefined type 678038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// IDs (based on the PREDEF_TYPE_*_ID constants), with 0 as a 688038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// placeholder for "no type". Values from NUM_PREDEF_TYPE_IDs are 698038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// other types that have serialized representations. 708038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor typedef uint32_t TypeID; 712cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 72c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis /// \brief A type index; the type ID with the qualifier bits removed. 73c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis class TypeIdx { 74c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis uint32_t Idx; 75c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis public: 76c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis TypeIdx() : Idx(0) { } 77c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis explicit TypeIdx(uint32_t index) : Idx(index) { } 78c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis 79c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis uint32_t getIndex() const { return Idx; } 80c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis TypeID asTypeID(unsigned FastQuals) const { 81c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis return (Idx << Qualifiers::FastWidth) | FastQuals; 82c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis } 83c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis static TypeIdx fromTypeID(TypeID ID) { 84c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis return TypeIdx(ID >> Qualifiers::FastWidth); 85c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis } 86c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis }; 87c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis 885d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis /// A structure for putting "fast"-unqualified QualTypes into a 895d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis /// DenseMap. This uses the standard pointer hash function. 905d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis struct UnsafeQualTypeDenseMapInfo { 915d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis static inline bool isEqual(QualType A, QualType B) { return A == B; } 925d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis static inline QualType getEmptyKey() { 935d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis return QualType::getFromOpaquePtr((void*) 1); 945d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis } 955d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis static inline QualType getTombstoneKey() { 965d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis return QualType::getFromOpaquePtr((void*) 2); 975d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis } 985d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis static inline unsigned getHashValue(QualType T) { 995d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis assert(!T.getLocalFastQualifiers() && 1005d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis "hash invalid for types with fast quals"); 1015d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis uintptr_t v = reinterpret_cast<uintptr_t>(T.getAsOpaquePtr()); 1025d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis return (unsigned(v) >> 4) ^ (unsigned(v) >> 9); 1035d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis } 1045d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis }; 1055d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis 1065d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis /// \brief Map that provides the ID numbers of each type within the 1075d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis /// output stream, plus those deserialized from a chained PCH. 1085d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis /// 1095d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis /// The ID numbers of types are consecutive (in order of discovery) 1105d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis /// and start at 1. 0 is reserved for NULL. When types are actually 1115d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis /// stored in the stream, the ID number is shifted by 2 bits to 1125d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis /// allow for the const/volatile qualifiers. 1135d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis /// 1145d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis /// Keys in the map never have const/volatile qualifiers. 1155d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis typedef llvm::DenseMap<QualType, TypeIdx, UnsafeQualTypeDenseMapInfo> 1165d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis TypeIdxMap; 1175d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis 118f73c93fea0d4b447585bc7459499ba6b822e045cSebastian Redl /// \brief An ID number that refers to an identifier in an AST file. 119afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor typedef uint32_t IdentID; 120afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor 121f73c93fea0d4b447585bc7459499ba6b822e045cSebastian Redl /// \brief An ID number that refers to a macro in an AST file. 122f73c93fea0d4b447585bc7459499ba6b822e045cSebastian Redl typedef uint32_t MacroID; 123f73c93fea0d4b447585bc7459499ba6b822e045cSebastian Redl 124f73c93fea0d4b447585bc7459499ba6b822e045cSebastian Redl /// \brief An ID number that refers to an ObjC selctor in an AST file. 12590cd1bb1baac2a0221f3642de0cbea3244b116e5Steve Naroff typedef uint32_t SelectorID; 1261eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 1277c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor /// \brief An ID number that refers to a set of CXXBaseSpecifiers in an 1287c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor /// AST file. 1297c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor typedef uint32_t CXXBaseSpecifiersID; 1307c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor 1312cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief Describes the various kinds of blocks that occur within 132f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// an AST file. 1332cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor enum BlockIDs { 134f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief The AST block, which acts as a container around the 135f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// full AST block. 136f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl AST_BLOCK_ID = llvm::bitc::FIRST_APPLICATION_BLOCKID, 13714f79002e58556798e86168c63e48d533287eda5Douglas Gregor 13814f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief The block containing information about the source 13914f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// manager. 14014f79002e58556798e86168c63e48d533287eda5Douglas Gregor SOURCE_MANAGER_BLOCK_ID, 14114f79002e58556798e86168c63e48d533287eda5Douglas Gregor 14214f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief The block containing information about the 14314f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// preprocessor. 14414f79002e58556798e86168c63e48d533287eda5Douglas Gregor PREPROCESSOR_BLOCK_ID, 14514f79002e58556798e86168c63e48d533287eda5Douglas Gregor 1462cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The block containing the definitions of all of the 147f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// types and decls used within the AST file. 1487b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis DECLTYPES_BLOCK_ID, 1497b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis 1507b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis /// \brief The block containing DECL_UPDATES records. 1514800a5c79023271408af49797e09be32aca93232Douglas Gregor DECL_UPDATES_BLOCK_ID, 1524800a5c79023271408af49797e09be32aca93232Douglas Gregor 1534800a5c79023271408af49797e09be32aca93232Douglas Gregor /// \brief The block containing the detailed preprocessing record. 1544800a5c79023271408af49797e09be32aca93232Douglas Gregor PREPROCESSOR_DETAIL_BLOCK_ID 1558038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor }; 1562cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 157f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief Record types that occur within the AST block itself. 158f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl enum ASTRecordTypes { 15961d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// \brief Record code for the offsets of each type. 1602cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 1618038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// The TYPE_OFFSET constant describes the record that occurs 162f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// within the AST block. The record itself is an array of offsets that 16361d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// point into the declarations and types block (identified by 16461d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// DECLTYPES_BLOCK_ID). The index into the array is based on the ID 1658038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// of a type. For a given type ID @c T, the lower three bits of 1668038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// @c T are its qualifiers (const, volatile, restrict), as in 1678038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// the QualType class. The upper bits, after being shifted and 1688038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// subtracting NUM_PREDEF_TYPE_IDS, are used to index into the 1698038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// TYPE_OFFSET block to determine the offset of that type's 17061d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// corresponding record within the DECLTYPES_BLOCK_ID block. 1718038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor TYPE_OFFSET = 1, 1721eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 1738038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// \brief Record code for the offsets of each decl. 1748038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// 1758038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// The DECL_OFFSET constant describes the record that occurs 17661d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// within the block identified by DECL_OFFSETS_BLOCK_ID within 177f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// the AST block. The record itself is an array of offsets that 17861d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// point into the declarations and types block (identified by 17961d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// DECLTYPES_BLOCK_ID). The declaration ID is an index into this 1808038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// record, after subtracting one to account for the use of 1818038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// declaration ID 0 for a NULL declaration pointer. Index 0 is 1828038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// reserved for the translation unit declaration. 1830a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor DECL_OFFSET = 2, 1840a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor 1850a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// \brief Record code for the language options table. 1860a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// 1870a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// The record with this code contains the contents of the 1880a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// LangOptions structure. We serialize the entire contents of 1890a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// the structure, and let the reader decide which options are 1900a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// actually important to check. 1912bec0410d268779f601bd509e0302a500af7ac6aDouglas Gregor LANGUAGE_OPTIONS = 3, 1922bec0410d268779f601bd509e0302a500af7ac6aDouglas Gregor 193f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief AST file metadata, including the AST file version number 194f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// and the target triple used to build the AST file. 195ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor METADATA = 4, 196afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor 197afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// \brief Record code for the table of offsets of each 198afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// identifier ID. 199afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// 200afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// The offset table contains offsets into the blob stored in 201afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// the IDENTIFIER_TABLE record. Each offset points to the 202afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// NULL-terminated string that corresponds to that identifier. 203afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor IDENTIFIER_OFFSET = 5, 204afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor 205afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// \brief Record code for the identifier table. 206afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// 207afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// The identifier table is a simple blob that contains 208afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// NULL-terminated strings for all of the identifiers 209f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// referenced by the AST file. The IDENTIFIER_OFFSET table 210afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// contains the mapping from identifier IDs to the characters 211afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// in this blob. Note that the starting offsets of all of the 212afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// identifiers are odd, so that, when the identifier offset 213afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// table is loaded in, we can use the low bit to distinguish 214afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// between offsets (for unresolved identifier IDs) and 215afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// IdentifierInfo pointers (for already-resolved identifier 216afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// IDs). 217fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor IDENTIFIER_TABLE = 6, 218fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor 219fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// \brief Record code for the array of external definitions. 220fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// 221f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// The AST file contains a list of all of the unnamed external 222fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// definitions present within the parsed headers, stored as an 223fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// array of declaration IDs. These external definitions will be 224f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// reported to the AST consumer after the AST file has been 225fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// read, since their presence can affect the semantics of the 226fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// program (e.g., for code generation). 2273e1af84bb0092a1aafb49deaa4ab6664c9a9071bDouglas Gregor EXTERNAL_DEFINITIONS = 7, 2283e1af84bb0092a1aafb49deaa4ab6664c9a9071bDouglas Gregor 229ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// \brief Record code for the set of non-builtin, special 230ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// types. 231ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// 232ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// This record contains the type IDs for the various type nodes 233ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// that are constructed during semantic analysis (e.g., 234ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// __builtin_va_list). The SPECIAL_TYPE_* constants provide 235ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// offsets into this record. 236ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor SPECIAL_TYPES = 8, 237ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor 2384c0e86b392c5fb0cb771551fc877edb6979be69cDouglas Gregor /// \brief Record code for the extra statistics we gather while 239f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// generating an AST file. 2404c0e86b392c5fb0cb771551fc877edb6979be69cDouglas Gregor STATISTICS = 9, 2414c0e86b392c5fb0cb771551fc877edb6979be69cDouglas Gregor 2424c0e86b392c5fb0cb771551fc877edb6979be69cDouglas Gregor /// \brief Record code for the array of tentative definitions. 24314c22f20c077cecd68581952a0c227f8c180be03Douglas Gregor TENTATIVE_DEFINITIONS = 10, 24414c22f20c077cecd68581952a0c227f8c180be03Douglas Gregor 24514c22f20c077cecd68581952a0c227f8c180be03Douglas Gregor /// \brief Record code for the array of locally-scoped external 24614c22f20c077cecd68581952a0c227f8c180be03Douglas Gregor /// declarations. 24790cd1bb1baac2a0221f3642de0cbea3244b116e5Steve Naroff LOCALLY_SCOPED_EXTERNAL_DECLS = 11, 2481eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 24983941df2745d69c05acee3174c7a265c206f70d9Douglas Gregor /// \brief Record code for the table of offsets into the 25083941df2745d69c05acee3174c7a265c206f70d9Douglas Gregor /// Objective-C method pool. 25183941df2745d69c05acee3174c7a265c206f70d9Douglas Gregor SELECTOR_OFFSETS = 12, 252f0aaf7a59729a4ae0146e3464ee987745be95829Douglas Gregor 253f0aaf7a59729a4ae0146e3464ee987745be95829Douglas Gregor /// \brief Record code for the Objective-C method pool, 2542eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor METHOD_POOL = 13, 2552eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor 2562eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor /// \brief The value of the next __COUNTER__ to dispense. 2572eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor /// [PP_COUNTER_VALUE, Val] 2587f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor PP_COUNTER_VALUE = 14, 2597f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor 2607f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// \brief Record code for the table of offsets into the block 2617f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// of source-location information. 2627f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor SOURCE_LOCATION_OFFSETS = 15, 2637f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor 2647f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// \brief Record code for the set of source location entries 265f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// that need to be preloaded by the AST reader. 2667f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// 2677f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// This set contains the source location entry for the 2687f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// predefines buffer and for any file entries that need to be 2697f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// preloaded. 2704fed3f47f6b9e31d603c5c2d1f6d8ec2e1241e57Douglas Gregor SOURCE_LOCATION_PRELOADS = 16, 2714fed3f47f6b9e31d603c5c2d1f6d8ec2e1241e57Douglas Gregor 2724fed3f47f6b9e31d603c5c2d1f6d8ec2e1241e57Douglas Gregor /// \brief Record code for the stat() cache. 273b81c17092039f39be60e9656a37cffbdf2e2c783Douglas Gregor STAT_CACHE = 17, 274b81c17092039f39be60e9656a37cffbdf2e2c783Douglas Gregor 275b81c17092039f39be60e9656a37cffbdf2e2c783Douglas Gregor /// \brief Record code for the set of ext_vector type names. 276b81c17092039f39be60e9656a37cffbdf2e2c783Douglas Gregor EXT_VECTOR_DECLS = 18, 277b81c17092039f39be60e9656a37cffbdf2e2c783Douglas Gregor 278b64c19365deab788753d29c9bc881253c3f16f37Douglas Gregor /// \brief Record code for the original file that was used to 279f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// generate the AST file. 2801cb35dd4840d21cec58648361180d5688446a9caArgyrios Kyrtzidis ORIGINAL_FILE_NAME = 19, 2811eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 282c6fbbedb3e90ff2f04828c36fd839e01468679f5Douglas Gregor /// Record #20 intentionally left blank. 283445e23e9b909ec8e21303c7dd82c90b72fc09ac4Douglas Gregor 2845b4ec636637c9d876102240127cc0dca9280e83aTed Kremenek /// \brief Record code for the version control branch and revision 285f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// information of the compiler used to build this AST file. 286e6bbc01d1c4ec5241df36042e0a4a12a6711934bTanya Lattner VERSION_CONTROL_BRANCH_REVISION = 21, 287e6bbc01d1c4ec5241df36042e0a4a12a6711934bTanya Lattner 28849b96d1a382ae9f31456166f1a734d3f7f30b992Argyrios Kyrtzidis /// \brief Record code for the array of unused file scoped decls. 28949b96d1a382ae9f31456166f1a734d3f7f30b992Argyrios Kyrtzidis UNUSED_FILESCOPED_DECLS = 22, 290e6bbc01d1c4ec5241df36042e0a4a12a6711934bTanya Lattner 2916a5a23f8e7fb65e028c8092bc1d1a1d9dfe2e9bcDouglas Gregor /// \brief Record code for the table of offsets to macro definition 2926a5a23f8e7fb65e028c8092bc1d1a1d9dfe2e9bcDouglas Gregor /// entries in the preprocessing record. 293d455add086f1dfa16ae87dc310e49493bbc2b0a6Argyrios Kyrtzidis MACRO_DEFINITION_OFFSETS = 23, 294d455add086f1dfa16ae87dc310e49493bbc2b0a6Argyrios Kyrtzidis 295d455add086f1dfa16ae87dc310e49493bbc2b0a6Argyrios Kyrtzidis /// \brief Record code for the array of VTable uses. 296d455add086f1dfa16ae87dc310e49493bbc2b0a6Argyrios Kyrtzidis VTABLE_USES = 24, 297d455add086f1dfa16ae87dc310e49493bbc2b0a6Argyrios Kyrtzidis 298d455add086f1dfa16ae87dc310e49493bbc2b0a6Argyrios Kyrtzidis /// \brief Record code for the array of dynamic classes. 299a93e3b5bde9f0a7b59215f19f176f7d69881b81cSebastian Redl DYNAMIC_CLASSES = 25, 300a93e3b5bde9f0a7b59215f19f176f7d69881b81cSebastian Redl 301f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief Record code for the chained AST metadata, including the 302f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// AST file version and the name of the PCH this depends on. 303320198303df7c16950d83ae79c3f702b84badcf7Fariborz Jahanian CHAINED_METADATA = 26, 304d692af71226d2fb537d86c670af96114ddd485c3Sebastian Redl 305681d7237e1014bf64dd5ead6bf74ae55cdd19e61Sebastian Redl /// \brief Record code for referenced selector pool. 306d692af71226d2fb537d86c670af96114ddd485c3Sebastian Redl REFERENCED_SELECTOR_POOL = 27, 307d692af71226d2fb537d86c670af96114ddd485c3Sebastian Redl 308d692af71226d2fb537d86c670af96114ddd485c3Sebastian Redl /// \brief Record code for an update to the TU's lexically contained 309d692af71226d2fb537d86c670af96114ddd485c3Sebastian Redl /// declarations. 31076c38d385447b7acdff2d7e6b13fa8580e7174a7Argyrios Kyrtzidis TU_UPDATE_LEXICAL = 28, 31176c38d385447b7acdff2d7e6b13fa8580e7174a7Argyrios Kyrtzidis 312a865005c74019184e04f7fcdd4d61c31c095a4ffArgyrios Kyrtzidis /// \brief Record code for an update to first decls pointing to the 313a865005c74019184e04f7fcdd4d61c31c095a4ffArgyrios Kyrtzidis /// latest redeclarations. 314a865005c74019184e04f7fcdd4d61c31c095a4ffArgyrios Kyrtzidis REDECLS_UPDATE_LATEST = 29, 315a865005c74019184e04f7fcdd4d61c31c095a4ffArgyrios Kyrtzidis 31676c38d385447b7acdff2d7e6b13fa8580e7174a7Argyrios Kyrtzidis /// \brief Record code for declarations that Sema keeps references of. 31772b90571b1783b17c3f2204cec5ca440edc38beeArgyrios Kyrtzidis SEMA_DECL_REFS = 30, 31872b90571b1783b17c3f2204cec5ca440edc38beeArgyrios Kyrtzidis 31972b90571b1783b17c3f2204cec5ca440edc38beeArgyrios Kyrtzidis /// \brief Record code for weak undeclared identifiers. 3200e0363866792b309d70e9c8e92b4c239773af89cArgyrios Kyrtzidis WEAK_UNDECLARED_IDENTIFIERS = 31, 3210e0363866792b309d70e9c8e92b4c239773af89cArgyrios Kyrtzidis 3220e0363866792b309d70e9c8e92b4c239773af89cArgyrios Kyrtzidis /// \brief Record code for pending implicit instantiations. 3230b17c61e8f143901ce11b4a6e5129ac63aaeee04Sebastian Redl PENDING_IMPLICIT_INSTANTIATIONS = 32, 3240b17c61e8f143901ce11b4a6e5129ac63aaeee04Sebastian Redl 3250b17c61e8f143901ce11b4a6e5129ac63aaeee04Sebastian Redl /// \brief Record code for a decl replacement block. 3260b17c61e8f143901ce11b4a6e5129ac63aaeee04Sebastian Redl /// 3270b17c61e8f143901ce11b4a6e5129ac63aaeee04Sebastian Redl /// If a declaration is modified after having been deserialized, and then 328f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// written to a dependent AST file, its ID and offset must be added to 3290b17c61e8f143901ce11b4a6e5129ac63aaeee04Sebastian Redl /// the replacement block. 3308b12273c86ede439edf52d35b170fd32b2ed49d4Sebastian Redl DECL_REPLACEMENTS = 33, 3318b12273c86ede439edf52d35b170fd32b2ed49d4Sebastian Redl 3328b12273c86ede439edf52d35b170fd32b2ed49d4Sebastian Redl /// \brief Record code for an update to a decl context's lookup table. 3338b12273c86ede439edf52d35b170fd32b2ed49d4Sebastian Redl /// 3348b12273c86ede439edf52d35b170fd32b2ed49d4Sebastian Redl /// In practice, this should only be used for the TU and namespaces. 3356e50e00c2fe6a04b2c35592588a4b10a2c269416Sebastian Redl UPDATE_VISIBLE = 34, 3366e50e00c2fe6a04b2c35592588a4b10a2c269416Sebastian Redl 3377b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis /// \brief Record for offsets of DECL_UPDATES records for declarations 3387b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis /// that were modified after being deserialized and need updates. 339bef1a7b9c175d37e4a727e6ce68bd05232fa6970Argyrios Kyrtzidis DECL_UPDATE_OFFSETS = 35, 3407b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis 3417b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis /// \brief Record of updates for a declaration that was modified after 3427b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis /// being deserialized. 3437c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor DECL_UPDATES = 36, 3447c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor 3457c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor /// \brief Record code for the table of offsets to CXXBaseSpecifier 3467c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor /// sets. 347f41d3be39980d40849850d3fb90403623cc8459eArgyrios Kyrtzidis CXX_BASE_SPECIFIER_OFFSETS = 37, 348f41d3be39980d40849850d3fb90403623cc8459eArgyrios Kyrtzidis 3493efd52cf8f4e57c5571bd8cc3168264c3bc46a1eArgyrios Kyrtzidis /// \brief Record code for #pragma diagnostic mappings. 35014b6ba77710d6431794d65c7d58c6f29c3dc956ePeter Collingbourne DIAG_PRAGMA_MAPPINGS = 38, 35114b6ba77710d6431794d65c7d58c6f29c3dc956ePeter Collingbourne 35214b6ba77710d6431794d65c7d58c6f29c3dc956ePeter Collingbourne /// \brief Record code for special CUDA declarations. 353cfbf1c7536e016dc275139dd842d4a5f059a749fDouglas Gregor CUDA_SPECIAL_DECL_REFS = 39, 354cfbf1c7536e016dc275139dd842d4a5f059a749fDouglas Gregor 355cfbf1c7536e016dc275139dd842d4a5f059a749fDouglas Gregor /// \brief Record code for header search information. 3568e3df4d0864f0a966c20088ca1a29c3398b7639dArgyrios Kyrtzidis HEADER_SEARCH_TABLE = 40, 3578e3df4d0864f0a966c20088ca1a29c3398b7639dArgyrios Kyrtzidis 3588e3df4d0864f0a966c20088ca1a29c3398b7639dArgyrios Kyrtzidis /// \brief The directory that the PCH was originally created in. 35984bccea1ad9fd8bc1f4ec3d1fc5dd8d15dabffbcPeter Collingbourne ORIGINAL_PCH_DIR = 41, 36084bccea1ad9fd8bc1f4ec3d1fc5dd8d15dabffbcPeter Collingbourne 36184bccea1ad9fd8bc1f4ec3d1fc5dd8d15dabffbcPeter Collingbourne /// \brief Record code for floating point #pragma options. 36284bccea1ad9fd8bc1f4ec3d1fc5dd8d15dabffbcPeter Collingbourne FP_PRAGMA_OPTIONS = 42, 36384bccea1ad9fd8bc1f4ec3d1fc5dd8d15dabffbcPeter Collingbourne 36484bccea1ad9fd8bc1f4ec3d1fc5dd8d15dabffbcPeter Collingbourne /// \brief Record code for enabled OpenCL extensions. 36584bccea1ad9fd8bc1f4ec3d1fc5dd8d15dabffbcPeter Collingbourne OPENCL_EXTENSIONS = 43 3662cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor }; 3672cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 36814f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief Record types used within a source manager block. 36914f79002e58556798e86168c63e48d533287eda5Douglas Gregor enum SourceManagerRecordTypes { 37014f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief Describes a source location entry (SLocEntry) for a 37114f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// file. 37214f79002e58556798e86168c63e48d533287eda5Douglas Gregor SM_SLOC_FILE_ENTRY = 1, 37314f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief Describes a source location entry (SLocEntry) for a 37414f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// buffer. 37514f79002e58556798e86168c63e48d533287eda5Douglas Gregor SM_SLOC_BUFFER_ENTRY = 2, 37614f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief Describes a blob that contains the data for a buffer 37714f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// entry. This kind of record always directly follows a 37814f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// SM_SLOC_BUFFER_ENTRY record. 37914f79002e58556798e86168c63e48d533287eda5Douglas Gregor SM_SLOC_BUFFER_BLOB = 3, 38014f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief Describes a source location entry (SLocEntry) for a 38114f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// macro instantiation. 382bd94500d3aa60092fb0f1e90f53fb0d03fa502a8Douglas Gregor SM_SLOC_INSTANTIATION_ENTRY = 4, 383bd94500d3aa60092fb0f1e90f53fb0d03fa502a8Douglas Gregor /// \brief Describes the SourceManager's line table, with 384bd94500d3aa60092fb0f1e90f53fb0d03fa502a8Douglas Gregor /// information about #line directives. 38512fab31aa5868b1a6b52246b5a87daa48a338fe2Douglas Gregor SM_LINE_TABLE = 5 38614f79002e58556798e86168c63e48d533287eda5Douglas Gregor }; 3871eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 3887c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// \brief Record types used within a preprocessor block. 3897c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner enum PreprocessorRecordTypes { 3907c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner // The macros in the PP section are a PP_MACRO_* instance followed by a 3917c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner // list of PP_TOKEN instances for each token in the definition. 3927c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner 3937c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// \brief An object-like macro definition. 3947c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// [PP_MACRO_OBJECT_LIKE, IdentInfoID, SLoc, IsUsed] 3957c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner PP_MACRO_OBJECT_LIKE = 1, 3967c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner 3977c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// \brief A function-like macro definition. 3987c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// [PP_MACRO_FUNCTION_LIKE, <ObjectLikeStuff>, IsC99Varargs, IsGNUVarars, 3997c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// NumArgs, ArgIdentInfoID* ] 4007c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner PP_MACRO_FUNCTION_LIKE = 2, 4011eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 4027c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// \brief Describes one token. 403c1f9d828c733ec1eba06d01070735d1f36fda733Chris Lattner /// [PP_TOKEN, SLoc, Length, IdentInfoID, Kind, Flags] 4044800a5c79023271408af49797e09be32aca93232Douglas Gregor PP_TOKEN = 3 4054800a5c79023271408af49797e09be32aca93232Douglas Gregor }; 4066a5a23f8e7fb65e028c8092bc1d1a1d9dfe2e9bcDouglas Gregor 4074800a5c79023271408af49797e09be32aca93232Douglas Gregor /// \brief Record types used within a preprocessor detail block. 4084800a5c79023271408af49797e09be32aca93232Douglas Gregor enum PreprocessorDetailRecordTypes { 4096a5a23f8e7fb65e028c8092bc1d1a1d9dfe2e9bcDouglas Gregor /// \brief Describes a macro instantiation within the preprocessing 4106a5a23f8e7fb65e028c8092bc1d1a1d9dfe2e9bcDouglas Gregor /// record. 4114800a5c79023271408af49797e09be32aca93232Douglas Gregor PPD_MACRO_INSTANTIATION = 0, 4126a5a23f8e7fb65e028c8092bc1d1a1d9dfe2e9bcDouglas Gregor 4136a5a23f8e7fb65e028c8092bc1d1a1d9dfe2e9bcDouglas Gregor /// \brief Describes a macro definition within the preprocessing record. 4144800a5c79023271408af49797e09be32aca93232Douglas Gregor PPD_MACRO_DEFINITION = 1, 415ecdcb883cbc6bb4a2445dc6f02d58d9bdb54a0edDouglas Gregor 4164800a5c79023271408af49797e09be32aca93232Douglas Gregor /// \brief Describes an inclusion directive within the preprocessing 417ecdcb883cbc6bb4a2445dc6f02d58d9bdb54a0edDouglas Gregor /// record. 4184800a5c79023271408af49797e09be32aca93232Douglas Gregor PPD_INCLUSION_DIRECTIVE = 2 4197c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner }; 4204800a5c79023271408af49797e09be32aca93232Douglas Gregor 421f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \defgroup ASTAST AST file AST constants 42214f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// 42314f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// The constants in this group describe various components of the 424f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// abstract syntax tree within an AST file. 42514f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// 42614f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// @{ 42714f79002e58556798e86168c63e48d533287eda5Douglas Gregor 4282cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief Predefined type IDs. 4292cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 4302cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// These type IDs correspond to predefined types in the AST 4312cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// context, such as built-in types (int) and special place-holder 4322cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// types (the <overload> and <dependent> type markers). Such 4332cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// types are never actually serialized, since they will be built 4342cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// by the AST context when it is created. 4352cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor enum PredefinedTypeIDs { 4362cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The NULL type. 4372cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_NULL_ID = 0, 4382cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The void type. 4392cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_VOID_ID = 1, 4402cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'bool' or '_Bool' type. 4412cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_BOOL_ID = 2, 4422cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'char' type, when it is unsigned. 4432cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_CHAR_U_ID = 3, 4442cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'unsigned char' type. 4452cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_UCHAR_ID = 4, 4462cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'unsigned short' type. 4472cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_USHORT_ID = 5, 4482cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'unsigned int' type. 4492cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_UINT_ID = 6, 4502cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'unsigned long' type. 4512cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_ULONG_ID = 7, 4522cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'unsigned long long' type. 4532cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_ULONGLONG_ID = 8, 4542cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'char' type, when it is signed. 4552cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_CHAR_S_ID = 9, 4562cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'signed char' type. 4572cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_SCHAR_ID = 10, 4582cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The C++ 'wchar_t' type. 4592cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_WCHAR_ID = 11, 4602cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The (signed) 'short' type. 4612cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_SHORT_ID = 12, 4622cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The (signed) 'int' type. 4632cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_INT_ID = 13, 4642cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The (signed) 'long' type. 4652cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_LONG_ID = 14, 4662cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The (signed) 'long long' type. 4672cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_LONGLONG_ID = 15, 4682cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'float' type. 4692cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_FLOAT_ID = 16, 4702cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'double' type. 4712cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_DOUBLE_ID = 17, 4722cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'long double' type. 4732cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_LONGDOUBLE_ID = 18, 4742cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The placeholder type for overloaded function sets. 4752cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_OVERLOAD_ID = 19, 4762cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The placeholder type for dependent types. 4772df9ced9fd1e8c7d7b38443db07e0e811de22571Chris Lattner PREDEF_TYPE_DEPENDENT_ID = 20, 4782df9ced9fd1e8c7d7b38443db07e0e811de22571Chris Lattner /// \brief The '__uint128_t' type. 4792df9ced9fd1e8c7d7b38443db07e0e811de22571Chris Lattner PREDEF_TYPE_UINT128_ID = 21, 4802df9ced9fd1e8c7d7b38443db07e0e811de22571Chris Lattner /// \brief The '__int128_t' type. 4816e8ed16ffef02b82995a90bdcf10ffff7d63839aSebastian Redl PREDEF_TYPE_INT128_ID = 22, 4826e8ed16ffef02b82995a90bdcf10ffff7d63839aSebastian Redl /// \brief The type of 'nullptr'. 483f5c209d23b20ada4a9b6235db50317239cbf6ae1Alisdair Meredith PREDEF_TYPE_NULLPTR_ID = 23, 484f5c209d23b20ada4a9b6235db50317239cbf6ae1Alisdair Meredith /// \brief The C++ 'char16_t' type. 485f5c209d23b20ada4a9b6235db50317239cbf6ae1Alisdair Meredith PREDEF_TYPE_CHAR16_ID = 24, 486f5c209d23b20ada4a9b6235db50317239cbf6ae1Alisdair Meredith /// \brief The C++ 'char32_t' type. 487de2e22d33afec98324a66a358dfe0951b3c7259aSteve Naroff PREDEF_TYPE_CHAR32_ID = 25, 488de2e22d33afec98324a66a358dfe0951b3c7259aSteve Naroff /// \brief The ObjC 'id' type. 489de2e22d33afec98324a66a358dfe0951b3c7259aSteve Naroff PREDEF_TYPE_OBJC_ID = 26, 490de2e22d33afec98324a66a358dfe0951b3c7259aSteve Naroff /// \brief The ObjC 'Class' type. 49113dcd00615de5c4279d97bdf63cd5f0a14fd9dccFariborz Jahanian PREDEF_TYPE_OBJC_CLASS = 27, 49213dcd00615de5c4279d97bdf63cd5f0a14fd9dccFariborz Jahanian /// \brief The ObjC 'SEL' type. 49313dcd00615de5c4279d97bdf63cd5f0a14fd9dccFariborz Jahanian PREDEF_TYPE_OBJC_SEL = 28 4942cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor }; 4952cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 4962cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The number of predefined type IDs that are reserved for 4972cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// the PREDEF_TYPE_* constants. 4982cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 4992cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// Type IDs for non-predefined types will start at 5002cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// NUM_PREDEF_TYPE_IDs. 5012cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor const unsigned NUM_PREDEF_TYPE_IDS = 100; 5022cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 5032cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief Record codes for each kind of type. 5042cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 50561d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// These constants describe the type records that can occur within a 506f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// block identified by DECLTYPES_BLOCK_ID in the AST file. Each 5072cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// constant describes a record for a specific type class in the 5082cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// AST. 5092cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor enum TypeCode { 5102cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An ExtQualType record. 51163f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_EXT_QUAL = 1, 5122cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A ComplexType record. 51363f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_COMPLEX = 3, 5142cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A PointerType record. 51563f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_POINTER = 4, 5162cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A BlockPointerType record. 51763f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_BLOCK_POINTER = 5, 5182cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An LValueReferenceType record. 51963f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_LVALUE_REFERENCE = 6, 5202cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An RValueReferenceType record. 52163f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_RVALUE_REFERENCE = 7, 5222cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A MemberPointerType record. 52363f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_MEMBER_POINTER = 8, 5242cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A ConstantArrayType record. 52563f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_CONSTANT_ARRAY = 9, 5262cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An IncompleteArrayType record. 52763f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_INCOMPLETE_ARRAY = 10, 5282cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A VariableArrayType record. 52963f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_VARIABLE_ARRAY = 11, 5302cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A VectorType record. 53163f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_VECTOR = 12, 5322cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An ExtVectorType record. 53363f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_EXT_VECTOR = 13, 5342cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A FunctionNoProtoType record. 53563f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_FUNCTION_NO_PROTO = 14, 5362cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A FunctionProtoType record. 53763f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_FUNCTION_PROTO = 15, 5382cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A TypedefType record. 53963f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_TYPEDEF = 16, 5402cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A TypeOfExprType record. 54163f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_TYPEOF_EXPR = 17, 5422cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A TypeOfType record. 54363f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_TYPEOF = 18, 5442cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A RecordType record. 54563f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_RECORD = 19, 5462cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An EnumType record. 54763f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_ENUM = 20, 5482cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An ObjCInterfaceType record. 54963f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_OBJC_INTERFACE = 21, 550d1b3c2dd5bc1f3103bee6137957aa7c5f8f2f0bcSteve Naroff /// \brief An ObjCObjectPointerType record. 551c15cb2af27514ecc879daba9aa01389c5203685dSteve Naroff TYPE_OBJC_OBJECT_POINTER = 22, 552395b475a4474f1c7574d927ad142ca0c7997cbcaAnders Carlsson /// \brief a DecltypeType record. 55354e14c4db764c0636160d26c5bbf491637c83a76John McCall TYPE_DECLTYPE = 23, 5547da2431c23ef1ee8acb114e39692246e1801afc2John McCall /// \brief An ElaboratedType record. 55554e14c4db764c0636160d26c5bbf491637c83a76John McCall TYPE_ELABORATED = 24, 55649a832bd499d6f61c23655f1fac99f0dd229756eJohn McCall /// \brief A SubstTemplateTypeParmType record. 557ed97649e9574b9d854fa4d6109c9333ae0993554John McCall TYPE_SUBST_TEMPLATE_TYPE_PARM = 25, 558ed97649e9574b9d854fa4d6109c9333ae0993554John McCall /// \brief An UnresolvedUsingType record. 5593cb0ebd5f76abcb776f7cb4062bd79e3268c0dc4John McCall TYPE_UNRESOLVED_USING = 26, 5603cb0ebd5f76abcb776f7cb4062bd79e3268c0dc4John McCall /// \brief An InjectedClassNameType record. 561c12c5bba6ceb6acd4e51e7a0fc03257da9cfd44eJohn McCall TYPE_INJECTED_CLASS_NAME = 27, 562c12c5bba6ceb6acd4e51e7a0fc03257da9cfd44eJohn McCall /// \brief An ObjCObjectType record. 56390b715e0df34eae2b50b9b43ec60828ed31dcf94Argyrios Kyrtzidis TYPE_OBJC_OBJECT = 28, 56490b715e0df34eae2b50b9b43ec60828ed31dcf94Argyrios Kyrtzidis /// \brief An TemplateTypeParmType record. 56590b715e0df34eae2b50b9b43ec60828ed31dcf94Argyrios Kyrtzidis TYPE_TEMPLATE_TYPE_PARM = 29, 56690b715e0df34eae2b50b9b43ec60828ed31dcf94Argyrios Kyrtzidis /// \brief An TemplateSpecializationType record. 5678dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfeArgyrios Kyrtzidis TYPE_TEMPLATE_SPECIALIZATION = 30, 5683acad62a239448bef0f5848b2a0d5f7dfefd3d14Argyrios Kyrtzidis /// \brief A DependentNameType record. 5693acad62a239448bef0f5848b2a0d5f7dfefd3d14Argyrios Kyrtzidis TYPE_DEPENDENT_NAME = 31, 5703acad62a239448bef0f5848b2a0d5f7dfefd3d14Argyrios Kyrtzidis /// \brief A DependentTemplateSpecializationType record. 571ae8b17f1d5d303af53db5a4f4a375ea6b9356566Argyrios Kyrtzidis TYPE_DEPENDENT_TEMPLATE_SPECIALIZATION = 32, 572ae8b17f1d5d303af53db5a4f4a375ea6b9356566Argyrios Kyrtzidis /// \brief A DependentSizedArrayType record. 573075f8f1b6bed4d1b224c74f87508534cc6392ce6Abramo Bagnara TYPE_DEPENDENT_SIZED_ARRAY = 33, 574075f8f1b6bed4d1b224c74f87508534cc6392ce6Abramo Bagnara /// \brief A ParenType record. 5757536dd5e6c99584481b7dab68b7e7d8df9c54054Douglas Gregor TYPE_PAREN = 34, 5767536dd5e6c99584481b7dab68b7e7d8df9c54054Douglas Gregor /// \brief A PackExpansionType record. 5779d156a7b1b2771e191f2f5a45a7b7a694129463bJohn McCall TYPE_PACK_EXPANSION = 35, 5789d156a7b1b2771e191f2f5a45a7b7a694129463bJohn McCall /// \brief An AttributedType record. 579c3069d618f4661d923cb1b5c4525b082fce73b04Douglas Gregor TYPE_ATTRIBUTED = 36, 580c3069d618f4661d923cb1b5c4525b082fce73b04Douglas Gregor /// \brief A SubstTemplateTypeParmPackType record. 58134b41d939a1328f484511c6002ba2456db879a29Richard Smith TYPE_SUBST_TEMPLATE_TYPE_PARM_PACK = 37, 58234b41d939a1328f484511c6002ba2456db879a29Richard Smith /// \brief A AutoType record. 58334b41d939a1328f484511c6002ba2456db879a29Richard Smith TYPE_AUTO = 38 5842cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor }; 5852cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 586ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// \brief The type IDs for special types constructed by semantic 587ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// analysis. 588ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// 589ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// The constants in this enumeration are indices into the 590ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// SPECIAL_TYPES record. 591ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor enum SpecialTypeIDs { 592ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// \brief __builtin_va_list 593319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor SPECIAL_TYPE_BUILTIN_VA_LIST = 0, 594319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor /// \brief Objective-C "id" type 595319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor SPECIAL_TYPE_OBJC_ID = 1, 596319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor /// \brief Objective-C selector type 597319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor SPECIAL_TYPE_OBJC_SELECTOR = 2, 598319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor /// \brief Objective-C Protocol type 599319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor SPECIAL_TYPE_OBJC_PROTOCOL = 3, 600319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor /// \brief Objective-C Class type 601319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor SPECIAL_TYPE_OBJC_CLASS = 4, 602319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor /// \brief CFConstantString type 603319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor SPECIAL_TYPE_CF_CONSTANT_STRING = 5, 604319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor /// \brief Objective-C fast enumeration state type 605c29f77b769bcc5b6dc85e72c8e3cc2e348e5cf25Douglas Gregor SPECIAL_TYPE_OBJC_FAST_ENUMERATION_STATE = 6, 606c29f77b769bcc5b6dc85e72c8e3cc2e348e5cf25Douglas Gregor /// \brief C FILE typedef type 607782fa308a765aeac2acb39c4e697c937ec21185bMike Stump SPECIAL_TYPE_FILE = 7, 608782fa308a765aeac2acb39c4e697c937ec21185bMike Stump /// \brief C jmp_buf typedef type 609782fa308a765aeac2acb39c4e697c937ec21185bMike Stump SPECIAL_TYPE_jmp_buf = 8, 610782fa308a765aeac2acb39c4e697c937ec21185bMike Stump /// \brief C sigjmp_buf typedef type 611d1571acc700b652a52c766e36a6c688d9bf6f3a1Douglas Gregor SPECIAL_TYPE_sigjmp_buf = 9, 612d1571acc700b652a52c766e36a6c688d9bf6f3a1Douglas Gregor /// \brief Objective-C "id" redefinition type 613d1571acc700b652a52c766e36a6c688d9bf6f3a1Douglas Gregor SPECIAL_TYPE_OBJC_ID_REDEFINITION = 10, 614d1571acc700b652a52c766e36a6c688d9bf6f3a1Douglas Gregor /// \brief Objective-C "Class" redefinition type 615adaaad3715c9c26cdcfdfe3401a13d7b4423ddcfMike Stump SPECIAL_TYPE_OBJC_CLASS_REDEFINITION = 11, 616adaaad3715c9c26cdcfdfe3401a13d7b4423ddcfMike Stump /// \brief Block descriptor type for Blocks CodeGen 617083c25eea14bb4cc4ecc3ec763c60e2e609e22bdMike Stump SPECIAL_TYPE_BLOCK_DESCRIPTOR = 12, 618083c25eea14bb4cc4ecc3ec763c60e2e609e22bdMike Stump /// \brief Block extedned descriptor type for Blocks CodeGen 61913dcd00615de5c4279d97bdf63cd5f0a14fd9dccFariborz Jahanian SPECIAL_TYPE_BLOCK_EXTENDED_DESCRIPTOR = 13, 62013dcd00615de5c4279d97bdf63cd5f0a14fd9dccFariborz Jahanian /// \brief Objective-C "SEL" redefinition type 6212bb5ddaff86ee73d2cea7ec1835978afc88a83f0Fariborz Jahanian SPECIAL_TYPE_OBJC_SEL_REDEFINITION = 14, 6222bb5ddaff86ee73d2cea7ec1835978afc88a83f0Fariborz Jahanian /// \brief NSConstantString type 623006113841bdae1edb77aef75ba1ffdf2e55a3094Argyrios Kyrtzidis SPECIAL_TYPE_NS_CONSTANT_STRING = 15, 624006113841bdae1edb77aef75ba1ffdf2e55a3094Argyrios Kyrtzidis /// \brief Whether __[u]int128_t identifier is installed. 625006113841bdae1edb77aef75ba1ffdf2e55a3094Argyrios Kyrtzidis SPECIAL_TYPE_INT128_INSTALLED = 16 626ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor }; 627ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor 6282cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief Record codes for each kind of declaration. 6292cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 63061d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// These constants describe the declaration records that can occur within 63161d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// a declarations block (identified by DECLS_BLOCK_ID). Each 6322cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// constant describes a record for a specific declaration class 6332cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// in the AST. 6342cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor enum DeclCode { 6352cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A TranslationUnitDecl record. 6364eb9fc0449ddbd5239ddc3ae6b6e52880f47dcf7Argyrios Kyrtzidis DECL_TRANSLATION_UNIT = 50, 6372cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A TypedefDecl record. 6382cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor DECL_TYPEDEF, 6390a2b45e5885b6b8477b167042c0f6cd1d99a1f13Douglas Gregor /// \brief An EnumDecl record. 6400a2b45e5885b6b8477b167042c0f6cd1d99a1f13Douglas Gregor DECL_ENUM, 6418c70006581a9b9e9485570ca727a6c5f7be63521Douglas Gregor /// \brief A RecordDecl record. 6428c70006581a9b9e9485570ca727a6c5f7be63521Douglas Gregor DECL_RECORD, 6430a2b45e5885b6b8477b167042c0f6cd1d99a1f13Douglas Gregor /// \brief An EnumConstantDecl record. 6440a2b45e5885b6b8477b167042c0f6cd1d99a1f13Douglas Gregor DECL_ENUM_CONSTANT, 6453a2f7e42514ddbec983c61826ce85d3071e23e8eDouglas Gregor /// \brief A FunctionDecl record. 6463a2f7e42514ddbec983c61826ce85d3071e23e8eDouglas Gregor DECL_FUNCTION, 64753c9d8a4b8f0a76cb9dd2fdd8c433ccf110f2eecSteve Naroff /// \brief A ObjCMethodDecl record. 64853c9d8a4b8f0a76cb9dd2fdd8c433ccf110f2eecSteve Naroff DECL_OBJC_METHOD, 64933feeb019a5742b286eededd5446ec0fe87c5a61Steve Naroff /// \brief A ObjCInterfaceDecl record. 65030833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_INTERFACE, 65130833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCProtocolDecl record. 65230833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_PROTOCOL, 65333feeb019a5742b286eededd5446ec0fe87c5a61Steve Naroff /// \brief A ObjCIvarDecl record. 65430833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_IVAR, 65530833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCAtDefsFieldDecl record. 65630833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_AT_DEFS_FIELD, 65730833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCClassDecl record. 65830833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_CLASS, 65930833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCForwardProtocolDecl record. 66030833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_FORWARD_PROTOCOL, 66130833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCCategoryDecl record. 66230833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_CATEGORY, 66330833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCCategoryImplDecl record. 66430833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_CATEGORY_IMPL, 66530833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCImplementationDecl record. 66630833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_IMPLEMENTATION, 66730833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCCompatibleAliasDecl record. 66830833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_COMPATIBLE_ALIAS, 66930833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCPropertyDecl record. 67030833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_PROPERTY, 67130833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCPropertyImplDecl record. 67230833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_PROPERTY_IMPL, 6738c70006581a9b9e9485570ca727a6c5f7be63521Douglas Gregor /// \brief A FieldDecl record. 6748c70006581a9b9e9485570ca727a6c5f7be63521Douglas Gregor DECL_FIELD, 6752cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A VarDecl record. 6762cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor DECL_VAR, 677405bad07391494d2eb025f8222c256c66b56e5f8Douglas Gregor /// \brief An ImplicitParamDecl record. 678405bad07391494d2eb025f8222c256c66b56e5f8Douglas Gregor DECL_IMPLICIT_PARAM, 6793a2f7e42514ddbec983c61826ce85d3071e23e8eDouglas Gregor /// \brief A ParmVarDecl record. 6803a2f7e42514ddbec983c61826ce85d3071e23e8eDouglas Gregor DECL_PARM_VAR, 6811028bc67d56ea088c3a57c4c44c3f6aeff60a031Douglas Gregor /// \brief A FileScopeAsmDecl record. 6821028bc67d56ea088c3a57c4c44c3f6aeff60a031Douglas Gregor DECL_FILE_SCOPE_ASM, 6831028bc67d56ea088c3a57c4c44c3f6aeff60a031Douglas Gregor /// \brief A BlockDecl record. 6841028bc67d56ea088c3a57c4c44c3f6aeff60a031Douglas Gregor DECL_BLOCK, 6852cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A record that stores the set of declarations that are 6862cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// lexically stored within a given DeclContext. 6872cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 688681d7237e1014bf64dd5ead6bf74ae55cdd19e61Sebastian Redl /// The record itself is a blob that is an array of declaration IDs, 689681d7237e1014bf64dd5ead6bf74ae55cdd19e61Sebastian Redl /// in the order in which those declarations were added to the 6902cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// declaration context. This data is used when iterating over 6912cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// the contents of a DeclContext, e.g., via 6922cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// DeclContext::decls_begin()/DeclContext::decls_end(). 6932cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor DECL_CONTEXT_LEXICAL, 6942cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A record that stores the set of declarations that are 6952cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// visible from a given DeclContext. 6962cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 6972cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// The record itself stores a set of mappings, each of which 6982cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// associates a declaration name with one or more declaration 6992cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// IDs. This data is used when performing qualified name lookup 7002cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// into a DeclContext via DeclContext::lookup. 7010cef483f3b9d6a7f9fdbc5910d0a3ed64130e8e1Douglas Gregor DECL_CONTEXT_VISIBLE, 702ad8dcf4a9df0e24051dc31bf9e6f3cd138a34298Chris Lattner /// \brief A LabelDecl record. 703ad8dcf4a9df0e24051dc31bf9e6f3cd138a34298Chris Lattner DECL_LABEL, 704ad8dcf4a9df0e24051dc31bf9e6f3cd138a34298Chris Lattner /// \brief A NamespaceDecl record. 7056ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_NAMESPACE, 7066ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A NamespaceAliasDecl record. 7076ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_NAMESPACE_ALIAS, 7086ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A UsingDecl record. 7096ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_USING, 7106ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A UsingShadowDecl record. 7116ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_USING_SHADOW, 7126ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A UsingDirecitveDecl record. 7136ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_USING_DIRECTIVE, 7146ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief An UnresolvedUsingValueDecl record. 7156ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_UNRESOLVED_USING_VALUE, 7166ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief An UnresolvedUsingTypenameDecl record. 7176ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_UNRESOLVED_USING_TYPENAME, 7186ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A LinkageSpecDecl record. 7196ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_LINKAGE_SPEC, 7206ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A CXXRecordDecl record. 7216ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CXX_RECORD, 7226ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A CXXMethodDecl record. 7236ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CXX_METHOD, 7246ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A CXXConstructorDecl record. 7256ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CXX_CONSTRUCTOR, 7266ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A CXXDestructorDecl record. 7276ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CXX_DESTRUCTOR, 7286ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A CXXConversionDecl record. 7296ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CXX_CONVERSION, 7306206d53f67613958ae1b023aba337ebb46f11a8bAbramo Bagnara /// \brief An AccessSpecDecl record. 7316206d53f67613958ae1b023aba337ebb46f11a8bAbramo Bagnara DECL_ACCESS_SPEC, 7326ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner 7335f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A FriendDecl record. 7346ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_FRIEND, 7355f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A FriendTemplateDecl record. 7366ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_FRIEND_TEMPLATE, 7375f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A ClassTemplateDecl record. 7386ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CLASS_TEMPLATE, 7395f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A ClassTemplateSpecializationDecl record. 7406ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CLASS_TEMPLATE_SPECIALIZATION, 7415f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A ClassTemplatePartialSpecializationDecl record. 7426ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CLASS_TEMPLATE_PARTIAL_SPECIALIZATION, 7435f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A FunctionTemplateDecl record. 7446ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_FUNCTION_TEMPLATE, 7455f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A TemplateTypeParmDecl record. 7466ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_TEMPLATE_TYPE_PARM, 7475f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A NonTypeTemplateParmDecl record. 7486ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_NON_TYPE_TEMPLATE_PARM, 7495f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A TemplateTemplateParmDecl record. 7506ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_TEMPLATE_TEMPLATE_PARM, 7515f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A StaticAssertDecl record. 7527c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor DECL_STATIC_ASSERT, 7537c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor /// \brief A record containing CXXBaseSpecifiers. 75487c2e121cf0522fc266efe2922b58091cd2e0182Francois Pichet DECL_CXX_BASE_SPECIFIERS, 75587c2e121cf0522fc266efe2922b58091cd2e0182Francois Pichet /// \brief A IndirectFieldDecl record. 7566952f1e4256c5b43aee5e98cea4e9b663bd1d413Douglas Gregor DECL_INDIRECTFIELD, 7576952f1e4256c5b43aee5e98cea4e9b663bd1d413Douglas Gregor /// \brief A NonTypeTemplateParmDecl record that stores an expanded 7586952f1e4256c5b43aee5e98cea4e9b663bd1d413Douglas Gregor /// non-type template parameter pack. 7596952f1e4256c5b43aee5e98cea4e9b663bd1d413Douglas Gregor DECL_EXPANDED_NON_TYPE_TEMPLATE_PARM_PACK 7602cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor }; 7610b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor 7620b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// \brief Record codes for each kind of statement or expression. 7630b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// 7640b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// These constants describe the records that describe statements 76561d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// or expressions. These records occur within type and declarations 76661d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// block, so they begin with record values of 100. Each constant 76761d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// describes a record for a specific statement or expression class in the 76861d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// AST. 7690b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor enum StmtCode { 770087fd536809ebe754d91c641a98917e02dd7452dDouglas Gregor /// \brief A marker record that indicates that we are at the end 771087fd536809ebe754d91c641a98917e02dd7452dDouglas Gregor /// of an expression. 77261d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor STMT_STOP = 100, 7730b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// \brief A NULL expression. 774c9490c000f515c29f200a1215328d8ab9a0f3818Douglas Gregor STMT_NULL_PTR, 775025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A NullStmt record. 776025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_NULL, 777025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A CompoundStmt record. 778025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_COMPOUND, 779025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A CaseStmt record. 780025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_CASE, 781025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A DefaultStmt record. 782025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_DEFAULT, 7831de05feeeafe5b215fe7617594a7076a5192a6e2Douglas Gregor /// \brief A LabelStmt record. 7841de05feeeafe5b215fe7617594a7076a5192a6e2Douglas Gregor STMT_LABEL, 785025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief An IfStmt record. 786025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_IF, 787025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A SwitchStmt record. 788025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_SWITCH, 789d921cf976b4769af8d06d6763a2547dadf7940abDouglas Gregor /// \brief A WhileStmt record. 790d921cf976b4769af8d06d6763a2547dadf7940abDouglas Gregor STMT_WHILE, 79167d8249924ef38a5375ff9c92cd21c1854d6ababDouglas Gregor /// \brief A DoStmt record. 79267d8249924ef38a5375ff9c92cd21c1854d6ababDouglas Gregor STMT_DO, 79367d8249924ef38a5375ff9c92cd21c1854d6ababDouglas Gregor /// \brief A ForStmt record. 79467d8249924ef38a5375ff9c92cd21c1854d6ababDouglas Gregor STMT_FOR, 7951de05feeeafe5b215fe7617594a7076a5192a6e2Douglas Gregor /// \brief A GotoStmt record. 7961de05feeeafe5b215fe7617594a7076a5192a6e2Douglas Gregor STMT_GOTO, 7977d5c2f241c74e5f8d9ec492e8f9f268e5e9ae41fDouglas Gregor /// \brief An IndirectGotoStmt record. 7987d5c2f241c74e5f8d9ec492e8f9f268e5e9ae41fDouglas Gregor STMT_INDIRECT_GOTO, 799d921cf976b4769af8d06d6763a2547dadf7940abDouglas Gregor /// \brief A ContinueStmt record. 800d921cf976b4769af8d06d6763a2547dadf7940abDouglas Gregor STMT_CONTINUE, 801025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A BreakStmt record. 802025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_BREAK, 8030de9d8857b715c2f45c987651f4ce06d73330d93Douglas Gregor /// \brief A ReturnStmt record. 8040de9d8857b715c2f45c987651f4ce06d73330d93Douglas Gregor STMT_RETURN, 80584f2170062014d268951902164bed0d8bdea0e82Douglas Gregor /// \brief A DeclStmt record. 80684f2170062014d268951902164bed0d8bdea0e82Douglas Gregor STMT_DECL, 807cd7d5a9dc558178ed7a66032f888781b3c592e4fDouglas Gregor /// \brief An AsmStmt record. 808cd7d5a9dc558178ed7a66032f888781b3c592e4fDouglas Gregor STMT_ASM, 80917fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor /// \brief A PredefinedExpr record. 81017fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor EXPR_PREDEFINED, 8110b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// \brief A DeclRefExpr record. 8120b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor EXPR_DECL_REF, 8130b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// \brief An IntegerLiteral record. 8140b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor EXPR_INTEGER_LITERAL, 81517fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor /// \brief A FloatingLiteral record. 81617fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor EXPR_FLOATING_LITERAL, 817cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor /// \brief An ImaginaryLiteral record. 818cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor EXPR_IMAGINARY_LITERAL, 819673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregor /// \brief A StringLiteral record. 820673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregor EXPR_STRING_LITERAL, 8210b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// \brief A CharacterLiteral record. 822087fd536809ebe754d91c641a98917e02dd7452dDouglas Gregor EXPR_CHARACTER_LITERAL, 823c04db4feefa2b0dbbc6876cb4eeeee108aa6791dDouglas Gregor /// \brief A ParenExpr record. 824c04db4feefa2b0dbbc6876cb4eeeee108aa6791dDouglas Gregor EXPR_PAREN, 82537bdfe284ad365f753741d1d89c078c148b3f4afArgyrios Kyrtzidis /// \brief A ParenListExpr record. 82637bdfe284ad365f753741d1d89c078c148b3f4afArgyrios Kyrtzidis EXPR_PAREN_LIST, 8270b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor /// \brief A UnaryOperator record. 8280b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor EXPR_UNARY_OPERATOR, 8298ecdb65716cd7914ffb2eeee993fa9039fcd31e8Douglas Gregor /// \brief An OffsetOfExpr record. 8308ecdb65716cd7914ffb2eeee993fa9039fcd31e8Douglas Gregor EXPR_OFFSETOF, 8310b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor /// \brief A SizefAlignOfExpr record. 8320b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor EXPR_SIZEOF_ALIGN_OF, 833cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor /// \brief An ArraySubscriptExpr record. 834cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor EXPR_ARRAY_SUBSCRIPT, 8351f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor /// \brief A CallExpr record. 8361f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor EXPR_CALL, 8371f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor /// \brief A MemberExpr record. 8381f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor EXPR_MEMBER, 839db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor /// \brief A BinaryOperator record. 840db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor EXPR_BINARY_OPERATOR, 841ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor /// \brief A CompoundAssignOperator record. 842ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor EXPR_COMPOUND_ASSIGN_OPERATOR, 843ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor /// \brief A ConditionOperator record. 844ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor EXPR_CONDITIONAL_OPERATOR, 845087fd536809ebe754d91c641a98917e02dd7452dDouglas Gregor /// \brief An ImplicitCastExpr record. 846db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor EXPR_IMPLICIT_CAST, 847db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor /// \brief A CStyleCastExpr record. 848d3c98a02c73417689deaaa6671ea6df7f2a8a73cDouglas Gregor EXPR_CSTYLE_CAST, 849ba6d7e7fa5f79959d3eef39adb5620d845ba5198Douglas Gregor /// \brief A CompoundLiteralExpr record. 850ba6d7e7fa5f79959d3eef39adb5620d845ba5198Douglas Gregor EXPR_COMPOUND_LITERAL, 851d3c98a02c73417689deaaa6671ea6df7f2a8a73cDouglas Gregor /// \brief An ExtVectorElementExpr record. 852d3c98a02c73417689deaaa6671ea6df7f2a8a73cDouglas Gregor EXPR_EXT_VECTOR_ELEMENT, 853d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief An InitListExpr record. 854d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor EXPR_INIT_LIST, 855d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief A DesignatedInitExpr record. 856d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor EXPR_DESIGNATED_INIT, 857d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief An ImplicitValueInitExpr record. 858d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor EXPR_IMPLICIT_VALUE_INIT, 859d3c98a02c73417689deaaa6671ea6df7f2a8a73cDouglas Gregor /// \brief A VAArgExpr record. 86044cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor EXPR_VA_ARG, 8616a2dd55b0b3ae376d449a4b07bbb6b2d30b26330Douglas Gregor /// \brief An AddrLabelExpr record. 8627d5c2f241c74e5f8d9ec492e8f9f268e5e9ae41fDouglas Gregor EXPR_ADDR_LABEL, 8636a2dd55b0b3ae376d449a4b07bbb6b2d30b26330Douglas Gregor /// \brief A StmtExpr record. 8646a2dd55b0b3ae376d449a4b07bbb6b2d30b26330Douglas Gregor EXPR_STMT, 86544cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor /// \brief A ChooseExpr record. 86644cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor EXPR_CHOOSE, 86744cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor /// \brief A GNUNullExpr record. 86894cd5d1397bb1a8bcd109602aa38dd787b164c22Douglas Gregor EXPR_GNU_NULL, 86994cd5d1397bb1a8bcd109602aa38dd787b164c22Douglas Gregor /// \brief A ShuffleVectorExpr record. 87094cd5d1397bb1a8bcd109602aa38dd787b164c22Douglas Gregor EXPR_SHUFFLE_VECTOR, 87184af7c27cdc615ff917a501d61256b4049383c97Douglas Gregor /// \brief BlockExpr 87284af7c27cdc615ff917a501d61256b4049383c97Douglas Gregor EXPR_BLOCK, 87384af7c27cdc615ff917a501d61256b4049383c97Douglas Gregor /// \brief A BlockDeclRef record. 8744dcf151a555ff51e4d643e8e6eeb80f121d11d1bChris Lattner EXPR_BLOCK_DECL_REF, 87539da0b8145eaec7da7004f9b3645c5c9f4f63b1dDouglas Gregor 8764dcf151a555ff51e4d643e8e6eeb80f121d11d1bChris Lattner // Objective-C 8771eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 8780389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCStringLiteral record. 8793a57a3765b6192a94ff4e5997ae0489a1471b308Chris Lattner EXPR_OBJC_STRING_LITERAL, 8800389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCEncodeExpr record. 8813a57a3765b6192a94ff4e5997ae0489a1471b308Chris Lattner EXPR_OBJC_ENCODE, 8820389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCSelectorExpr record. 8833a57a3765b6192a94ff4e5997ae0489a1471b308Chris Lattner EXPR_OBJC_SELECTOR_EXPR, 8840389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCProtocolExpr record. 885c4f0bbdb166fbc31ab2cf0f6ff573fde9fa307b3Steve Naroff EXPR_OBJC_PROTOCOL_EXPR, 8860389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCIvarRefExpr record. 8870389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner EXPR_OBJC_IVAR_REF_EXPR, 8880389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCPropertyRefExpr record. 8890389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner EXPR_OBJC_PROPERTY_REF_EXPR, 89012f78a6741a4cb3d904340f8d3d2714568b50e7aJohn McCall /// \brief UNUSED 8910389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner EXPR_OBJC_KVC_REF_EXPR, 8920389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCMessageExpr record. 8930389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner EXPR_OBJC_MESSAGE_EXPR, 894f242b1b0c4e998911cb96b2ba7e27ab4a5abaed3Steve Naroff /// \brief An ObjCIsa Expr record. 895f242b1b0c4e998911cb96b2ba7e27ab4a5abaed3Steve Naroff EXPR_OBJC_ISA, 8961eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 8971eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCForCollectionStmt record. 8981eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff STMT_OBJC_FOR_COLLECTION, 8991eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCAtCatchStmt record. 9001eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff STMT_OBJC_CATCH, 9011eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCAtFinallyStmt record. 9021eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff STMT_OBJC_FINALLY, 9031eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCAtTryStmt record. 9041eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff STMT_OBJC_AT_TRY, 9051eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCAtSynchronizedStmt record. 9061eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff STMT_OBJC_AT_SYNCHRONIZED, 9071eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCAtThrowStmt record. 908ba0a9006dbc4814e1e35f82812cb5a1dad65e8b8Argyrios Kyrtzidis STMT_OBJC_AT_THROW, 909ba0a9006dbc4814e1e35f82812cb5a1dad65e8b8Argyrios Kyrtzidis 910ba0a9006dbc4814e1e35f82812cb5a1dad65e8b8Argyrios Kyrtzidis // C++ 9117cb45e37b6f924d9ddbc53ac023bbaadb4ca3534Argyrios Kyrtzidis 9127cb45e37b6f924d9ddbc53ac023bbaadb4ca3534Argyrios Kyrtzidis /// \brief A CXXCatchStmt record. 9137cb45e37b6f924d9ddbc53ac023bbaadb4ca3534Argyrios Kyrtzidis STMT_CXX_CATCH, 9147cb45e37b6f924d9ddbc53ac023bbaadb4ca3534Argyrios Kyrtzidis /// \brief A CXXTryStmt record. 9157cb45e37b6f924d9ddbc53ac023bbaadb4ca3534Argyrios Kyrtzidis STMT_CXX_TRY, 916ba0a9006dbc4814e1e35f82812cb5a1dad65e8b8Argyrios Kyrtzidis 91739da0b8145eaec7da7004f9b3645c5c9f4f63b1dDouglas Gregor /// \brief A CXXOperatorCallExpr record. 91839da0b8145eaec7da7004f9b3645c5c9f4f63b1dDouglas Gregor EXPR_CXX_OPERATOR_CALL, 9191817bd483b538fd3f4530649f5cb900bad9e8a76Chris Lattner /// \brief A CXXMemberCallExpr record. 9201817bd483b538fd3f4530649f5cb900bad9e8a76Chris Lattner EXPR_CXX_MEMBER_CALL, 92139da0b8145eaec7da7004f9b3645c5c9f4f63b1dDouglas Gregor /// \brief A CXXConstructExpr record. 922ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig EXPR_CXX_CONSTRUCT, 9236d00c1365dd3601f6d93bbda9162913c57ae788fArgyrios Kyrtzidis /// \brief A CXXTemporaryObjectExpr record. 9246d00c1365dd3601f6d93bbda9162913c57ae788fArgyrios Kyrtzidis EXPR_CXX_TEMPORARY_OBJECT, 925f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief A CXXStaticCastExpr record. 926ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig EXPR_CXX_STATIC_CAST, 927f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief A CXXDynamicCastExpr record. 928ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig EXPR_CXX_DYNAMIC_CAST, 929f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief A CXXReinterpretCastExpr record. 930ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig EXPR_CXX_REINTERPRET_CAST, 931f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief A CXXConstCastExpr record. 932ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig EXPR_CXX_CONST_CAST, 933f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief A CXXFunctionalCastExpr record. 934eb7f96141f754150a92433286fa385910a22f494Sam Weinig EXPR_CXX_FUNCTIONAL_CAST, 935f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief A CXXBoolLiteralExpr record. 936eb7f96141f754150a92433286fa385910a22f494Sam Weinig EXPR_CXX_BOOL_LITERAL, 93714ab24f01e36d495fce183aa67b41e45cdd54f39Chris Lattner EXPR_CXX_NULL_PTR_LITERAL, // CXXNullPtrLiteralExpr 93814ab24f01e36d495fce183aa67b41e45cdd54f39Chris Lattner EXPR_CXX_TYPEID_EXPR, // CXXTypeidExpr (of expr). 9392fbdfcdf3bbf7b941853d38b123930755e837437Chris Lattner EXPR_CXX_TYPEID_TYPE, // CXXTypeidExpr (of type). 94001b7c3028da5bbcb9f8e52ba67e4613070de0e60Francois Pichet EXPR_CXX_UUIDOF_EXPR, // CXXUuidofExpr (of expr). 94101b7c3028da5bbcb9f8e52ba67e4613070de0e60Francois Pichet EXPR_CXX_UUIDOF_TYPE, // CXXUuidofExpr (of type). 9422fbdfcdf3bbf7b941853d38b123930755e837437Chris Lattner EXPR_CXX_THIS, // CXXThisExpr 943030854b95f7bfd86aaa8afd9ae1aff9768a37e9aChris Lattner EXPR_CXX_THROW, // CXXThrowExpr 944d2598368876cfe40bc8465540033bc5b5e58d8afChris Lattner EXPR_CXX_DEFAULT_ARG, // CXXDefaultArgExpr 945d2598368876cfe40bc8465540033bc5b5e58d8afChris Lattner EXPR_CXX_BIND_TEMPORARY, // CXXBindTemporaryExpr 9466d00c1365dd3601f6d93bbda9162913c57ae788fArgyrios Kyrtzidis 947ed8abf18329df67b0abcbb3a10458bd8c1d2a595Douglas Gregor EXPR_CXX_SCALAR_VALUE_INIT, // CXXScalarValueInitExpr 9485921863d8f24084797863b5df37842113bac4352Chris Lattner EXPR_CXX_NEW, // CXXNewExpr 94995fc98ce95d4faa4f1bb2783384150530404ea6fArgyrios Kyrtzidis EXPR_CXX_DELETE, // CXXDeleteExpr 950de4bd18bb45a1db68996cfb949db3015fc25d10dArgyrios Kyrtzidis EXPR_CXX_PSEUDO_DESTRUCTOR, // CXXPseudoDestructorExpr 951d2598368876cfe40bc8465540033bc5b5e58d8afChris Lattner 9524765fa05b5652fcc4356371c2f481d0ea9a1b007John McCall EXPR_EXPR_WITH_CLEANUPS, // ExprWithCleanups 9538dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfeArgyrios Kyrtzidis 9546b219d082434394c1ac401390ec1d1967727815aSebastian Redl EXPR_CXX_DEPENDENT_SCOPE_MEMBER, // CXXDependentScopeMemberExpr 9556b219d082434394c1ac401390ec1d1967727815aSebastian Redl EXPR_CXX_DEPENDENT_SCOPE_DECL_REF, // DependentScopeDeclRefExpr 9566b219d082434394c1ac401390ec1d1967727815aSebastian Redl EXPR_CXX_UNRESOLVED_CONSTRUCT, // CXXUnresolvedConstructExpr 9576b219d082434394c1ac401390ec1d1967727815aSebastian Redl EXPR_CXX_UNRESOLVED_MEMBER, // UnresolvedMemberExpr 9586b219d082434394c1ac401390ec1d1967727815aSebastian Redl EXPR_CXX_UNRESOLVED_LOOKUP, // UnresolvedLookupExpr 9596b219d082434394c1ac401390ec1d1967727815aSebastian Redl 9606b219d082434394c1ac401390ec1d1967727815aSebastian Redl EXPR_CXX_UNARY_TYPE_TRAIT, // UnaryTypeTraitExpr 9617cd7d1ad33fdf49eef83942e8855fe20d95aa1b9John McCall EXPR_CXX_NOEXCEPT, // CXXNoexceptExpr 9627cd7d1ad33fdf49eef83942e8855fe20d95aa1b9John McCall 9636ad6f2848d7652ab2991286eb48be440d3493b28Francois Pichet EXPR_OPAQUE_VALUE, // OpaqueValueExpr 96456ca35d396d8692c384c785f9aeebcf22563fe1eJohn McCall EXPR_BINARY_CONDITIONAL_OPERATOR, // BinaryConditionalOperator 965be230c36e32142cbdcdbe9c97511d097beeecbabDouglas Gregor EXPR_BINARY_TYPE_TRAIT, // BinaryTypeTraitExpr 966be230c36e32142cbdcdbe9c97511d097beeecbabDouglas Gregor 967ee8aff06f6a96214731de17b2cb6df407c6c1820Douglas Gregor EXPR_PACK_EXPANSION, // PackExpansionExpr 968c7793c73ba8a343de3f2552d984851985a46f159Douglas Gregor EXPR_SIZEOF_PACK, // SizeOfPackExpr 969e08ce650a2b02410eddd1f60a4aa6b3d4be71e73Peter Collingbourne EXPR_SUBST_NON_TYPE_TEMPLATE_PARM_PACK,// SubstNonTypeTemplateParmPackExpr 970e08ce650a2b02410eddd1f60a4aa6b3d4be71e73Peter Collingbourne 971e08ce650a2b02410eddd1f60a4aa6b3d4be71e73Peter Collingbourne // CUDA 972e08ce650a2b02410eddd1f60a4aa6b3d4be71e73Peter Collingbourne 973e08ce650a2b02410eddd1f60a4aa6b3d4be71e73Peter Collingbourne EXPR_CUDA_KERNEL_CALL // CUDAKernelCallExpr 9740b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor }; 975d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor 976d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief The kinds of designators that can occur in a 977d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// DesignatedInitExpr. 978d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor enum DesignatorTypes { 979d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief Field designator where only the field name is known. 980d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor DESIG_FIELD_NAME = 0, 981d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief Field designator where the field has been resolved to 982d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// a declaration. 983d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor DESIG_FIELD_DECL = 1, 984d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief Array designator. 985d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor DESIG_ARRAY = 2, 986d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief GNU array range designator. 987d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor DESIG_ARRAY_RANGE = 3 988d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor }; 989d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor 99014f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// @} 9912cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor } 9922cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor} // end namespace clang 9932cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 9942cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#endif 995