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 5095eab176f51beed44a9bc14c0dcdd37844b23740Douglas Gregor /// \brief An ID number that refers to an identifier in an AST file. 5195eab176f51beed44a9bc14c0dcdd37844b23740Douglas Gregor /// 5295eab176f51beed44a9bc14c0dcdd37844b23740Douglas Gregor /// The ID numbers of identifiers are consecutive (in order of discovery) 5395eab176f51beed44a9bc14c0dcdd37844b23740Douglas Gregor /// and start at 1. 0 is reserved for NULL. 5495eab176f51beed44a9bc14c0dcdd37844b23740Douglas Gregor typedef uint32_t IdentifierID; 5595eab176f51beed44a9bc14c0dcdd37844b23740Douglas Gregor 56f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief An ID number that refers to a declaration in an AST file. 578038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// 58a93e3b5bde9f0a7b59215f19f176f7d69881b81cSebastian Redl /// The ID numbers of declarations are consecutive (in order of 590a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor /// discovery), with values below NUM_PREDEF_DECL_IDS being reserved. 600a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor /// At the start of a chain of precompiled headers, declaration ID 1 is 610a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor /// used for the translation unit declaration. 628038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor typedef uint32_t DeclID; 638038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor 64eb5e9986e577b1e2bff3cca5973a2494fb593fbbArgyrios Kyrtzidis /// \brief a Decl::Kind/DeclID pair. 65eb5e9986e577b1e2bff3cca5973a2494fb593fbbArgyrios Kyrtzidis typedef std::pair<uint32_t, DeclID> KindDeclIDPair; 66eb5e9986e577b1e2bff3cca5973a2494fb593fbbArgyrios Kyrtzidis 67e6b8d68a927368b06ac06cc9ac9e7f60aa966d5fArgyrios Kyrtzidis // FIXME: Turn these into classes so we can have some type safety when 68e6b8d68a927368b06ac06cc9ac9e7f60aa966d5fArgyrios Kyrtzidis // we go from local ID to global and vice-versa. 69e6b8d68a927368b06ac06cc9ac9e7f60aa966d5fArgyrios Kyrtzidis typedef DeclID LocalDeclID; 70e6b8d68a927368b06ac06cc9ac9e7f60aa966d5fArgyrios Kyrtzidis typedef DeclID GlobalDeclID; 71e6b8d68a927368b06ac06cc9ac9e7f60aa966d5fArgyrios Kyrtzidis 72f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief An ID number that refers to a type in an AST file. 738038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// 748038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// The ID of a type is partitioned into two parts: the lower 758038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// three bits are used to store the const/volatile/restrict 768038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// qualifiers (as with QualType) and the upper bits provide a 778038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// type index. The type index values are partitioned into two 788038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// sets. The values below NUM_PREDEF_TYPE_IDs are predefined type 798038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// IDs (based on the PREDEF_TYPE_*_ID constants), with 0 as a 808038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// placeholder for "no type". Values from NUM_PREDEF_TYPE_IDs are 818038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// other types that have serialized representations. 828038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor typedef uint32_t TypeID; 832cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 84c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis /// \brief A type index; the type ID with the qualifier bits removed. 85c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis class TypeIdx { 86c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis uint32_t Idx; 87c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis public: 88c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis TypeIdx() : Idx(0) { } 89c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis explicit TypeIdx(uint32_t index) : Idx(index) { } 90c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis 91c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis uint32_t getIndex() const { return Idx; } 92c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis TypeID asTypeID(unsigned FastQuals) const { 93a119da0761cb6b85f53857eaee50f6ad8c5ea0a0Douglas Gregor if (Idx == uint32_t(-1)) 94a119da0761cb6b85f53857eaee50f6ad8c5ea0a0Douglas Gregor return TypeID(-1); 95a119da0761cb6b85f53857eaee50f6ad8c5ea0a0Douglas Gregor 96c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis return (Idx << Qualifiers::FastWidth) | FastQuals; 97c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis } 98c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis static TypeIdx fromTypeID(TypeID ID) { 99a119da0761cb6b85f53857eaee50f6ad8c5ea0a0Douglas Gregor if (ID == TypeID(-1)) 100a119da0761cb6b85f53857eaee50f6ad8c5ea0a0Douglas Gregor return TypeIdx(-1); 101a119da0761cb6b85f53857eaee50f6ad8c5ea0a0Douglas Gregor 102c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis return TypeIdx(ID >> Qualifiers::FastWidth); 103c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis } 104c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis }; 105c8e5d51f51e46c6f7717761537c6609ef9daf57cArgyrios Kyrtzidis 1065d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis /// A structure for putting "fast"-unqualified QualTypes into a 1075d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis /// DenseMap. This uses the standard pointer hash function. 1085d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis struct UnsafeQualTypeDenseMapInfo { 1095d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis static inline bool isEqual(QualType A, QualType B) { return A == B; } 1105d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis static inline QualType getEmptyKey() { 1115d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis return QualType::getFromOpaquePtr((void*) 1); 1125d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis } 1135d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis static inline QualType getTombstoneKey() { 1145d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis return QualType::getFromOpaquePtr((void*) 2); 1155d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis } 1165d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis static inline unsigned getHashValue(QualType T) { 1175d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis assert(!T.getLocalFastQualifiers() && 1185d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis "hash invalid for types with fast quals"); 1195d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis uintptr_t v = reinterpret_cast<uintptr_t>(T.getAsOpaquePtr()); 1205d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis return (unsigned(v) >> 4) ^ (unsigned(v) >> 9); 1215d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis } 1225d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis }; 1235d26768e2661faa7ce0b55ffff4be8b3969fbbf5Argyrios Kyrtzidis 124f73c93fea0d4b447585bc7459499ba6b822e045cSebastian Redl /// \brief An ID number that refers to an identifier in an AST file. 125afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor typedef uint32_t IdentID; 126afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor 1276ec60e00eeaaed78d98c85ce962d6f328094ca14Douglas Gregor /// \brief The number of predefined identifier IDs. 1286ec60e00eeaaed78d98c85ce962d6f328094ca14Douglas Gregor const unsigned int NUM_PREDEF_IDENT_IDS = 1; 1296ec60e00eeaaed78d98c85ce962d6f328094ca14Douglas Gregor 13026ced127b7d443fcf3472463c9f39c2376bd9d70Douglas Gregor /// \brief An ID number that refers to an ObjC selector in an AST file. 13190cd1bb1baac2a0221f3642de0cbea3244b116e5Steve Naroff typedef uint32_t SelectorID; 1321eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 133b18b1fd33f958264630fbae2602c81275bae8c9aDouglas Gregor /// \brief The number of predefined selector IDs. 134b18b1fd33f958264630fbae2602c81275bae8c9aDouglas Gregor const unsigned int NUM_PREDEF_SELECTOR_IDS = 1; 135b18b1fd33f958264630fbae2602c81275bae8c9aDouglas Gregor 1367c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor /// \brief An ID number that refers to a set of CXXBaseSpecifiers in an 1377c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor /// AST file. 1387c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor typedef uint32_t CXXBaseSpecifiersID; 1397c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor 14086c67d8802a9e0887c31c850188991465ac3c1bdDouglas Gregor /// \brief An ID number that refers to an entity in the detailed 14186c67d8802a9e0887c31c850188991465ac3c1bdDouglas Gregor /// preprocessing record. 14286c67d8802a9e0887c31c850188991465ac3c1bdDouglas Gregor typedef uint32_t PreprocessedEntityID; 143272b6bc6a6c8fc04f951ad850df68c44d137f513Douglas Gregor 14426ced127b7d443fcf3472463c9f39c2376bd9d70Douglas Gregor /// \brief An ID number that refers to a submodule in a module file. 14526ced127b7d443fcf3472463c9f39c2376bd9d70Douglas Gregor typedef uint32_t SubmoduleID; 14626ced127b7d443fcf3472463c9f39c2376bd9d70Douglas Gregor 14726ced127b7d443fcf3472463c9f39c2376bd9d70Douglas Gregor /// \brief The number of predefined submodule IDs. 14826ced127b7d443fcf3472463c9f39c2376bd9d70Douglas Gregor const unsigned int NUM_PREDEF_SUBMODULE_IDS = 1; 14926ced127b7d443fcf3472463c9f39c2376bd9d70Douglas Gregor 1502dbaca748bc3eb6539f417bd8354c930bdf88fa4Argyrios Kyrtzidis /// \brief Source range/offset of a preprocessed entity. 1512dbaca748bc3eb6539f417bd8354c930bdf88fa4Argyrios Kyrtzidis struct PPEntityOffset { 1522dbaca748bc3eb6539f417bd8354c930bdf88fa4Argyrios Kyrtzidis /// \brief Raw source location of beginning of range. 1532dbaca748bc3eb6539f417bd8354c930bdf88fa4Argyrios Kyrtzidis unsigned Begin; 1542dbaca748bc3eb6539f417bd8354c930bdf88fa4Argyrios Kyrtzidis /// \brief Raw source location of end of range. 1552dbaca748bc3eb6539f417bd8354c930bdf88fa4Argyrios Kyrtzidis unsigned End; 1562dbaca748bc3eb6539f417bd8354c930bdf88fa4Argyrios Kyrtzidis /// \brief Offset in the AST file. 1572dbaca748bc3eb6539f417bd8354c930bdf88fa4Argyrios Kyrtzidis uint32_t BitOffset; 1582dbaca748bc3eb6539f417bd8354c930bdf88fa4Argyrios Kyrtzidis 1592dbaca748bc3eb6539f417bd8354c930bdf88fa4Argyrios Kyrtzidis PPEntityOffset(SourceRange R, uint32_t BitOffset) 1602dbaca748bc3eb6539f417bd8354c930bdf88fa4Argyrios Kyrtzidis : Begin(R.getBegin().getRawEncoding()), 1612dbaca748bc3eb6539f417bd8354c930bdf88fa4Argyrios Kyrtzidis End(R.getEnd().getRawEncoding()), 1622dbaca748bc3eb6539f417bd8354c930bdf88fa4Argyrios Kyrtzidis BitOffset(BitOffset) { } 1632dbaca748bc3eb6539f417bd8354c930bdf88fa4Argyrios Kyrtzidis }; 1642dbaca748bc3eb6539f417bd8354c930bdf88fa4Argyrios Kyrtzidis 1659d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis /// \brief Source range/offset of a preprocessed entity. 1669d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis struct DeclOffset { 1679d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis /// \brief Raw source location. 1689d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis unsigned Loc; 1699d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis /// \brief Offset in the AST file. 1709d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis uint32_t BitOffset; 1719d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis 1729d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis DeclOffset() : Loc(0), BitOffset(0) { } 1739d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis DeclOffset(SourceLocation Loc, uint32_t BitOffset) 1749d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis : Loc(Loc.getRawEncoding()), 1759d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis BitOffset(BitOffset) { } 1769d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis void setLocation(SourceLocation L) { 1779d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis Loc = L.getRawEncoding(); 1789d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis } 1799d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis }; 1809d31fa75bc05fe4cb903a7701550f22cfb73ea8bArgyrios Kyrtzidis 181272b6bc6a6c8fc04f951ad850df68c44d137f513Douglas Gregor /// \brief The number of predefined preprocessed entity IDs. 182272b6bc6a6c8fc04f951ad850df68c44d137f513Douglas Gregor const unsigned int NUM_PREDEF_PP_ENTITY_IDS = 1; 183272b6bc6a6c8fc04f951ad850df68c44d137f513Douglas Gregor 1842cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief Describes the various kinds of blocks that occur within 185f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// an AST file. 1862cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor enum BlockIDs { 187f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief The AST block, which acts as a container around the 188f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// full AST block. 189f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl AST_BLOCK_ID = llvm::bitc::FIRST_APPLICATION_BLOCKID, 19014f79002e58556798e86168c63e48d533287eda5Douglas Gregor 19114f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief The block containing information about the source 19214f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// manager. 19314f79002e58556798e86168c63e48d533287eda5Douglas Gregor SOURCE_MANAGER_BLOCK_ID, 19414f79002e58556798e86168c63e48d533287eda5Douglas Gregor 19514f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief The block containing information about the 19614f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// preprocessor. 19714f79002e58556798e86168c63e48d533287eda5Douglas Gregor PREPROCESSOR_BLOCK_ID, 19814f79002e58556798e86168c63e48d533287eda5Douglas Gregor 1992cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The block containing the definitions of all of the 200f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// types and decls used within the AST file. 2017b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis DECLTYPES_BLOCK_ID, 2027b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis 2037b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis /// \brief The block containing DECL_UPDATES records. 2044800a5c79023271408af49797e09be32aca93232Douglas Gregor DECL_UPDATES_BLOCK_ID, 2054800a5c79023271408af49797e09be32aca93232Douglas Gregor 2064800a5c79023271408af49797e09be32aca93232Douglas Gregor /// \brief The block containing the detailed preprocessing record. 207392ed2b717d86ebdd202cb9bb58d18d8b3b4cd87Douglas Gregor PREPROCESSOR_DETAIL_BLOCK_ID, 208392ed2b717d86ebdd202cb9bb58d18d8b3b4cd87Douglas Gregor 209392ed2b717d86ebdd202cb9bb58d18d8b3b4cd87Douglas Gregor /// \brief The block containing the submodule structure. 210392ed2b717d86ebdd202cb9bb58d18d8b3b4cd87Douglas Gregor SUBMODULE_BLOCK_ID 2118038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor }; 2122cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 213f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief Record types that occur within the AST block itself. 214f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl enum ASTRecordTypes { 21561d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// \brief Record code for the offsets of each type. 2162cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 2178038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// The TYPE_OFFSET constant describes the record that occurs 218f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// within the AST block. The record itself is an array of offsets that 21961d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// point into the declarations and types block (identified by 22061d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// DECLTYPES_BLOCK_ID). The index into the array is based on the ID 2218038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// of a type. For a given type ID @c T, the lower three bits of 2228038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// @c T are its qualifiers (const, volatile, restrict), as in 2238038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// the QualType class. The upper bits, after being shifted and 2248038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// subtracting NUM_PREDEF_TYPE_IDS, are used to index into the 2258038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// TYPE_OFFSET block to determine the offset of that type's 22661d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// corresponding record within the DECLTYPES_BLOCK_ID block. 2278038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor TYPE_OFFSET = 1, 2281eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 2298038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// \brief Record code for the offsets of each decl. 2308038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// 2318038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// The DECL_OFFSET constant describes the record that occurs 23261d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// within the block identified by DECL_OFFSETS_BLOCK_ID within 233f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// the AST block. The record itself is an array of offsets that 23461d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// point into the declarations and types block (identified by 23561d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// DECLTYPES_BLOCK_ID). The declaration ID is an index into this 2368038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// record, after subtracting one to account for the use of 2378038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// declaration ID 0 for a NULL declaration pointer. Index 0 is 2388038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// reserved for the translation unit declaration. 2390a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor DECL_OFFSET = 2, 2400a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor 2410a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// \brief Record code for the language options table. 2420a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// 2430a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// The record with this code contains the contents of the 2440a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// LangOptions structure. We serialize the entire contents of 2450a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// the structure, and let the reader decide which options are 2460a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// actually important to check. 2472bec0410d268779f601bd509e0302a500af7ac6aDouglas Gregor LANGUAGE_OPTIONS = 3, 2482bec0410d268779f601bd509e0302a500af7ac6aDouglas Gregor 249f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief AST file metadata, including the AST file version number 250f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// and the target triple used to build the AST file. 251ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor METADATA = 4, 252afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor 253afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// \brief Record code for the table of offsets of each 254afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// identifier ID. 255afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// 256afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// The offset table contains offsets into the blob stored in 257afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// the IDENTIFIER_TABLE record. Each offset points to the 258afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// NULL-terminated string that corresponds to that identifier. 259afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor IDENTIFIER_OFFSET = 5, 260afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor 261afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// \brief Record code for the identifier table. 262afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// 263afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// The identifier table is a simple blob that contains 264afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// NULL-terminated strings for all of the identifiers 265f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// referenced by the AST file. The IDENTIFIER_OFFSET table 266afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// contains the mapping from identifier IDs to the characters 267afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// in this blob. Note that the starting offsets of all of the 268afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// identifiers are odd, so that, when the identifier offset 269afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// table is loaded in, we can use the low bit to distinguish 270afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// between offsets (for unresolved identifier IDs) and 271afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// IdentifierInfo pointers (for already-resolved identifier 272afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// IDs). 273fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor IDENTIFIER_TABLE = 6, 274fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor 275fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// \brief Record code for the array of external definitions. 276fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// 277f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// The AST file contains a list of all of the unnamed external 278fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// definitions present within the parsed headers, stored as an 279fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// array of declaration IDs. These external definitions will be 280f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// reported to the AST consumer after the AST file has been 281fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// read, since their presence can affect the semantics of the 282fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// program (e.g., for code generation). 2833e1af84bb0092a1aafb49deaa4ab6664c9a9071bDouglas Gregor EXTERNAL_DEFINITIONS = 7, 2843e1af84bb0092a1aafb49deaa4ab6664c9a9071bDouglas Gregor 285ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// \brief Record code for the set of non-builtin, special 286ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// types. 287ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// 288ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// This record contains the type IDs for the various type nodes 289ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// that are constructed during semantic analysis (e.g., 290ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// __builtin_va_list). The SPECIAL_TYPE_* constants provide 291ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// offsets into this record. 292ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor SPECIAL_TYPES = 8, 293ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor 2944c0e86b392c5fb0cb771551fc877edb6979be69cDouglas Gregor /// \brief Record code for the extra statistics we gather while 295f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// generating an AST file. 2964c0e86b392c5fb0cb771551fc877edb6979be69cDouglas Gregor STATISTICS = 9, 2974c0e86b392c5fb0cb771551fc877edb6979be69cDouglas Gregor 2984c0e86b392c5fb0cb771551fc877edb6979be69cDouglas Gregor /// \brief Record code for the array of tentative definitions. 29914c22f20c077cecd68581952a0c227f8c180be03Douglas Gregor TENTATIVE_DEFINITIONS = 10, 30014c22f20c077cecd68581952a0c227f8c180be03Douglas Gregor 30114c22f20c077cecd68581952a0c227f8c180be03Douglas Gregor /// \brief Record code for the array of locally-scoped external 30214c22f20c077cecd68581952a0c227f8c180be03Douglas Gregor /// declarations. 30390cd1bb1baac2a0221f3642de0cbea3244b116e5Steve Naroff LOCALLY_SCOPED_EXTERNAL_DECLS = 11, 3041eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 30583941df2745d69c05acee3174c7a265c206f70d9Douglas Gregor /// \brief Record code for the table of offsets into the 30683941df2745d69c05acee3174c7a265c206f70d9Douglas Gregor /// Objective-C method pool. 30783941df2745d69c05acee3174c7a265c206f70d9Douglas Gregor SELECTOR_OFFSETS = 12, 308f0aaf7a59729a4ae0146e3464ee987745be95829Douglas Gregor 309f0aaf7a59729a4ae0146e3464ee987745be95829Douglas Gregor /// \brief Record code for the Objective-C method pool, 3102eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor METHOD_POOL = 13, 3112eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor 3122eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor /// \brief The value of the next __COUNTER__ to dispense. 3132eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor /// [PP_COUNTER_VALUE, Val] 3147f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor PP_COUNTER_VALUE = 14, 3157f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor 3167f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// \brief Record code for the table of offsets into the block 3177f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// of source-location information. 3187f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor SOURCE_LOCATION_OFFSETS = 15, 3197f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor 3207f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// \brief Record code for the set of source location entries 321f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// that need to be preloaded by the AST reader. 3227f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// 3237f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// This set contains the source location entry for the 3247f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// predefines buffer and for any file entries that need to be 3257f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// preloaded. 3264fed3f47f6b9e31d603c5c2d1f6d8ec2e1241e57Douglas Gregor SOURCE_LOCATION_PRELOADS = 16, 3274fed3f47f6b9e31d603c5c2d1f6d8ec2e1241e57Douglas Gregor 3284fed3f47f6b9e31d603c5c2d1f6d8ec2e1241e57Douglas Gregor /// \brief Record code for the stat() cache. 329b81c17092039f39be60e9656a37cffbdf2e2c783Douglas Gregor STAT_CACHE = 17, 330b81c17092039f39be60e9656a37cffbdf2e2c783Douglas Gregor 331b81c17092039f39be60e9656a37cffbdf2e2c783Douglas Gregor /// \brief Record code for the set of ext_vector type names. 332b81c17092039f39be60e9656a37cffbdf2e2c783Douglas Gregor EXT_VECTOR_DECLS = 18, 333b81c17092039f39be60e9656a37cffbdf2e2c783Douglas Gregor 334b64c19365deab788753d29c9bc881253c3f16f37Douglas Gregor /// \brief Record code for the original file that was used to 335f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// generate the AST file. 3361cb35dd4840d21cec58648361180d5688446a9caArgyrios Kyrtzidis ORIGINAL_FILE_NAME = 19, 3371eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 33831d375f056447d4e2418275d4913661d3bfedb3eDouglas Gregor /// \brief Record code for the file ID of the original file used to 33931d375f056447d4e2418275d4913661d3bfedb3eDouglas Gregor /// generate the AST file. 34031d375f056447d4e2418275d4913661d3bfedb3eDouglas Gregor ORIGINAL_FILE_ID = 20, 341445e23e9b909ec8e21303c7dd82c90b72fc09ac4Douglas Gregor 3425b4ec636637c9d876102240127cc0dca9280e83aTed Kremenek /// \brief Record code for the version control branch and revision 343f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// information of the compiler used to build this AST file. 344e6bbc01d1c4ec5241df36042e0a4a12a6711934bTanya Lattner VERSION_CONTROL_BRANCH_REVISION = 21, 345e6bbc01d1c4ec5241df36042e0a4a12a6711934bTanya Lattner 34649b96d1a382ae9f31456166f1a734d3f7f30b992Argyrios Kyrtzidis /// \brief Record code for the array of unused file scoped decls. 34749b96d1a382ae9f31456166f1a734d3f7f30b992Argyrios Kyrtzidis UNUSED_FILESCOPED_DECLS = 22, 348e6bbc01d1c4ec5241df36042e0a4a12a6711934bTanya Lattner 349e24692b30adbe8144597678a0e3354912e99c747Argyrios Kyrtzidis /// \brief Record code for the table of offsets to entries in the 350e24692b30adbe8144597678a0e3354912e99c747Argyrios Kyrtzidis /// preprocessing record. 351e24692b30adbe8144597678a0e3354912e99c747Argyrios Kyrtzidis PPD_ENTITIES_OFFSETS = 23, 352d455add086f1dfa16ae87dc310e49493bbc2b0a6Argyrios Kyrtzidis 353d455add086f1dfa16ae87dc310e49493bbc2b0a6Argyrios Kyrtzidis /// \brief Record code for the array of VTable uses. 354d455add086f1dfa16ae87dc310e49493bbc2b0a6Argyrios Kyrtzidis VTABLE_USES = 24, 355d455add086f1dfa16ae87dc310e49493bbc2b0a6Argyrios Kyrtzidis 356d455add086f1dfa16ae87dc310e49493bbc2b0a6Argyrios Kyrtzidis /// \brief Record code for the array of dynamic classes. 357a93e3b5bde9f0a7b59215f19f176f7d69881b81cSebastian Redl DYNAMIC_CLASSES = 25, 358a93e3b5bde9f0a7b59215f19f176f7d69881b81cSebastian Redl 359e95b9198b8b70ce0219cfb89483b41102e02dbf5Douglas Gregor /// \brief Record code for the list of other AST files imported by 360e95b9198b8b70ce0219cfb89483b41102e02dbf5Douglas Gregor /// this AST file. 361e95b9198b8b70ce0219cfb89483b41102e02dbf5Douglas Gregor IMPORTS = 26, 362d692af71226d2fb537d86c670af96114ddd485c3Sebastian Redl 363681d7237e1014bf64dd5ead6bf74ae55cdd19e61Sebastian Redl /// \brief Record code for referenced selector pool. 364d692af71226d2fb537d86c670af96114ddd485c3Sebastian Redl REFERENCED_SELECTOR_POOL = 27, 365d692af71226d2fb537d86c670af96114ddd485c3Sebastian Redl 366d692af71226d2fb537d86c670af96114ddd485c3Sebastian Redl /// \brief Record code for an update to the TU's lexically contained 367d692af71226d2fb537d86c670af96114ddd485c3Sebastian Redl /// declarations. 36876c38d385447b7acdff2d7e6b13fa8580e7174a7Argyrios Kyrtzidis TU_UPDATE_LEXICAL = 28, 369a126651270acf17c434f60f86a3ab3687f87813aDouglas Gregor 3702171bf1caba4d4b9eeb6a91efac4300b41f38b07Douglas Gregor /// \brief Record code for the array describing the locations (in the 3712171bf1caba4d4b9eeb6a91efac4300b41f38b07Douglas Gregor /// LOCAL_REDECLARATIONS record) of the redeclaration chains, indexed by 3722171bf1caba4d4b9eeb6a91efac4300b41f38b07Douglas Gregor /// the first known ID. 3732171bf1caba4d4b9eeb6a91efac4300b41f38b07Douglas Gregor LOCAL_REDECLARATIONS_MAP = 29, 374a865005c74019184e04f7fcdd4d61c31c095a4ffArgyrios Kyrtzidis 37576c38d385447b7acdff2d7e6b13fa8580e7174a7Argyrios Kyrtzidis /// \brief Record code for declarations that Sema keeps references of. 37672b90571b1783b17c3f2204cec5ca440edc38beeArgyrios Kyrtzidis SEMA_DECL_REFS = 30, 37772b90571b1783b17c3f2204cec5ca440edc38beeArgyrios Kyrtzidis 37872b90571b1783b17c3f2204cec5ca440edc38beeArgyrios Kyrtzidis /// \brief Record code for weak undeclared identifiers. 3790e0363866792b309d70e9c8e92b4c239773af89cArgyrios Kyrtzidis WEAK_UNDECLARED_IDENTIFIERS = 31, 3800e0363866792b309d70e9c8e92b4c239773af89cArgyrios Kyrtzidis 3810e0363866792b309d70e9c8e92b4c239773af89cArgyrios Kyrtzidis /// \brief Record code for pending implicit instantiations. 3820b17c61e8f143901ce11b4a6e5129ac63aaeee04Sebastian Redl PENDING_IMPLICIT_INSTANTIATIONS = 32, 3830b17c61e8f143901ce11b4a6e5129ac63aaeee04Sebastian Redl 3840b17c61e8f143901ce11b4a6e5129ac63aaeee04Sebastian Redl /// \brief Record code for a decl replacement block. 3850b17c61e8f143901ce11b4a6e5129ac63aaeee04Sebastian Redl /// 3860b17c61e8f143901ce11b4a6e5129ac63aaeee04Sebastian Redl /// If a declaration is modified after having been deserialized, and then 387f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// written to a dependent AST file, its ID and offset must be added to 3880b17c61e8f143901ce11b4a6e5129ac63aaeee04Sebastian Redl /// the replacement block. 3898b12273c86ede439edf52d35b170fd32b2ed49d4Sebastian Redl DECL_REPLACEMENTS = 33, 3908b12273c86ede439edf52d35b170fd32b2ed49d4Sebastian Redl 3918b12273c86ede439edf52d35b170fd32b2ed49d4Sebastian Redl /// \brief Record code for an update to a decl context's lookup table. 3928b12273c86ede439edf52d35b170fd32b2ed49d4Sebastian Redl /// 3938b12273c86ede439edf52d35b170fd32b2ed49d4Sebastian Redl /// In practice, this should only be used for the TU and namespaces. 3946e50e00c2fe6a04b2c35592588a4b10a2c269416Sebastian Redl UPDATE_VISIBLE = 34, 3956e50e00c2fe6a04b2c35592588a4b10a2c269416Sebastian Redl 3967b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis /// \brief Record for offsets of DECL_UPDATES records for declarations 3977b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis /// that were modified after being deserialized and need updates. 398bef1a7b9c175d37e4a727e6ce68bd05232fa6970Argyrios Kyrtzidis DECL_UPDATE_OFFSETS = 35, 3997b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis 4007b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis /// \brief Record of updates for a declaration that was modified after 4017b90340c9c7d07aef4e301e72b5e8a30d5f4f0c8Argyrios Kyrtzidis /// being deserialized. 4027c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor DECL_UPDATES = 36, 4037c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor 4047c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor /// \brief Record code for the table of offsets to CXXBaseSpecifier 4057c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor /// sets. 406f41d3be39980d40849850d3fb90403623cc8459eArgyrios Kyrtzidis CXX_BASE_SPECIFIER_OFFSETS = 37, 407f41d3be39980d40849850d3fb90403623cc8459eArgyrios Kyrtzidis 4083efd52cf8f4e57c5571bd8cc3168264c3bc46a1eArgyrios Kyrtzidis /// \brief Record code for #pragma diagnostic mappings. 40914b6ba77710d6431794d65c7d58c6f29c3dc956ePeter Collingbourne DIAG_PRAGMA_MAPPINGS = 38, 41014b6ba77710d6431794d65c7d58c6f29c3dc956ePeter Collingbourne 41114b6ba77710d6431794d65c7d58c6f29c3dc956ePeter Collingbourne /// \brief Record code for special CUDA declarations. 412cfbf1c7536e016dc275139dd842d4a5f059a749fDouglas Gregor CUDA_SPECIAL_DECL_REFS = 39, 413cfbf1c7536e016dc275139dd842d4a5f059a749fDouglas Gregor 414cfbf1c7536e016dc275139dd842d4a5f059a749fDouglas Gregor /// \brief Record code for header search information. 4158e3df4d0864f0a966c20088ca1a29c3398b7639dArgyrios Kyrtzidis HEADER_SEARCH_TABLE = 40, 4168e3df4d0864f0a966c20088ca1a29c3398b7639dArgyrios Kyrtzidis 4178e3df4d0864f0a966c20088ca1a29c3398b7639dArgyrios Kyrtzidis /// \brief The directory that the PCH was originally created in. 41884bccea1ad9fd8bc1f4ec3d1fc5dd8d15dabffbcPeter Collingbourne ORIGINAL_PCH_DIR = 41, 41984bccea1ad9fd8bc1f4ec3d1fc5dd8d15dabffbcPeter Collingbourne 42084bccea1ad9fd8bc1f4ec3d1fc5dd8d15dabffbcPeter Collingbourne /// \brief Record code for floating point #pragma options. 42184bccea1ad9fd8bc1f4ec3d1fc5dd8d15dabffbcPeter Collingbourne FP_PRAGMA_OPTIONS = 42, 42284bccea1ad9fd8bc1f4ec3d1fc5dd8d15dabffbcPeter Collingbourne 42384bccea1ad9fd8bc1f4ec3d1fc5dd8d15dabffbcPeter Collingbourne /// \brief Record code for enabled OpenCL extensions. 424ebcbe1d3dc7d4f0c1f540a632fa0684dd0a857d5Sean Hunt OPENCL_EXTENSIONS = 43, 425ebcbe1d3dc7d4f0c1f540a632fa0684dd0a857d5Sean Hunt 426ebcbe1d3dc7d4f0c1f540a632fa0684dd0a857d5Sean Hunt /// \brief The list of delegating constructor declarations. 4274cdb0e2a2e9d93805e5ceaf8bc7018bdd166aec1Argyrios Kyrtzidis DELEGATING_CTORS = 44, 4284cdb0e2a2e9d93805e5ceaf8bc7018bdd166aec1Argyrios Kyrtzidis 4294cdb0e2a2e9d93805e5ceaf8bc7018bdd166aec1Argyrios Kyrtzidis /// \brief Record code for the table of offsets into the block 4304cdb0e2a2e9d93805e5ceaf8bc7018bdd166aec1Argyrios Kyrtzidis /// of file source-location information. 431d8bba9c15230d2b1b3893e272106aa79efc50251Douglas Gregor FILE_SOURCE_LOCATION_OFFSETS = 45, 432d8bba9c15230d2b1b3893e272106aa79efc50251Douglas Gregor 433d8bba9c15230d2b1b3893e272106aa79efc50251Douglas Gregor /// \brief Record code for the set of known namespaces, which are used 434d8bba9c15230d2b1b3893e272106aa79efc50251Douglas Gregor /// for typo correction. 435f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor KNOWN_NAMESPACES = 46, 4364cdb0e2a2e9d93805e5ceaf8bc7018bdd166aec1Argyrios Kyrtzidis 4375d51a1d22d862dfae44eaa098af4e09bbfebae72Douglas Gregor /// \brief Record code for the remapping information used to relate 4385d51a1d22d862dfae44eaa098af4e09bbfebae72Douglas Gregor /// loaded modules to the various offsets and IDs(e.g., source location 4395d51a1d22d862dfae44eaa098af4e09bbfebae72Douglas Gregor /// offests, declaration and type IDs) that are used in that module to 4405d51a1d22d862dfae44eaa098af4e09bbfebae72Douglas Gregor /// refer to other modules. 4415d51a1d22d862dfae44eaa098af4e09bbfebae72Douglas Gregor MODULE_OFFSET_MAP = 47, 442f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor 443f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor /// \brief Record code for the source manager line table information, 444f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor /// which stores information about #line directives. 445e6b8d68a927368b06ac06cc9ac9e7f60aa966d5fArgyrios Kyrtzidis SOURCE_MANAGER_LINE_TABLE = 48, 446e6b8d68a927368b06ac06cc9ac9e7f60aa966d5fArgyrios Kyrtzidis 447cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor /// \brief Record code for map of Objective-C class definition IDs to the 448cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor /// ObjC categories in a module that are attached to that class. 449cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor OBJC_CATEGORIES_MAP = 49, 45010f3df54486385e6497c9e5f229ff816e5a6c511Argyrios Kyrtzidis 45110f3df54486385e6497c9e5f229ff816e5a6c511Argyrios Kyrtzidis /// \brief Record code for a file sorted array of DeclIDs in a module. 452a126651270acf17c434f60f86a3ab3687f87813aDouglas Gregor FILE_SORTED_DECLS = 50, 453f6137e4d15cb6bbd10547267babfc699c1945873Douglas Gregor 454f6137e4d15cb6bbd10547267babfc699c1945873Douglas Gregor /// \brief Record code for an array of all of the (sub)modules that were 455f6137e4d15cb6bbd10547267babfc699c1945873Douglas Gregor /// imported by the AST file. 456c3cfd2ab3338d47861ece597212f21b972ebe727Douglas Gregor IMPORTED_MODULES = 51, 457c3cfd2ab3338d47861ece597212f21b972ebe727Douglas Gregor 458c3cfd2ab3338d47861ece597212f21b972ebe727Douglas Gregor /// \brief Record code for the set of merged declarations in an AST file. 4592171bf1caba4d4b9eeb6a91efac4300b41f38b07Douglas Gregor MERGED_DECLARATIONS = 52, 4602171bf1caba4d4b9eeb6a91efac4300b41f38b07Douglas Gregor 4612171bf1caba4d4b9eeb6a91efac4300b41f38b07Douglas Gregor /// \brief Record code for the array of redeclaration chains. 4622171bf1caba4d4b9eeb6a91efac4300b41f38b07Douglas Gregor /// 4632171bf1caba4d4b9eeb6a91efac4300b41f38b07Douglas Gregor /// This array can only be interpreted properly using the local 4642171bf1caba4d4b9eeb6a91efac4300b41f38b07Douglas Gregor /// redeclarations map. 465cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor LOCAL_REDECLARATIONS = 53, 466cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor 467cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor /// \brief Record code for the array of Objective-C categories (including 468cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor /// extensions). 469cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor /// 470cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor /// This array can only be interpreted properly using the Objective-C 471cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor /// categories map. 472cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor OBJC_CATEGORIES 4732cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor }; 4742cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 47514f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief Record types used within a source manager block. 47614f79002e58556798e86168c63e48d533287eda5Douglas Gregor enum SourceManagerRecordTypes { 47714f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief Describes a source location entry (SLocEntry) for a 47814f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// file. 47914f79002e58556798e86168c63e48d533287eda5Douglas Gregor SM_SLOC_FILE_ENTRY = 1, 48014f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief Describes a source location entry (SLocEntry) for a 48114f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// buffer. 48214f79002e58556798e86168c63e48d533287eda5Douglas Gregor SM_SLOC_BUFFER_ENTRY = 2, 48314f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief Describes a blob that contains the data for a buffer 48414f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// entry. This kind of record always directly follows a 485a081da5e44600d02983d6562bed1b4fd61e410fdDouglas Gregor /// SM_SLOC_BUFFER_ENTRY record or a SM_SLOC_FILE_ENTRY with an 486a081da5e44600d02983d6562bed1b4fd61e410fdDouglas Gregor /// overridden buffer. 48714f79002e58556798e86168c63e48d533287eda5Douglas Gregor SM_SLOC_BUFFER_BLOB = 3, 48814f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief Describes a source location entry (SLocEntry) for a 489f70d12dbd49fcc25f1dfc0127217112ae76bcb8fChandler Carruth /// macro expansion. 490f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor SM_SLOC_EXPANSION_ENTRY = 4 49114f79002e58556798e86168c63e48d533287eda5Douglas Gregor }; 4921eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 4937c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// \brief Record types used within a preprocessor block. 4947c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner enum PreprocessorRecordTypes { 4957c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner // The macros in the PP section are a PP_MACRO_* instance followed by a 4967c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner // list of PP_TOKEN instances for each token in the definition. 4977c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner 4987c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// \brief An object-like macro definition. 4997c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// [PP_MACRO_OBJECT_LIKE, IdentInfoID, SLoc, IsUsed] 5007c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner PP_MACRO_OBJECT_LIKE = 1, 5017c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner 5027c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// \brief A function-like macro definition. 5037c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// [PP_MACRO_FUNCTION_LIKE, <ObjectLikeStuff>, IsC99Varargs, IsGNUVarars, 5047c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// NumArgs, ArgIdentInfoID* ] 5057c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner PP_MACRO_FUNCTION_LIKE = 2, 5061eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 5077c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// \brief Describes one token. 508c1f9d828c733ec1eba06d01070735d1f36fda733Chris Lattner /// [PP_TOKEN, SLoc, Length, IdentInfoID, Kind, Flags] 5094800a5c79023271408af49797e09be32aca93232Douglas Gregor PP_TOKEN = 3 5104800a5c79023271408af49797e09be32aca93232Douglas Gregor }; 5116a5a23f8e7fb65e028c8092bc1d1a1d9dfe2e9bcDouglas Gregor 5124800a5c79023271408af49797e09be32aca93232Douglas Gregor /// \brief Record types used within a preprocessor detail block. 5134800a5c79023271408af49797e09be32aca93232Douglas Gregor enum PreprocessorDetailRecordTypes { 514f70d12dbd49fcc25f1dfc0127217112ae76bcb8fChandler Carruth /// \brief Describes a macro expansion within the preprocessing record. 515f70d12dbd49fcc25f1dfc0127217112ae76bcb8fChandler Carruth PPD_MACRO_EXPANSION = 0, 5166a5a23f8e7fb65e028c8092bc1d1a1d9dfe2e9bcDouglas Gregor 5176a5a23f8e7fb65e028c8092bc1d1a1d9dfe2e9bcDouglas Gregor /// \brief Describes a macro definition within the preprocessing record. 5184800a5c79023271408af49797e09be32aca93232Douglas Gregor PPD_MACRO_DEFINITION = 1, 519ecdcb883cbc6bb4a2445dc6f02d58d9bdb54a0edDouglas Gregor 5204800a5c79023271408af49797e09be32aca93232Douglas Gregor /// \brief Describes an inclusion directive within the preprocessing 521ecdcb883cbc6bb4a2445dc6f02d58d9bdb54a0edDouglas Gregor /// record. 5224800a5c79023271408af49797e09be32aca93232Douglas Gregor PPD_INCLUSION_DIRECTIVE = 2 5237c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner }; 5244800a5c79023271408af49797e09be32aca93232Douglas Gregor 525392ed2b717d86ebdd202cb9bb58d18d8b3b4cd87Douglas Gregor /// \brief Record types used within a submodule description block. 526392ed2b717d86ebdd202cb9bb58d18d8b3b4cd87Douglas Gregor enum SubmoduleRecordTypes { 52777d029f6a24dbf70d97e61757945df53fb250ea0Douglas Gregor /// \brief Metadata for submodules as a whole. 52877d029f6a24dbf70d97e61757945df53fb250ea0Douglas Gregor SUBMODULE_METADATA = 0, 529392ed2b717d86ebdd202cb9bb58d18d8b3b4cd87Douglas Gregor /// \brief Defines the major attributes of a submodule, including its 530392ed2b717d86ebdd202cb9bb58d18d8b3b4cd87Douglas Gregor /// name and parent. 53177d029f6a24dbf70d97e61757945df53fb250ea0Douglas Gregor SUBMODULE_DEFINITION = 1, 532392ed2b717d86ebdd202cb9bb58d18d8b3b4cd87Douglas Gregor /// \brief Specifies the umbrella header used to create this module, 533392ed2b717d86ebdd202cb9bb58d18d8b3b4cd87Douglas Gregor /// if any. 53477d029f6a24dbf70d97e61757945df53fb250ea0Douglas Gregor SUBMODULE_UMBRELLA_HEADER = 2, 535392ed2b717d86ebdd202cb9bb58d18d8b3b4cd87Douglas Gregor /// \brief Specifies a header that falls into this (sub)module. 53677d029f6a24dbf70d97e61757945df53fb250ea0Douglas Gregor SUBMODULE_HEADER = 3, 53777d029f6a24dbf70d97e61757945df53fb250ea0Douglas Gregor /// \brief Specifies an umbrella directory. 53877d029f6a24dbf70d97e61757945df53fb250ea0Douglas Gregor SUBMODULE_UMBRELLA_DIR = 4, 53955988680ece66b8e505ee136b35e74fcb1173aeeDouglas Gregor /// \brief Specifies the submodules that are imported by this 54055988680ece66b8e505ee136b35e74fcb1173aeeDouglas Gregor /// submodule. 54177d029f6a24dbf70d97e61757945df53fb250ea0Douglas Gregor SUBMODULE_IMPORTS = 5, 542af13bfc3b40aa4a46f4e71d200ecfb10f45297fcDouglas Gregor /// \brief Specifies the submodules that are re-exported from this 543af13bfc3b40aa4a46f4e71d200ecfb10f45297fcDouglas Gregor /// submodule. 54451f564f80d9f71e175635b452ffeeeff899e9bf1Douglas Gregor SUBMODULE_EXPORTS = 6, 54551f564f80d9f71e175635b452ffeeeff899e9bf1Douglas Gregor /// \brief Specifies a required feature. 54651f564f80d9f71e175635b452ffeeeff899e9bf1Douglas Gregor SUBMODULE_REQUIRES = 7 547392ed2b717d86ebdd202cb9bb58d18d8b3b4cd87Douglas Gregor }; 548392ed2b717d86ebdd202cb9bb58d18d8b3b4cd87Douglas Gregor 549f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \defgroup ASTAST AST file AST constants 55014f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// 55114f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// The constants in this group describe various components of the 552f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// abstract syntax tree within an AST file. 55314f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// 55414f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// @{ 55514f79002e58556798e86168c63e48d533287eda5Douglas Gregor 5562cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief Predefined type IDs. 5572cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 5582cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// These type IDs correspond to predefined types in the AST 5592cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// context, such as built-in types (int) and special place-holder 5602cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// types (the <overload> and <dependent> type markers). Such 5612cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// types are never actually serialized, since they will be built 5622cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// by the AST context when it is created. 5632cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor enum PredefinedTypeIDs { 5642cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The NULL type. 5652cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_NULL_ID = 0, 5662cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The void type. 5672cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_VOID_ID = 1, 5682cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'bool' or '_Bool' type. 5692cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_BOOL_ID = 2, 5702cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'char' type, when it is unsigned. 5712cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_CHAR_U_ID = 3, 5722cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'unsigned char' type. 5732cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_UCHAR_ID = 4, 5742cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'unsigned short' type. 5752cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_USHORT_ID = 5, 5762cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'unsigned int' type. 5772cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_UINT_ID = 6, 5782cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'unsigned long' type. 5792cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_ULONG_ID = 7, 5802cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'unsigned long long' type. 5812cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_ULONGLONG_ID = 8, 5822cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'char' type, when it is signed. 5832cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_CHAR_S_ID = 9, 5842cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'signed char' type. 5852cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_SCHAR_ID = 10, 5862cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The C++ 'wchar_t' type. 5872cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_WCHAR_ID = 11, 5882cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The (signed) 'short' type. 5892cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_SHORT_ID = 12, 5902cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The (signed) 'int' type. 5912cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_INT_ID = 13, 5922cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The (signed) 'long' type. 5932cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_LONG_ID = 14, 5942cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The (signed) 'long long' type. 5952cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_LONGLONG_ID = 15, 5962cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'float' type. 5972cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_FLOAT_ID = 16, 5982cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'double' type. 5992cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_DOUBLE_ID = 17, 6002cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'long double' type. 6012cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_LONGDOUBLE_ID = 18, 6022cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The placeholder type for overloaded function sets. 6032cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_OVERLOAD_ID = 19, 6042cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The placeholder type for dependent types. 6052df9ced9fd1e8c7d7b38443db07e0e811de22571Chris Lattner PREDEF_TYPE_DEPENDENT_ID = 20, 6062df9ced9fd1e8c7d7b38443db07e0e811de22571Chris Lattner /// \brief The '__uint128_t' type. 6072df9ced9fd1e8c7d7b38443db07e0e811de22571Chris Lattner PREDEF_TYPE_UINT128_ID = 21, 6082df9ced9fd1e8c7d7b38443db07e0e811de22571Chris Lattner /// \brief The '__int128_t' type. 6096e8ed16ffef02b82995a90bdcf10ffff7d63839aSebastian Redl PREDEF_TYPE_INT128_ID = 22, 6106e8ed16ffef02b82995a90bdcf10ffff7d63839aSebastian Redl /// \brief The type of 'nullptr'. 611f5c209d23b20ada4a9b6235db50317239cbf6ae1Alisdair Meredith PREDEF_TYPE_NULLPTR_ID = 23, 612f5c209d23b20ada4a9b6235db50317239cbf6ae1Alisdair Meredith /// \brief The C++ 'char16_t' type. 613f5c209d23b20ada4a9b6235db50317239cbf6ae1Alisdair Meredith PREDEF_TYPE_CHAR16_ID = 24, 614f5c209d23b20ada4a9b6235db50317239cbf6ae1Alisdair Meredith /// \brief The C++ 'char32_t' type. 615de2e22d33afec98324a66a358dfe0951b3c7259aSteve Naroff PREDEF_TYPE_CHAR32_ID = 25, 616de2e22d33afec98324a66a358dfe0951b3c7259aSteve Naroff /// \brief The ObjC 'id' type. 617de2e22d33afec98324a66a358dfe0951b3c7259aSteve Naroff PREDEF_TYPE_OBJC_ID = 26, 618de2e22d33afec98324a66a358dfe0951b3c7259aSteve Naroff /// \brief The ObjC 'Class' type. 61913dcd00615de5c4279d97bdf63cd5f0a14fd9dccFariborz Jahanian PREDEF_TYPE_OBJC_CLASS = 27, 62013dcd00615de5c4279d97bdf63cd5f0a14fd9dccFariborz Jahanian /// \brief The ObjC 'SEL' type. 6211de4d4e8cb2e9c88809fea8092bc6e835a5473d2John McCall PREDEF_TYPE_OBJC_SEL = 28, 622864c041e118155c2b1ce0ba36942a3da5a4a055eJohn McCall /// \brief The 'unknown any' placeholder type. 623864c041e118155c2b1ce0ba36942a3da5a4a055eJohn McCall PREDEF_TYPE_UNKNOWN_ANY = 29, 624864c041e118155c2b1ce0ba36942a3da5a4a055eJohn McCall /// \brief The placeholder type for bound member functions. 6253b8043b49aff6e5d70f29ef5684214ce2473763cDouglas Gregor PREDEF_TYPE_BOUND_MEMBER = 30, 6263b8043b49aff6e5d70f29ef5684214ce2473763cDouglas Gregor /// \brief The "auto" deduction type. 6273b8043b49aff6e5d70f29ef5684214ce2473763cDouglas Gregor PREDEF_TYPE_AUTO_DEDUCT = 31, 6283b8043b49aff6e5d70f29ef5684214ce2473763cDouglas Gregor /// \brief The "auto &&" deduction type. 629aa4a99b4a62615db243f7a5c433169f2fc704420Anton Korobeynikov PREDEF_TYPE_AUTO_RREF_DEDUCT = 32, 630aa4a99b4a62615db243f7a5c433169f2fc704420Anton Korobeynikov /// \brief The OpenCL 'half' / ARM NEON __fp16 type. 6310ddaeb9b031070ec64afe92d9892875ac44df427John McCall PREDEF_TYPE_HALF_ID = 33, 6320ddaeb9b031070ec64afe92d9892875ac44df427John McCall /// \brief ARC's unbridged-cast placeholder type. 6333c3b7f90a863af43fa63043d396553ecf205351cJohn McCall PREDEF_TYPE_ARC_UNBRIDGED_CAST = 34, 6343c3b7f90a863af43fa63043d396553ecf205351cJohn McCall /// \brief The pseudo-object placeholder type. 6353c3b7f90a863af43fa63043d396553ecf205351cJohn McCall PREDEF_TYPE_PSEUDO_OBJECT = 35 6362cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor }; 6372cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 6382cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The number of predefined type IDs that are reserved for 6392cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// the PREDEF_TYPE_* constants. 6402cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 6412cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// Type IDs for non-predefined types will start at 6422cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// NUM_PREDEF_TYPE_IDs. 6432cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor const unsigned NUM_PREDEF_TYPE_IDS = 100; 6442cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 645a72d8c4556fbdfca2c9e101722812861fcbdde12Douglas Gregor /// \brief The number of allowed abbreviations in bits 646a72d8c4556fbdfca2c9e101722812861fcbdde12Douglas Gregor const unsigned NUM_ALLOWED_ABBREVS_SIZE = 4; 647a72d8c4556fbdfca2c9e101722812861fcbdde12Douglas Gregor 6482cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief Record codes for each kind of type. 6492cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 65061d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// These constants describe the type records that can occur within a 651f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// block identified by DECLTYPES_BLOCK_ID in the AST file. Each 6522cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// constant describes a record for a specific type class in the 6532cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// AST. 6542cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor enum TypeCode { 6552cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An ExtQualType record. 65663f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_EXT_QUAL = 1, 6572cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A ComplexType record. 65863f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_COMPLEX = 3, 6592cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A PointerType record. 66063f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_POINTER = 4, 6612cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A BlockPointerType record. 66263f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_BLOCK_POINTER = 5, 6632cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An LValueReferenceType record. 66463f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_LVALUE_REFERENCE = 6, 6652cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An RValueReferenceType record. 66663f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_RVALUE_REFERENCE = 7, 6672cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A MemberPointerType record. 66863f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_MEMBER_POINTER = 8, 6692cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A ConstantArrayType record. 67063f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_CONSTANT_ARRAY = 9, 6712cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An IncompleteArrayType record. 67263f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_INCOMPLETE_ARRAY = 10, 6732cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A VariableArrayType record. 67463f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_VARIABLE_ARRAY = 11, 6752cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A VectorType record. 67663f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_VECTOR = 12, 6772cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An ExtVectorType record. 67863f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_EXT_VECTOR = 13, 6792cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A FunctionNoProtoType record. 68063f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_FUNCTION_NO_PROTO = 14, 6812cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A FunctionProtoType record. 68263f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_FUNCTION_PROTO = 15, 6832cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A TypedefType record. 68463f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_TYPEDEF = 16, 6852cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A TypeOfExprType record. 68663f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_TYPEOF_EXPR = 17, 6872cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A TypeOfType record. 68863f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_TYPEOF = 18, 6892cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A RecordType record. 69063f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_RECORD = 19, 6912cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An EnumType record. 69263f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_ENUM = 20, 6932cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An ObjCInterfaceType record. 69463f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_OBJC_INTERFACE = 21, 695d1b3c2dd5bc1f3103bee6137957aa7c5f8f2f0bcSteve Naroff /// \brief An ObjCObjectPointerType record. 696c15cb2af27514ecc879daba9aa01389c5203685dSteve Naroff TYPE_OBJC_OBJECT_POINTER = 22, 697395b475a4474f1c7574d927ad142ca0c7997cbcaAnders Carlsson /// \brief a DecltypeType record. 69854e14c4db764c0636160d26c5bbf491637c83a76John McCall TYPE_DECLTYPE = 23, 6997da2431c23ef1ee8acb114e39692246e1801afc2John McCall /// \brief An ElaboratedType record. 70054e14c4db764c0636160d26c5bbf491637c83a76John McCall TYPE_ELABORATED = 24, 70149a832bd499d6f61c23655f1fac99f0dd229756eJohn McCall /// \brief A SubstTemplateTypeParmType record. 702ed97649e9574b9d854fa4d6109c9333ae0993554John McCall TYPE_SUBST_TEMPLATE_TYPE_PARM = 25, 703ed97649e9574b9d854fa4d6109c9333ae0993554John McCall /// \brief An UnresolvedUsingType record. 7043cb0ebd5f76abcb776f7cb4062bd79e3268c0dc4John McCall TYPE_UNRESOLVED_USING = 26, 7053cb0ebd5f76abcb776f7cb4062bd79e3268c0dc4John McCall /// \brief An InjectedClassNameType record. 706c12c5bba6ceb6acd4e51e7a0fc03257da9cfd44eJohn McCall TYPE_INJECTED_CLASS_NAME = 27, 707c12c5bba6ceb6acd4e51e7a0fc03257da9cfd44eJohn McCall /// \brief An ObjCObjectType record. 70890b715e0df34eae2b50b9b43ec60828ed31dcf94Argyrios Kyrtzidis TYPE_OBJC_OBJECT = 28, 70990b715e0df34eae2b50b9b43ec60828ed31dcf94Argyrios Kyrtzidis /// \brief An TemplateTypeParmType record. 71090b715e0df34eae2b50b9b43ec60828ed31dcf94Argyrios Kyrtzidis TYPE_TEMPLATE_TYPE_PARM = 29, 71190b715e0df34eae2b50b9b43ec60828ed31dcf94Argyrios Kyrtzidis /// \brief An TemplateSpecializationType record. 7128dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfeArgyrios Kyrtzidis TYPE_TEMPLATE_SPECIALIZATION = 30, 7133acad62a239448bef0f5848b2a0d5f7dfefd3d14Argyrios Kyrtzidis /// \brief A DependentNameType record. 7143acad62a239448bef0f5848b2a0d5f7dfefd3d14Argyrios Kyrtzidis TYPE_DEPENDENT_NAME = 31, 7153acad62a239448bef0f5848b2a0d5f7dfefd3d14Argyrios Kyrtzidis /// \brief A DependentTemplateSpecializationType record. 716ae8b17f1d5d303af53db5a4f4a375ea6b9356566Argyrios Kyrtzidis TYPE_DEPENDENT_TEMPLATE_SPECIALIZATION = 32, 717ae8b17f1d5d303af53db5a4f4a375ea6b9356566Argyrios Kyrtzidis /// \brief A DependentSizedArrayType record. 718075f8f1b6bed4d1b224c74f87508534cc6392ce6Abramo Bagnara TYPE_DEPENDENT_SIZED_ARRAY = 33, 719075f8f1b6bed4d1b224c74f87508534cc6392ce6Abramo Bagnara /// \brief A ParenType record. 7207536dd5e6c99584481b7dab68b7e7d8df9c54054Douglas Gregor TYPE_PAREN = 34, 7217536dd5e6c99584481b7dab68b7e7d8df9c54054Douglas Gregor /// \brief A PackExpansionType record. 7229d156a7b1b2771e191f2f5a45a7b7a694129463bJohn McCall TYPE_PACK_EXPANSION = 35, 7239d156a7b1b2771e191f2f5a45a7b7a694129463bJohn McCall /// \brief An AttributedType record. 724c3069d618f4661d923cb1b5c4525b082fce73b04Douglas Gregor TYPE_ATTRIBUTED = 36, 725c3069d618f4661d923cb1b5c4525b082fce73b04Douglas Gregor /// \brief A SubstTemplateTypeParmPackType record. 72634b41d939a1328f484511c6002ba2456db879a29Richard Smith TYPE_SUBST_TEMPLATE_TYPE_PARM_PACK = 37, 72734b41d939a1328f484511c6002ba2456db879a29Richard Smith /// \brief A AutoType record. 728ca63c200346c0ca9e00194ec6e34a5a7b0ed9321Sean Hunt TYPE_AUTO = 38, 729ca63c200346c0ca9e00194ec6e34a5a7b0ed9321Sean Hunt /// \brief A UnaryTransformType record. 730b001de7458d17c17e6d8b8034c7cfcefd3b70c00Eli Friedman TYPE_UNARY_TRANSFORM = 39, 731b001de7458d17c17e6d8b8034c7cfcefd3b70c00Eli Friedman /// \brief An AtomicType record. 732b001de7458d17c17e6d8b8034c7cfcefd3b70c00Eli Friedman TYPE_ATOMIC = 40 7332cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor }; 7342cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 735ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// \brief The type IDs for special types constructed by semantic 736ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// analysis. 737ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// 738ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// The constants in this enumeration are indices into the 739ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// SPECIAL_TYPES record. 740ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor enum SpecialTypeIDs { 741ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// \brief __builtin_va_list 742319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor SPECIAL_TYPE_BUILTIN_VA_LIST = 0, 743319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor /// \brief CFConstantString type 744a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor SPECIAL_TYPE_CF_CONSTANT_STRING = 1, 745c29f77b769bcc5b6dc85e72c8e3cc2e348e5cf25Douglas Gregor /// \brief C FILE typedef type 746a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor SPECIAL_TYPE_FILE = 2, 747782fa308a765aeac2acb39c4e697c937ec21185bMike Stump /// \brief C jmp_buf typedef type 748a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor SPECIAL_TYPE_JMP_BUF = 3, 749782fa308a765aeac2acb39c4e697c937ec21185bMike Stump /// \brief C sigjmp_buf typedef type 750a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor SPECIAL_TYPE_SIGJMP_BUF = 4, 751d1571acc700b652a52c766e36a6c688d9bf6f3a1Douglas Gregor /// \brief Objective-C "id" redefinition type 752a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor SPECIAL_TYPE_OBJC_ID_REDEFINITION = 5, 753d1571acc700b652a52c766e36a6c688d9bf6f3a1Douglas Gregor /// \brief Objective-C "Class" redefinition type 754a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor SPECIAL_TYPE_OBJC_CLASS_REDEFINITION = 6, 75513dcd00615de5c4279d97bdf63cd5f0a14fd9dccFariborz Jahanian /// \brief Objective-C "SEL" redefinition type 756a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor SPECIAL_TYPE_OBJC_SEL_REDEFINITION = 7, 757e2d4f4ed44a32f179c6d48cd1dba8346ab2129d9Rafael Espindola /// \brief C ucontext_t typedef type 758a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor SPECIAL_TYPE_UCONTEXT_T = 8 759ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor }; 76002a5e875cca1ce2f471dad06fb5557346d99c164Douglas Gregor 76102a5e875cca1ce2f471dad06fb5557346d99c164Douglas Gregor /// \brief The number of special type IDs. 762a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor const unsigned NumSpecialTypeIDs = 9; 763ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor 7640a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor /// \brief Predefined declaration IDs. 7650a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor /// 7660a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor /// These declaration IDs correspond to predefined declarations in the AST 7670a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor /// context, such as the NULL declaration ID. Such declarations are never 7680a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor /// actually serialized, since they will be built by the AST context when 7690a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor /// it is created. 7700a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor enum PredefinedDeclIDs { 7710a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor /// \brief The NULL declaration. 7726bf2b9fbd3e3adc38d4712de79aeaa81d651aa08Douglas Gregor PREDEF_DECL_NULL_ID = 0, 7736bf2b9fbd3e3adc38d4712de79aeaa81d651aa08Douglas Gregor 7746bf2b9fbd3e3adc38d4712de79aeaa81d651aa08Douglas Gregor /// \brief The translation unit. 7754dfd02a17c6d604c72e6936527c5e1c56d3ecb7aDouglas Gregor PREDEF_DECL_TRANSLATION_UNIT_ID = 1, 7764dfd02a17c6d604c72e6936527c5e1c56d3ecb7aDouglas Gregor 7774dfd02a17c6d604c72e6936527c5e1c56d3ecb7aDouglas Gregor /// \brief The Objective-C 'id' type. 77879d6726921897811232554ed94c5d77b5b7b3fc0Douglas Gregor PREDEF_DECL_OBJC_ID_ID = 2, 77979d6726921897811232554ed94c5d77b5b7b3fc0Douglas Gregor 7807a27ea52b7bd635c89bec5a9c521a3bf7d204238Douglas Gregor /// \brief The Objective-C 'SEL' type. 7817a27ea52b7bd635c89bec5a9c521a3bf7d204238Douglas Gregor PREDEF_DECL_OBJC_SEL_ID = 3, 7827a27ea52b7bd635c89bec5a9c521a3bf7d204238Douglas Gregor 78379d6726921897811232554ed94c5d77b5b7b3fc0Douglas Gregor /// \brief The Objective-C 'Class' type. 784772eeaefef2c883aabe35caf4543e7e32d290183Douglas Gregor PREDEF_DECL_OBJC_CLASS_ID = 4, 785a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor 786a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor /// \brief The Objective-C 'Protocol' type. 787a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor PREDEF_DECL_OBJC_PROTOCOL_ID = 5, 788772eeaefef2c883aabe35caf4543e7e32d290183Douglas Gregor 789772eeaefef2c883aabe35caf4543e7e32d290183Douglas Gregor /// \brief The signed 128-bit integer type. 790a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor PREDEF_DECL_INT_128_ID = 6, 791772eeaefef2c883aabe35caf4543e7e32d290183Douglas Gregor 792772eeaefef2c883aabe35caf4543e7e32d290183Douglas Gregor /// \brief The unsigned 128-bit integer type. 793a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor PREDEF_DECL_UNSIGNED_INT_128_ID = 7, 794e97179c675b341927807c718be215c8d1aab8acbDouglas Gregor 795e97179c675b341927807c718be215c8d1aab8acbDouglas Gregor /// \brief The internal 'instancetype' typedef. 796a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor PREDEF_DECL_OBJC_INSTANCETYPE_ID = 8 7970a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor }; 7980a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor 7990a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor /// \brief The number of declaration IDs that are predefined. 8000a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor /// 8010a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor /// For more information about predefined declarations, see the 8020a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor /// \c PredefinedDeclIDs type and the PREDEF_DECL_*_ID constants. 803a6ea10e22b600d92e084f6b11b9b9a92d0eb2412Douglas Gregor const unsigned int NUM_PREDEF_DECL_IDS = 9; 8040a14e4bf604a91b035a479235adf4c2f6c9128a2Douglas Gregor 8052cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief Record codes for each kind of declaration. 8062cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 80761d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// These constants describe the declaration records that can occur within 80861d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// a declarations block (identified by DECLS_BLOCK_ID). Each 8092cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// constant describes a record for a specific declaration class 8102cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// in the AST. 8112cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor enum DeclCode { 8122cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A TypedefDecl record. 8136bf2b9fbd3e3adc38d4712de79aeaa81d651aa08Douglas Gregor DECL_TYPEDEF = 51, 814162e1c1b487352434552147967c3dd296ebee2f7Richard Smith /// \brief A TypeAliasDecl record. 815162e1c1b487352434552147967c3dd296ebee2f7Richard Smith DECL_TYPEALIAS, 8160a2b45e5885b6b8477b167042c0f6cd1d99a1f13Douglas Gregor /// \brief An EnumDecl record. 8170a2b45e5885b6b8477b167042c0f6cd1d99a1f13Douglas Gregor DECL_ENUM, 8188c70006581a9b9e9485570ca727a6c5f7be63521Douglas Gregor /// \brief A RecordDecl record. 8198c70006581a9b9e9485570ca727a6c5f7be63521Douglas Gregor DECL_RECORD, 8200a2b45e5885b6b8477b167042c0f6cd1d99a1f13Douglas Gregor /// \brief An EnumConstantDecl record. 8210a2b45e5885b6b8477b167042c0f6cd1d99a1f13Douglas Gregor DECL_ENUM_CONSTANT, 8223a2f7e42514ddbec983c61826ce85d3071e23e8eDouglas Gregor /// \brief A FunctionDecl record. 8233a2f7e42514ddbec983c61826ce85d3071e23e8eDouglas Gregor DECL_FUNCTION, 82453c9d8a4b8f0a76cb9dd2fdd8c433ccf110f2eecSteve Naroff /// \brief A ObjCMethodDecl record. 82553c9d8a4b8f0a76cb9dd2fdd8c433ccf110f2eecSteve Naroff DECL_OBJC_METHOD, 82633feeb019a5742b286eededd5446ec0fe87c5a61Steve Naroff /// \brief A ObjCInterfaceDecl record. 82730833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_INTERFACE, 82830833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCProtocolDecl record. 82930833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_PROTOCOL, 83033feeb019a5742b286eededd5446ec0fe87c5a61Steve Naroff /// \brief A ObjCIvarDecl record. 83130833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_IVAR, 83230833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCAtDefsFieldDecl record. 83330833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_AT_DEFS_FIELD, 83430833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCCategoryDecl record. 83530833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_CATEGORY, 83630833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCCategoryImplDecl record. 83730833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_CATEGORY_IMPL, 83830833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCImplementationDecl record. 83930833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_IMPLEMENTATION, 84030833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCCompatibleAliasDecl record. 84130833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_COMPATIBLE_ALIAS, 84230833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCPropertyDecl record. 84330833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_PROPERTY, 84430833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCPropertyImplDecl record. 84530833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_PROPERTY_IMPL, 8468c70006581a9b9e9485570ca727a6c5f7be63521Douglas Gregor /// \brief A FieldDecl record. 8478c70006581a9b9e9485570ca727a6c5f7be63521Douglas Gregor DECL_FIELD, 8482cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A VarDecl record. 8492cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor DECL_VAR, 850405bad07391494d2eb025f8222c256c66b56e5f8Douglas Gregor /// \brief An ImplicitParamDecl record. 851405bad07391494d2eb025f8222c256c66b56e5f8Douglas Gregor DECL_IMPLICIT_PARAM, 8523a2f7e42514ddbec983c61826ce85d3071e23e8eDouglas Gregor /// \brief A ParmVarDecl record. 8533a2f7e42514ddbec983c61826ce85d3071e23e8eDouglas Gregor DECL_PARM_VAR, 8541028bc67d56ea088c3a57c4c44c3f6aeff60a031Douglas Gregor /// \brief A FileScopeAsmDecl record. 8551028bc67d56ea088c3a57c4c44c3f6aeff60a031Douglas Gregor DECL_FILE_SCOPE_ASM, 8561028bc67d56ea088c3a57c4c44c3f6aeff60a031Douglas Gregor /// \brief A BlockDecl record. 8571028bc67d56ea088c3a57c4c44c3f6aeff60a031Douglas Gregor DECL_BLOCK, 8582cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A record that stores the set of declarations that are 8592cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// lexically stored within a given DeclContext. 8602cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 861681d7237e1014bf64dd5ead6bf74ae55cdd19e61Sebastian Redl /// The record itself is a blob that is an array of declaration IDs, 862681d7237e1014bf64dd5ead6bf74ae55cdd19e61Sebastian Redl /// in the order in which those declarations were added to the 8632cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// declaration context. This data is used when iterating over 8642cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// the contents of a DeclContext, e.g., via 8652cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// DeclContext::decls_begin()/DeclContext::decls_end(). 8662cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor DECL_CONTEXT_LEXICAL, 8672cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A record that stores the set of declarations that are 8682cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// visible from a given DeclContext. 8692cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 8702cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// The record itself stores a set of mappings, each of which 8712cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// associates a declaration name with one or more declaration 8722cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// IDs. This data is used when performing qualified name lookup 8732cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// into a DeclContext via DeclContext::lookup. 8740cef483f3b9d6a7f9fdbc5910d0a3ed64130e8e1Douglas Gregor DECL_CONTEXT_VISIBLE, 875ad8dcf4a9df0e24051dc31bf9e6f3cd138a34298Chris Lattner /// \brief A LabelDecl record. 876ad8dcf4a9df0e24051dc31bf9e6f3cd138a34298Chris Lattner DECL_LABEL, 877ad8dcf4a9df0e24051dc31bf9e6f3cd138a34298Chris Lattner /// \brief A NamespaceDecl record. 8786ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_NAMESPACE, 8796ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A NamespaceAliasDecl record. 8806ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_NAMESPACE_ALIAS, 8816ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A UsingDecl record. 8826ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_USING, 8836ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A UsingShadowDecl record. 8846ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_USING_SHADOW, 8856ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A UsingDirecitveDecl record. 8866ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_USING_DIRECTIVE, 8876ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief An UnresolvedUsingValueDecl record. 8886ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_UNRESOLVED_USING_VALUE, 8896ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief An UnresolvedUsingTypenameDecl record. 8906ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_UNRESOLVED_USING_TYPENAME, 8916ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A LinkageSpecDecl record. 8926ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_LINKAGE_SPEC, 8936ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A CXXRecordDecl record. 8946ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CXX_RECORD, 8956ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A CXXMethodDecl record. 8966ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CXX_METHOD, 8976ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A CXXConstructorDecl record. 8986ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CXX_CONSTRUCTOR, 8996ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A CXXDestructorDecl record. 9006ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CXX_DESTRUCTOR, 9016ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner /// \brief A CXXConversionDecl record. 9026ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CXX_CONVERSION, 9036206d53f67613958ae1b023aba337ebb46f11a8bAbramo Bagnara /// \brief An AccessSpecDecl record. 9046206d53f67613958ae1b023aba337ebb46f11a8bAbramo Bagnara DECL_ACCESS_SPEC, 9056ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner 9065f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A FriendDecl record. 9076ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_FRIEND, 9085f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A FriendTemplateDecl record. 9096ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_FRIEND_TEMPLATE, 9105f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A ClassTemplateDecl record. 9116ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CLASS_TEMPLATE, 9125f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A ClassTemplateSpecializationDecl record. 9136ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CLASS_TEMPLATE_SPECIALIZATION, 9145f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A ClassTemplatePartialSpecializationDecl record. 9156ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_CLASS_TEMPLATE_PARTIAL_SPECIALIZATION, 9165f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A FunctionTemplateDecl record. 9176ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_FUNCTION_TEMPLATE, 9185f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A TemplateTypeParmDecl record. 9196ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_TEMPLATE_TYPE_PARM, 9205f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A NonTypeTemplateParmDecl record. 9216ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_NON_TYPE_TEMPLATE_PARM, 9225f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A TemplateTemplateParmDecl record. 9236ad9ac097918fbdeb443ea7b99d4db9e49b28534Chris Lattner DECL_TEMPLATE_TEMPLATE_PARM, 9243e4c6c4c79a03f5cb0c4671d7c282d623c6dc35eRichard Smith /// \brief A TypeAliasTemplateDecl record. 9253e4c6c4c79a03f5cb0c4671d7c282d623c6dc35eRichard Smith DECL_TYPE_ALIAS_TEMPLATE, 9265f3dbf5bbc5cb6e3d9273e5b6e82baa14cbd999cArgyrios Kyrtzidis /// \brief A StaticAssertDecl record. 9277c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor DECL_STATIC_ASSERT, 9287c789c1a3f77f24032aa0bed2afacdb9e094e952Douglas Gregor /// \brief A record containing CXXBaseSpecifiers. 92987c2e121cf0522fc266efe2922b58091cd2e0182Francois Pichet DECL_CXX_BASE_SPECIFIERS, 93087c2e121cf0522fc266efe2922b58091cd2e0182Francois Pichet /// \brief A IndirectFieldDecl record. 9316952f1e4256c5b43aee5e98cea4e9b663bd1d413Douglas Gregor DECL_INDIRECTFIELD, 9326952f1e4256c5b43aee5e98cea4e9b663bd1d413Douglas Gregor /// \brief A NonTypeTemplateParmDecl record that stores an expanded 9336952f1e4256c5b43aee5e98cea4e9b663bd1d413Douglas Gregor /// non-type template parameter pack. 934af0f4d0b2e38c810effc8b024ad2fb6604eec5d3Francois Pichet DECL_EXPANDED_NON_TYPE_TEMPLATE_PARM_PACK, 935af0f4d0b2e38c810effc8b024ad2fb6604eec5d3Francois Pichet /// \brief A ClassScopeFunctionSpecializationDecl record a class scope 936af0f4d0b2e38c810effc8b024ad2fb6604eec5d3Francois Pichet /// function specialization. (Microsoft extension). 93715de72cf580840c61e5704c2f8a2b56f9d0638e1Douglas Gregor DECL_CLASS_SCOPE_FUNCTION_SPECIALIZATION, 93815de72cf580840c61e5704c2f8a2b56f9d0638e1Douglas Gregor /// \brief An ImportDecl recording a module import. 93915de72cf580840c61e5704c2f8a2b56f9d0638e1Douglas Gregor DECL_IMPORT 9402cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor }; 9410b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor 9420b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// \brief Record codes for each kind of statement or expression. 9430b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// 9440b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// These constants describe the records that describe statements 94561d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// or expressions. These records occur within type and declarations 94661d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// block, so they begin with record values of 100. Each constant 94761d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// describes a record for a specific statement or expression class in the 94861d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// AST. 9490b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor enum StmtCode { 950087fd536809ebe754d91c641a98917e02dd7452dDouglas Gregor /// \brief A marker record that indicates that we are at the end 951087fd536809ebe754d91c641a98917e02dd7452dDouglas Gregor /// of an expression. 95261d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor STMT_STOP = 100, 9530b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// \brief A NULL expression. 954c9490c000f515c29f200a1215328d8ab9a0f3818Douglas Gregor STMT_NULL_PTR, 955e6f0868a55aba2613e2d5dba3348aaf1064e6ddbArgyrios Kyrtzidis /// \brief A reference to a previously [de]serialized Stmt record. 956e6f0868a55aba2613e2d5dba3348aaf1064e6ddbArgyrios Kyrtzidis STMT_REF_PTR, 957025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A NullStmt record. 958025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_NULL, 959025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A CompoundStmt record. 960025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_COMPOUND, 961025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A CaseStmt record. 962025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_CASE, 963025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A DefaultStmt record. 964025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_DEFAULT, 9651de05feeeafe5b215fe7617594a7076a5192a6e2Douglas Gregor /// \brief A LabelStmt record. 9661de05feeeafe5b215fe7617594a7076a5192a6e2Douglas Gregor STMT_LABEL, 967534986f2b21e6050bf00163cd6423fd92155a6edRichard Smith /// \brief An AttributedStmt record. 968534986f2b21e6050bf00163cd6423fd92155a6edRichard Smith STMT_ATTRIBUTED, 969025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief An IfStmt record. 970025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_IF, 971025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A SwitchStmt record. 972025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_SWITCH, 973d921cf976b4769af8d06d6763a2547dadf7940abDouglas Gregor /// \brief A WhileStmt record. 974d921cf976b4769af8d06d6763a2547dadf7940abDouglas Gregor STMT_WHILE, 97567d8249924ef38a5375ff9c92cd21c1854d6ababDouglas Gregor /// \brief A DoStmt record. 97667d8249924ef38a5375ff9c92cd21c1854d6ababDouglas Gregor STMT_DO, 97767d8249924ef38a5375ff9c92cd21c1854d6ababDouglas Gregor /// \brief A ForStmt record. 97867d8249924ef38a5375ff9c92cd21c1854d6ababDouglas Gregor STMT_FOR, 9791de05feeeafe5b215fe7617594a7076a5192a6e2Douglas Gregor /// \brief A GotoStmt record. 9801de05feeeafe5b215fe7617594a7076a5192a6e2Douglas Gregor STMT_GOTO, 9817d5c2f241c74e5f8d9ec492e8f9f268e5e9ae41fDouglas Gregor /// \brief An IndirectGotoStmt record. 9827d5c2f241c74e5f8d9ec492e8f9f268e5e9ae41fDouglas Gregor STMT_INDIRECT_GOTO, 983d921cf976b4769af8d06d6763a2547dadf7940abDouglas Gregor /// \brief A ContinueStmt record. 984d921cf976b4769af8d06d6763a2547dadf7940abDouglas Gregor STMT_CONTINUE, 985025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A BreakStmt record. 986025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_BREAK, 9870de9d8857b715c2f45c987651f4ce06d73330d93Douglas Gregor /// \brief A ReturnStmt record. 9880de9d8857b715c2f45c987651f4ce06d73330d93Douglas Gregor STMT_RETURN, 98984f2170062014d268951902164bed0d8bdea0e82Douglas Gregor /// \brief A DeclStmt record. 99084f2170062014d268951902164bed0d8bdea0e82Douglas Gregor STMT_DECL, 991cd7d5a9dc558178ed7a66032f888781b3c592e4fDouglas Gregor /// \brief An AsmStmt record. 992cd7d5a9dc558178ed7a66032f888781b3c592e4fDouglas Gregor STMT_ASM, 99317fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor /// \brief A PredefinedExpr record. 99417fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor EXPR_PREDEFINED, 9950b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// \brief A DeclRefExpr record. 9960b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor EXPR_DECL_REF, 9970b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// \brief An IntegerLiteral record. 9980b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor EXPR_INTEGER_LITERAL, 99917fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor /// \brief A FloatingLiteral record. 100017fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor EXPR_FLOATING_LITERAL, 1001cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor /// \brief An ImaginaryLiteral record. 1002cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor EXPR_IMAGINARY_LITERAL, 1003673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregor /// \brief A StringLiteral record. 1004673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregor EXPR_STRING_LITERAL, 10050b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// \brief A CharacterLiteral record. 1006087fd536809ebe754d91c641a98917e02dd7452dDouglas Gregor EXPR_CHARACTER_LITERAL, 1007c04db4feefa2b0dbbc6876cb4eeeee108aa6791dDouglas Gregor /// \brief A ParenExpr record. 1008c04db4feefa2b0dbbc6876cb4eeeee108aa6791dDouglas Gregor EXPR_PAREN, 100937bdfe284ad365f753741d1d89c078c148b3f4afArgyrios Kyrtzidis /// \brief A ParenListExpr record. 101037bdfe284ad365f753741d1d89c078c148b3f4afArgyrios Kyrtzidis EXPR_PAREN_LIST, 10110b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor /// \brief A UnaryOperator record. 10120b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor EXPR_UNARY_OPERATOR, 10138ecdb65716cd7914ffb2eeee993fa9039fcd31e8Douglas Gregor /// \brief An OffsetOfExpr record. 10148ecdb65716cd7914ffb2eeee993fa9039fcd31e8Douglas Gregor EXPR_OFFSETOF, 10150b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor /// \brief A SizefAlignOfExpr record. 10160b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor EXPR_SIZEOF_ALIGN_OF, 1017cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor /// \brief An ArraySubscriptExpr record. 1018cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor EXPR_ARRAY_SUBSCRIPT, 10191f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor /// \brief A CallExpr record. 10201f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor EXPR_CALL, 10211f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor /// \brief A MemberExpr record. 10221f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor EXPR_MEMBER, 1023db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor /// \brief A BinaryOperator record. 1024db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor EXPR_BINARY_OPERATOR, 1025ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor /// \brief A CompoundAssignOperator record. 1026ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor EXPR_COMPOUND_ASSIGN_OPERATOR, 1027ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor /// \brief A ConditionOperator record. 1028ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor EXPR_CONDITIONAL_OPERATOR, 1029087fd536809ebe754d91c641a98917e02dd7452dDouglas Gregor /// \brief An ImplicitCastExpr record. 1030db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor EXPR_IMPLICIT_CAST, 1031db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor /// \brief A CStyleCastExpr record. 1032d3c98a02c73417689deaaa6671ea6df7f2a8a73cDouglas Gregor EXPR_CSTYLE_CAST, 1033ba6d7e7fa5f79959d3eef39adb5620d845ba5198Douglas Gregor /// \brief A CompoundLiteralExpr record. 1034ba6d7e7fa5f79959d3eef39adb5620d845ba5198Douglas Gregor EXPR_COMPOUND_LITERAL, 1035d3c98a02c73417689deaaa6671ea6df7f2a8a73cDouglas Gregor /// \brief An ExtVectorElementExpr record. 1036d3c98a02c73417689deaaa6671ea6df7f2a8a73cDouglas Gregor EXPR_EXT_VECTOR_ELEMENT, 1037d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief An InitListExpr record. 1038d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor EXPR_INIT_LIST, 1039d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief A DesignatedInitExpr record. 1040d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor EXPR_DESIGNATED_INIT, 1041d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief An ImplicitValueInitExpr record. 1042d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor EXPR_IMPLICIT_VALUE_INIT, 1043d3c98a02c73417689deaaa6671ea6df7f2a8a73cDouglas Gregor /// \brief A VAArgExpr record. 104444cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor EXPR_VA_ARG, 10456a2dd55b0b3ae376d449a4b07bbb6b2d30b26330Douglas Gregor /// \brief An AddrLabelExpr record. 10467d5c2f241c74e5f8d9ec492e8f9f268e5e9ae41fDouglas Gregor EXPR_ADDR_LABEL, 10476a2dd55b0b3ae376d449a4b07bbb6b2d30b26330Douglas Gregor /// \brief A StmtExpr record. 10486a2dd55b0b3ae376d449a4b07bbb6b2d30b26330Douglas Gregor EXPR_STMT, 104944cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor /// \brief A ChooseExpr record. 105044cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor EXPR_CHOOSE, 105144cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor /// \brief A GNUNullExpr record. 105294cd5d1397bb1a8bcd109602aa38dd787b164c22Douglas Gregor EXPR_GNU_NULL, 105394cd5d1397bb1a8bcd109602aa38dd787b164c22Douglas Gregor /// \brief A ShuffleVectorExpr record. 105494cd5d1397bb1a8bcd109602aa38dd787b164c22Douglas Gregor EXPR_SHUFFLE_VECTOR, 105584af7c27cdc615ff917a501d61256b4049383c97Douglas Gregor /// \brief BlockExpr 105684af7c27cdc615ff917a501d61256b4049383c97Douglas Gregor EXPR_BLOCK, 1057f111d935722ed488144600cea5ed03a6b5069e8fPeter Collingbourne /// \brief A GenericSelectionExpr record. 1058f111d935722ed488144600cea5ed03a6b5069e8fPeter Collingbourne EXPR_GENERIC_SELECTION, 10594b9c2d235fb9449e249d74f48ecfec601650de93John McCall /// \brief A PseudoObjectExpr record. 10604b9c2d235fb9449e249d74f48ecfec601650de93John McCall EXPR_PSEUDO_OBJECT, 1061276b061970939293f1abaf694bd3ef05b2cbda79Eli Friedman /// \brief An AtomicExpr record. 1062276b061970939293f1abaf694bd3ef05b2cbda79Eli Friedman EXPR_ATOMIC, 1063276b061970939293f1abaf694bd3ef05b2cbda79Eli Friedman 10644dcf151a555ff51e4d643e8e6eeb80f121d11d1bChris Lattner // Objective-C 10651eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 10660389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCStringLiteral record. 10673a57a3765b6192a94ff4e5997ae0489a1471b308Chris Lattner EXPR_OBJC_STRING_LITERAL, 1068ebcb57a8d298862c65043e88b2429591ab3c58d3Ted Kremenek 1069eb382ec1507cf2c8c12d7443d0b67c076223aec6Patrick Beard EXPR_OBJC_BOXED_EXPRESSION, 1070ebcb57a8d298862c65043e88b2429591ab3c58d3Ted Kremenek EXPR_OBJC_ARRAY_LITERAL, 1071ebcb57a8d298862c65043e88b2429591ab3c58d3Ted Kremenek EXPR_OBJC_DICTIONARY_LITERAL, 1072ebcb57a8d298862c65043e88b2429591ab3c58d3Ted Kremenek 1073ebcb57a8d298862c65043e88b2429591ab3c58d3Ted Kremenek 10740389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCEncodeExpr record. 10753a57a3765b6192a94ff4e5997ae0489a1471b308Chris Lattner EXPR_OBJC_ENCODE, 10760389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCSelectorExpr record. 10773a57a3765b6192a94ff4e5997ae0489a1471b308Chris Lattner EXPR_OBJC_SELECTOR_EXPR, 10780389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCProtocolExpr record. 1079c4f0bbdb166fbc31ab2cf0f6ff573fde9fa307b3Steve Naroff EXPR_OBJC_PROTOCOL_EXPR, 10800389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCIvarRefExpr record. 10810389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner EXPR_OBJC_IVAR_REF_EXPR, 10820389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCPropertyRefExpr record. 10830389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner EXPR_OBJC_PROPERTY_REF_EXPR, 1084ebcb57a8d298862c65043e88b2429591ab3c58d3Ted Kremenek /// \brief An ObjCSubscriptRefExpr record. 1085ebcb57a8d298862c65043e88b2429591ab3c58d3Ted Kremenek EXPR_OBJC_SUBSCRIPT_REF_EXPR, 108612f78a6741a4cb3d904340f8d3d2714568b50e7aJohn McCall /// \brief UNUSED 10870389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner EXPR_OBJC_KVC_REF_EXPR, 10880389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCMessageExpr record. 10890389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner EXPR_OBJC_MESSAGE_EXPR, 1090f242b1b0c4e998911cb96b2ba7e27ab4a5abaed3Steve Naroff /// \brief An ObjCIsa Expr record. 1091f242b1b0c4e998911cb96b2ba7e27ab4a5abaed3Steve Naroff EXPR_OBJC_ISA, 1092f85e193739c953358c865005855253af4f68a497John McCall /// \breif An ObjCIndirectCopyRestoreExpr record. 1093f85e193739c953358c865005855253af4f68a497John McCall EXPR_OBJC_INDIRECT_COPY_RESTORE, 10941eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 10951eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCForCollectionStmt record. 10961eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff STMT_OBJC_FOR_COLLECTION, 10971eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCAtCatchStmt record. 10981eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff STMT_OBJC_CATCH, 10991eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCAtFinallyStmt record. 11001eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff STMT_OBJC_FINALLY, 11011eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCAtTryStmt record. 11021eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff STMT_OBJC_AT_TRY, 11031eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCAtSynchronizedStmt record. 11041eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff STMT_OBJC_AT_SYNCHRONIZED, 11051eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCAtThrowStmt record. 1106ba0a9006dbc4814e1e35f82812cb5a1dad65e8b8Argyrios Kyrtzidis STMT_OBJC_AT_THROW, 1107f85e193739c953358c865005855253af4f68a497John McCall /// \brief An ObjCAutoreleasePoolStmt record. 1108f85e193739c953358c865005855253af4f68a497John McCall STMT_OBJC_AUTORELEASE_POOL, 1109ebcb57a8d298862c65043e88b2429591ab3c58d3Ted Kremenek /// \brief A ObjCBoolLiteralExpr record. 1110ebcb57a8d298862c65043e88b2429591ab3c58d3Ted Kremenek EXPR_OBJC_BOOL_LITERAL, 1111ba0a9006dbc4814e1e35f82812cb5a1dad65e8b8Argyrios Kyrtzidis 1112ba0a9006dbc4814e1e35f82812cb5a1dad65e8b8Argyrios Kyrtzidis // C++ 11137cb45e37b6f924d9ddbc53ac023bbaadb4ca3534Argyrios Kyrtzidis 11147cb45e37b6f924d9ddbc53ac023bbaadb4ca3534Argyrios Kyrtzidis /// \brief A CXXCatchStmt record. 11157cb45e37b6f924d9ddbc53ac023bbaadb4ca3534Argyrios Kyrtzidis STMT_CXX_CATCH, 11167cb45e37b6f924d9ddbc53ac023bbaadb4ca3534Argyrios Kyrtzidis /// \brief A CXXTryStmt record. 11177cb45e37b6f924d9ddbc53ac023bbaadb4ca3534Argyrios Kyrtzidis STMT_CXX_TRY, 1118ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith /// \brief A CXXForRangeStmt record. 1119ad762fcdc16b9e4705b12b09d92b8c026212b906Richard Smith STMT_CXX_FOR_RANGE, 1120ba0a9006dbc4814e1e35f82812cb5a1dad65e8b8Argyrios Kyrtzidis 112139da0b8145eaec7da7004f9b3645c5c9f4f63b1dDouglas Gregor /// \brief A CXXOperatorCallExpr record. 112239da0b8145eaec7da7004f9b3645c5c9f4f63b1dDouglas Gregor EXPR_CXX_OPERATOR_CALL, 11231817bd483b538fd3f4530649f5cb900bad9e8a76Chris Lattner /// \brief A CXXMemberCallExpr record. 11241817bd483b538fd3f4530649f5cb900bad9e8a76Chris Lattner EXPR_CXX_MEMBER_CALL, 112539da0b8145eaec7da7004f9b3645c5c9f4f63b1dDouglas Gregor /// \brief A CXXConstructExpr record. 1126ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig EXPR_CXX_CONSTRUCT, 11276d00c1365dd3601f6d93bbda9162913c57ae788fArgyrios Kyrtzidis /// \brief A CXXTemporaryObjectExpr record. 11286d00c1365dd3601f6d93bbda9162913c57ae788fArgyrios Kyrtzidis EXPR_CXX_TEMPORARY_OBJECT, 1129f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief A CXXStaticCastExpr record. 1130ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig EXPR_CXX_STATIC_CAST, 1131f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief A CXXDynamicCastExpr record. 1132ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig EXPR_CXX_DYNAMIC_CAST, 1133f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief A CXXReinterpretCastExpr record. 1134ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig EXPR_CXX_REINTERPRET_CAST, 1135f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief A CXXConstCastExpr record. 1136ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig EXPR_CXX_CONST_CAST, 1137f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief A CXXFunctionalCastExpr record. 1138eb7f96141f754150a92433286fa385910a22f494Sam Weinig EXPR_CXX_FUNCTIONAL_CAST, 11399fcce65e7e1307b5b8da9be13e4092d6bb94dc1dRichard Smith /// \brief A UserDefinedLiteral record. 11409fcce65e7e1307b5b8da9be13e4092d6bb94dc1dRichard Smith EXPR_USER_DEFINED_LITERAL, 1141f29f0a28c4d9599b389bbb6d186e14af753dc5a3Sebastian Redl /// \brief A CXXBoolLiteralExpr record. 1142eb7f96141f754150a92433286fa385910a22f494Sam Weinig EXPR_CXX_BOOL_LITERAL, 114314ab24f01e36d495fce183aa67b41e45cdd54f39Chris Lattner EXPR_CXX_NULL_PTR_LITERAL, // CXXNullPtrLiteralExpr 114414ab24f01e36d495fce183aa67b41e45cdd54f39Chris Lattner EXPR_CXX_TYPEID_EXPR, // CXXTypeidExpr (of expr). 11452fbdfcdf3bbf7b941853d38b123930755e837437Chris Lattner EXPR_CXX_TYPEID_TYPE, // CXXTypeidExpr (of type). 11462fbdfcdf3bbf7b941853d38b123930755e837437Chris Lattner EXPR_CXX_THIS, // CXXThisExpr 1147030854b95f7bfd86aaa8afd9ae1aff9768a37e9aChris Lattner EXPR_CXX_THROW, // CXXThrowExpr 1148d2598368876cfe40bc8465540033bc5b5e58d8afChris Lattner EXPR_CXX_DEFAULT_ARG, // CXXDefaultArgExpr 1149d2598368876cfe40bc8465540033bc5b5e58d8afChris Lattner EXPR_CXX_BIND_TEMPORARY, // CXXBindTemporaryExpr 11506d00c1365dd3601f6d93bbda9162913c57ae788fArgyrios Kyrtzidis 1151ed8abf18329df67b0abcbb3a10458bd8c1d2a595Douglas Gregor EXPR_CXX_SCALAR_VALUE_INIT, // CXXScalarValueInitExpr 11525921863d8f24084797863b5df37842113bac4352Chris Lattner EXPR_CXX_NEW, // CXXNewExpr 115395fc98ce95d4faa4f1bb2783384150530404ea6fArgyrios Kyrtzidis EXPR_CXX_DELETE, // CXXDeleteExpr 1154de4bd18bb45a1db68996cfb949db3015fc25d10dArgyrios Kyrtzidis EXPR_CXX_PSEUDO_DESTRUCTOR, // CXXPseudoDestructorExpr 1155d2598368876cfe40bc8465540033bc5b5e58d8afChris Lattner 11564765fa05b5652fcc4356371c2f481d0ea9a1b007John McCall EXPR_EXPR_WITH_CLEANUPS, // ExprWithCleanups 11578dfbd8b252ba4e6cf4b7a3422f6ef0ca21312dfeArgyrios Kyrtzidis 11586b219d082434394c1ac401390ec1d1967727815aSebastian Redl EXPR_CXX_DEPENDENT_SCOPE_MEMBER, // CXXDependentScopeMemberExpr 11596b219d082434394c1ac401390ec1d1967727815aSebastian Redl EXPR_CXX_DEPENDENT_SCOPE_DECL_REF, // DependentScopeDeclRefExpr 11606b219d082434394c1ac401390ec1d1967727815aSebastian Redl EXPR_CXX_UNRESOLVED_CONSTRUCT, // CXXUnresolvedConstructExpr 11616b219d082434394c1ac401390ec1d1967727815aSebastian Redl EXPR_CXX_UNRESOLVED_MEMBER, // UnresolvedMemberExpr 11626b219d082434394c1ac401390ec1d1967727815aSebastian Redl EXPR_CXX_UNRESOLVED_LOOKUP, // UnresolvedLookupExpr 11636b219d082434394c1ac401390ec1d1967727815aSebastian Redl 11646b219d082434394c1ac401390ec1d1967727815aSebastian Redl EXPR_CXX_UNARY_TYPE_TRAIT, // UnaryTypeTraitExpr 1165552622067dc45013d240f73952fece703f5e63bdJohn Wiegley EXPR_CXX_EXPRESSION_TRAIT, // ExpressionTraitExpr 11667cd7d1ad33fdf49eef83942e8855fe20d95aa1b9John McCall EXPR_CXX_NOEXCEPT, // CXXNoexceptExpr 11677cd7d1ad33fdf49eef83942e8855fe20d95aa1b9John McCall 11686ad6f2848d7652ab2991286eb48be440d3493b28Francois Pichet EXPR_OPAQUE_VALUE, // OpaqueValueExpr 116956ca35d396d8692c384c785f9aeebcf22563fe1eJohn McCall EXPR_BINARY_CONDITIONAL_OPERATOR, // BinaryConditionalOperator 1170be230c36e32142cbdcdbe9c97511d097beeecbabDouglas Gregor EXPR_BINARY_TYPE_TRAIT, // BinaryTypeTraitExpr 11714ca8ac2e61c37ddadf37024af86f3e1019af8532Douglas Gregor EXPR_TYPE_TRAIT, // TypeTraitExpr 117221ff2e516b0e0bc8c1dbf965cb3d44bac3c64330John Wiegley EXPR_ARRAY_TYPE_TRAIT, // ArrayTypeTraitIntExpr 1173be230c36e32142cbdcdbe9c97511d097beeecbabDouglas Gregor 1174ee8aff06f6a96214731de17b2cb6df407c6c1820Douglas Gregor EXPR_PACK_EXPANSION, // PackExpansionExpr 1175c7793c73ba8a343de3f2552d984851985a46f159Douglas Gregor EXPR_SIZEOF_PACK, // SizeOfPackExpr 11767110fd6c32306b3feb97b9edb8064b1b68a54e6bJohn McCall EXPR_SUBST_NON_TYPE_TEMPLATE_PARM, // SubstNonTypeTemplateParmExpr 1177e08ce650a2b02410eddd1f60a4aa6b3d4be71e73Peter Collingbourne EXPR_SUBST_NON_TYPE_TEMPLATE_PARM_PACK,// SubstNonTypeTemplateParmPackExpr 117803e80030515c800d1ab44125b9052dfffd1bd04cDouglas Gregor EXPR_MATERIALIZE_TEMPORARY, // MaterializeTemporaryExpr 117903e80030515c800d1ab44125b9052dfffd1bd04cDouglas Gregor 1180e08ce650a2b02410eddd1f60a4aa6b3d4be71e73Peter Collingbourne // CUDA 1181f85e193739c953358c865005855253af4f68a497John McCall EXPR_CUDA_KERNEL_CALL, // CUDAKernelCallExpr 1182e08ce650a2b02410eddd1f60a4aa6b3d4be71e73Peter Collingbourne 118361eee0ca33b29e102f11bab77c8b74cc00e2392bTanya Lattner // OpenCL 1184f85e193739c953358c865005855253af4f68a497John McCall EXPR_ASTYPE, // AsTypeExpr 11857110fd6c32306b3feb97b9edb8064b1b68a54e6bJohn McCall 11867110fd6c32306b3feb97b9edb8064b1b68a54e6bJohn McCall // Microsoft 11877110fd6c32306b3feb97b9edb8064b1b68a54e6bJohn McCall EXPR_CXX_UUIDOF_EXPR, // CXXUuidofExpr (of expr). 11887110fd6c32306b3feb97b9edb8064b1b68a54e6bJohn McCall EXPR_CXX_UUIDOF_TYPE, // CXXUuidofExpr (of type). 11897110fd6c32306b3feb97b9edb8064b1b68a54e6bJohn McCall STMT_SEH_EXCEPT, // SEHExceptStmt 11907110fd6c32306b3feb97b9edb8064b1b68a54e6bJohn McCall STMT_SEH_FINALLY, // SEHFinallyStmt 11917110fd6c32306b3feb97b9edb8064b1b68a54e6bJohn McCall STMT_SEH_TRY, // SEHTryStmt 1192f85e193739c953358c865005855253af4f68a497John McCall 1193f85e193739c953358c865005855253af4f68a497John McCall // ARC 1194ba0513de93d2fab6db5ab30b6927209fcc883078Douglas Gregor EXPR_OBJC_BRIDGED_CAST, // ObjCBridgedCastExpr 1195ba0513de93d2fab6db5ab30b6927209fcc883078Douglas Gregor 11969d36f5dc4121f0f931211ea2d0a74d299eb82b23Douglas Gregor STMT_MS_DEPENDENT_EXISTS, // MSDependentExistsStmt 11979d36f5dc4121f0f931211ea2d0a74d299eb82b23Douglas Gregor EXPR_LAMBDA // LambdaExpr 11980b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor }; 1199d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor 1200d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief The kinds of designators that can occur in a 1201d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// DesignatedInitExpr. 1202d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor enum DesignatorTypes { 1203d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief Field designator where only the field name is known. 1204d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor DESIG_FIELD_NAME = 0, 1205d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief Field designator where the field has been resolved to 1206d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// a declaration. 1207d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor DESIG_FIELD_DECL = 1, 1208d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief Array designator. 1209d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor DESIG_ARRAY = 2, 1210d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief GNU array range designator. 1211d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor DESIG_ARRAY_RANGE = 3 1212d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor }; 1213d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor 1214156b640c67300f2b70eb11102aa393a610798cc6Sean Hunt /// \brief The different kinds of data that can occur in a 1215156b640c67300f2b70eb11102aa393a610798cc6Sean Hunt /// CtorInitializer. 1216156b640c67300f2b70eb11102aa393a610798cc6Sean Hunt enum CtorInitializerType { 1217156b640c67300f2b70eb11102aa393a610798cc6Sean Hunt CTOR_INITIALIZER_BASE, 1218156b640c67300f2b70eb11102aa393a610798cc6Sean Hunt CTOR_INITIALIZER_DELEGATING, 1219156b640c67300f2b70eb11102aa393a610798cc6Sean Hunt CTOR_INITIALIZER_MEMBER, 1220156b640c67300f2b70eb11102aa393a610798cc6Sean Hunt CTOR_INITIALIZER_INDIRECT_MEMBER 1221156b640c67300f2b70eb11102aa393a610798cc6Sean Hunt }; 1222156b640c67300f2b70eb11102aa393a610798cc6Sean Hunt 1223a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor /// \brief Describes the redeclarations of a declaration. 1224a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor struct LocalRedeclarationsInfo { 1225a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor DeclID FirstID; // The ID of the first declaration 12262171bf1caba4d4b9eeb6a91efac4300b41f38b07Douglas Gregor unsigned Offset; // Offset into the array of redeclaration chains. 1227a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor 1228a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor friend bool operator<(const LocalRedeclarationsInfo &X, 1229a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor const LocalRedeclarationsInfo &Y) { 1230a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor return X.FirstID < Y.FirstID; 1231a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor } 1232a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor 1233a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor friend bool operator>(const LocalRedeclarationsInfo &X, 1234a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor const LocalRedeclarationsInfo &Y) { 1235a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor return X.FirstID > Y.FirstID; 1236a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor } 1237a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor 1238a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor friend bool operator<=(const LocalRedeclarationsInfo &X, 1239a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor const LocalRedeclarationsInfo &Y) { 1240a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor return X.FirstID <= Y.FirstID; 1241a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor } 1242a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor 1243a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor friend bool operator>=(const LocalRedeclarationsInfo &X, 1244a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor const LocalRedeclarationsInfo &Y) { 1245a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor return X.FirstID >= Y.FirstID; 1246a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor } 1247a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor }; 1248a1be278c4f3a234ff61f04018d26c6beecde1654Douglas Gregor 1249cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor /// \brief Describes the categories of an Objective-C class. 1250cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor struct ObjCCategoriesInfo { 1251cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor DeclID DefinitionID; // The ID of the definition 1252cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor unsigned Offset; // Offset into the array of category lists. 1253cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor 1254cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor friend bool operator<(const ObjCCategoriesInfo &X, 1255cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor const ObjCCategoriesInfo &Y) { 1256cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor return X.DefinitionID < Y.DefinitionID; 1257cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor } 1258cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor 1259cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor friend bool operator>(const ObjCCategoriesInfo &X, 1260cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor const ObjCCategoriesInfo &Y) { 1261cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor return X.DefinitionID > Y.DefinitionID; 1262cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor } 1263cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor 1264cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor friend bool operator<=(const ObjCCategoriesInfo &X, 1265cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor const ObjCCategoriesInfo &Y) { 1266cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor return X.DefinitionID <= Y.DefinitionID; 1267cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor } 1268cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor 1269cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor friend bool operator>=(const ObjCCategoriesInfo &X, 1270cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor const ObjCCategoriesInfo &Y) { 1271cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor return X.DefinitionID >= Y.DefinitionID; 1272cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor } 1273cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor }; 1274cff9f26ce0ed76d555cd33b3dca84dd5cdf376afDouglas Gregor 127514f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// @} 12762cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor } 12772cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor} // end namespace clang 12782cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 12792cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#endif 1280