ASTBitCodes.h revision 0cef483f3b9d6a7f9fdbc5910d0a3ed64130e8e1
12cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor//===- PCHBitCodes.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// 102cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor// This header defines Bitcode enum values for Clang precompiled header 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 202cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#include "llvm/Bitcode/BitCodes.h" 219f8eb2032030482b1d3de86e9bee725d93564302Chandler Carruth#include "llvm/System/DataTypes.h" 222cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 232cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregornamespace clang { 242cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor namespace pch { 25ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// \brief PCH major version number supported by this version of 26ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// Clang. 27ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// 28ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// Whenever the PCH format changes in a way that makes it 29ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// incompatible with previous versions (such that a reader 30ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// designed for the previous version could not support reading 31ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// the new version), this number should be increased. 32445e23e9b909ec8e21303c7dd82c90b72fc09ac4Douglas Gregor /// 335b4ec636637c9d876102240127cc0dca9280e83aTed Kremenek /// Version 3 of PCH files also requires that the version control branch and 34445e23e9b909ec8e21303c7dd82c90b72fc09ac4Douglas Gregor /// revision match exactly, since there is no backward compatibility of 35445e23e9b909ec8e21303c7dd82c90b72fc09ac4Douglas Gregor /// PCH files at this time. 36445e23e9b909ec8e21303c7dd82c90b72fc09ac4Douglas Gregor const unsigned VERSION_MAJOR = 3; 37ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor 38ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// \brief PCH minor version number supported by this version of 39ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// Clang. 40ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// 41ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// Whenever the PCH format changes in a way that is still 42ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// compatible with previous versions (such that a reader designed 43ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// for the previous version could still support reading the new 44ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// version by ignoring new kinds of subblocks), this number 45ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// should be increased. 46ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor const unsigned VERSION_MINOR = 0; 47ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor 488038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// \brief An ID number that refers to a declaration in a PCH file. 498038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// 508038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// The ID numbers of types are consecutive (in order of 518038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// discovery) and start at 2. 0 is reserved for NULL, and 1 is 528038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// reserved for the translation unit declaration. 538038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor typedef uint32_t DeclID; 548038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor 558038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// \brief An ID number that refers to a type in a PCH file. 568038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// 578038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// The ID of a type is partitioned into two parts: the lower 588038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// three bits are used to store the const/volatile/restrict 598038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// qualifiers (as with QualType) and the upper bits provide a 608038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// type index. The type index values are partitioned into two 618038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// sets. The values below NUM_PREDEF_TYPE_IDs are predefined type 628038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// IDs (based on the PREDEF_TYPE_*_ID constants), with 0 as a 638038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// placeholder for "no type". Values from NUM_PREDEF_TYPE_IDs are 648038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// other types that have serialized representations. 658038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor typedef uint32_t TypeID; 662cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 67afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// \brief An ID number that refers to an identifier in a PCH 68afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// file. 69afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor typedef uint32_t IdentID; 70afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor 7190cd1bb1baac2a0221f3642de0cbea3244b116e5Steve Naroff typedef uint32_t SelectorID; 721eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 732cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief Describes the various kinds of blocks that occur within 742cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// a PCH file. 752cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor enum BlockIDs { 762cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The PCH block, which acts as a container around the 772cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// full PCH block. 782cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PCH_BLOCK_ID = llvm::bitc::FIRST_APPLICATION_BLOCKID, 7914f79002e58556798e86168c63e48d533287eda5Douglas Gregor 8014f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief The block containing information about the source 8114f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// manager. 8214f79002e58556798e86168c63e48d533287eda5Douglas Gregor SOURCE_MANAGER_BLOCK_ID, 8314f79002e58556798e86168c63e48d533287eda5Douglas Gregor 8414f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief The block containing information about the 8514f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// preprocessor. 8614f79002e58556798e86168c63e48d533287eda5Douglas Gregor PREPROCESSOR_BLOCK_ID, 8714f79002e58556798e86168c63e48d533287eda5Douglas Gregor 882cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The block containing the definitions of all of the 8961d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// types and decls used within the PCH file. 9061d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor DECLTYPES_BLOCK_ID 918038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor }; 922cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 938038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// \brief Record types that occur within the PCH block itself. 948038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor enum PCHRecordTypes { 9561d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// \brief Record code for the offsets of each type. 962cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 978038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// The TYPE_OFFSET constant describes the record that occurs 9861d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// within the PCH block. The record itself is an array of offsets that 9961d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// point into the declarations and types block (identified by 10061d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// DECLTYPES_BLOCK_ID). The index into the array is based on the ID 1018038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// of a type. For a given type ID @c T, the lower three bits of 1028038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// @c T are its qualifiers (const, volatile, restrict), as in 1038038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// the QualType class. The upper bits, after being shifted and 1048038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// subtracting NUM_PREDEF_TYPE_IDS, are used to index into the 1058038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// TYPE_OFFSET block to determine the offset of that type's 10661d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// corresponding record within the DECLTYPES_BLOCK_ID block. 1078038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor TYPE_OFFSET = 1, 1081eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 1098038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// \brief Record code for the offsets of each decl. 1108038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// 1118038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// The DECL_OFFSET constant describes the record that occurs 11261d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// within the block identified by DECL_OFFSETS_BLOCK_ID within 11361d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// the PCH block. The record itself is an array of offsets that 11461d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// point into the declarations and types block (identified by 11561d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// DECLTYPES_BLOCK_ID). The declaration ID is an index into this 1168038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// record, after subtracting one to account for the use of 1178038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// declaration ID 0 for a NULL declaration pointer. Index 0 is 1188038d5182b72dcdef292f6fb8539ad77f338855aDouglas Gregor /// reserved for the translation unit declaration. 1190a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor DECL_OFFSET = 2, 1200a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor 1210a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// \brief Record code for the language options table. 1220a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// 1230a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// The record with this code contains the contents of the 1240a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// LangOptions structure. We serialize the entire contents of 1250a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// the structure, and let the reader decide which options are 1260a0428e96c6f1e8bef7a481a9eb69a6f6df38951Douglas Gregor /// actually important to check. 1272bec0410d268779f601bd509e0302a500af7ac6aDouglas Gregor LANGUAGE_OPTIONS = 3, 1282bec0410d268779f601bd509e0302a500af7ac6aDouglas Gregor 129ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// \brief PCH metadata, including the PCH file version number 130ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor /// and the target triple used to build the PCH file. 131ab41e63821dc60ad144d0684df8d79a9eef86b75Douglas Gregor METADATA = 4, 132afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor 133afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// \brief Record code for the table of offsets of each 134afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// identifier ID. 135afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// 136afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// The offset table contains offsets into the blob stored in 137afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// the IDENTIFIER_TABLE record. Each offset points to the 138afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// NULL-terminated string that corresponds to that identifier. 139afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor IDENTIFIER_OFFSET = 5, 140afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor 141afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// \brief Record code for the identifier table. 142afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// 143afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// The identifier table is a simple blob that contains 144afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// NULL-terminated strings for all of the identifiers 145afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// referenced by the PCH file. The IDENTIFIER_OFFSET table 146afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// contains the mapping from identifier IDs to the characters 147afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// in this blob. Note that the starting offsets of all of the 148afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// identifiers are odd, so that, when the identifier offset 149afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// table is loaded in, we can use the low bit to distinguish 150afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// between offsets (for unresolved identifier IDs) and 151afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// IdentifierInfo pointers (for already-resolved identifier 152afaf308b779cd8e8fc8c42601b9f383423c15c2dDouglas Gregor /// IDs). 153fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor IDENTIFIER_TABLE = 6, 154fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor 155fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// \brief Record code for the array of external definitions. 156fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// 1574c0e86b392c5fb0cb771551fc877edb6979be69cDouglas Gregor /// The PCH file contains a list of all of the unnamed external 158fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// definitions present within the parsed headers, stored as an 159fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// array of declaration IDs. These external definitions will be 160fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// reported to the AST consumer after the PCH file has been 161fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// read, since their presence can affect the semantics of the 162fdd0172ca1b3c837f8c2b37d69cc2085234e09faDouglas Gregor /// program (e.g., for code generation). 1633e1af84bb0092a1aafb49deaa4ab6664c9a9071bDouglas Gregor EXTERNAL_DEFINITIONS = 7, 1643e1af84bb0092a1aafb49deaa4ab6664c9a9071bDouglas Gregor 165ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// \brief Record code for the set of non-builtin, special 166ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// types. 167ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// 168ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// This record contains the type IDs for the various type nodes 169ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// that are constructed during semantic analysis (e.g., 170ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// __builtin_va_list). The SPECIAL_TYPE_* constants provide 171ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// offsets into this record. 172ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor SPECIAL_TYPES = 8, 173ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor 1744c0e86b392c5fb0cb771551fc877edb6979be69cDouglas Gregor /// \brief Record code for the extra statistics we gather while 1754c0e86b392c5fb0cb771551fc877edb6979be69cDouglas Gregor /// generating a PCH file. 1764c0e86b392c5fb0cb771551fc877edb6979be69cDouglas Gregor STATISTICS = 9, 1774c0e86b392c5fb0cb771551fc877edb6979be69cDouglas Gregor 1784c0e86b392c5fb0cb771551fc877edb6979be69cDouglas Gregor /// \brief Record code for the array of tentative definitions. 17914c22f20c077cecd68581952a0c227f8c180be03Douglas Gregor TENTATIVE_DEFINITIONS = 10, 18014c22f20c077cecd68581952a0c227f8c180be03Douglas Gregor 18114c22f20c077cecd68581952a0c227f8c180be03Douglas Gregor /// \brief Record code for the array of locally-scoped external 18214c22f20c077cecd68581952a0c227f8c180be03Douglas Gregor /// declarations. 18390cd1bb1baac2a0221f3642de0cbea3244b116e5Steve Naroff LOCALLY_SCOPED_EXTERNAL_DECLS = 11, 1841eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 18583941df2745d69c05acee3174c7a265c206f70d9Douglas Gregor /// \brief Record code for the table of offsets into the 18683941df2745d69c05acee3174c7a265c206f70d9Douglas Gregor /// Objective-C method pool. 18783941df2745d69c05acee3174c7a265c206f70d9Douglas Gregor SELECTOR_OFFSETS = 12, 188f0aaf7a59729a4ae0146e3464ee987745be95829Douglas Gregor 189f0aaf7a59729a4ae0146e3464ee987745be95829Douglas Gregor /// \brief Record code for the Objective-C method pool, 1902eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor METHOD_POOL = 13, 1912eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor 1922eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor /// \brief The value of the next __COUNTER__ to dispense. 1932eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor /// [PP_COUNTER_VALUE, Val] 1947f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor PP_COUNTER_VALUE = 14, 1957f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor 1967f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// \brief Record code for the table of offsets into the block 1977f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// of source-location information. 1987f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor SOURCE_LOCATION_OFFSETS = 15, 1997f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor 2007f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// \brief Record code for the set of source location entries 2017f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// that need to be preloaded by the PCH reader. 2027f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// 2037f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// This set contains the source location entry for the 2047f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// predefines buffer and for any file entries that need to be 2057f94b0b0c6791013d2f72ced9b4bedd3b23673a6Douglas Gregor /// preloaded. 2064fed3f47f6b9e31d603c5c2d1f6d8ec2e1241e57Douglas Gregor SOURCE_LOCATION_PRELOADS = 16, 2074fed3f47f6b9e31d603c5c2d1f6d8ec2e1241e57Douglas Gregor 2084fed3f47f6b9e31d603c5c2d1f6d8ec2e1241e57Douglas Gregor /// \brief Record code for the stat() cache. 209b81c17092039f39be60e9656a37cffbdf2e2c783Douglas Gregor STAT_CACHE = 17, 210b81c17092039f39be60e9656a37cffbdf2e2c783Douglas Gregor 211b81c17092039f39be60e9656a37cffbdf2e2c783Douglas Gregor /// \brief Record code for the set of ext_vector type names. 212b81c17092039f39be60e9656a37cffbdf2e2c783Douglas Gregor EXT_VECTOR_DECLS = 18, 213b81c17092039f39be60e9656a37cffbdf2e2c783Douglas Gregor 214b64c19365deab788753d29c9bc881253c3f16f37Douglas Gregor /// \brief Record code for the original file that was used to 215b64c19365deab788753d29c9bc881253c3f16f37Douglas Gregor /// generate the precompiled header. 2161cb35dd4840d21cec58648361180d5688446a9caArgyrios Kyrtzidis ORIGINAL_FILE_NAME = 19, 2171eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 2182e22253e03e175144aeb9d13350a12fd83f858beDouglas Gregor /// \brief Record code for the sorted array of source ranges where 2192e22253e03e175144aeb9d13350a12fd83f858beDouglas Gregor /// comments were encountered in the source code. 220445e23e9b909ec8e21303c7dd82c90b72fc09ac4Douglas Gregor COMMENT_RANGES = 20, 221445e23e9b909ec8e21303c7dd82c90b72fc09ac4Douglas Gregor 2225b4ec636637c9d876102240127cc0dca9280e83aTed Kremenek /// \brief Record code for the version control branch and revision 2235b4ec636637c9d876102240127cc0dca9280e83aTed Kremenek /// information of the compiler used to build this PCH file. 224e6bbc01d1c4ec5241df36042e0a4a12a6711934bTanya Lattner VERSION_CONTROL_BRANCH_REVISION = 21, 225e6bbc01d1c4ec5241df36042e0a4a12a6711934bTanya Lattner 226e6bbc01d1c4ec5241df36042e0a4a12a6711934bTanya Lattner /// \brief Record code for the array of unused static functions. 227e6bbc01d1c4ec5241df36042e0a4a12a6711934bTanya Lattner UNUSED_STATIC_FUNCS = 22 228e6bbc01d1c4ec5241df36042e0a4a12a6711934bTanya Lattner 2292cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor }; 2302cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 23114f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief Record types used within a source manager block. 23214f79002e58556798e86168c63e48d533287eda5Douglas Gregor enum SourceManagerRecordTypes { 23314f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief Describes a source location entry (SLocEntry) for a 23414f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// file. 23514f79002e58556798e86168c63e48d533287eda5Douglas Gregor SM_SLOC_FILE_ENTRY = 1, 23614f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief Describes a source location entry (SLocEntry) for a 23714f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// buffer. 23814f79002e58556798e86168c63e48d533287eda5Douglas Gregor SM_SLOC_BUFFER_ENTRY = 2, 23914f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief Describes a blob that contains the data for a buffer 24014f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// entry. This kind of record always directly follows a 24114f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// SM_SLOC_BUFFER_ENTRY record. 24214f79002e58556798e86168c63e48d533287eda5Douglas Gregor SM_SLOC_BUFFER_BLOB = 3, 24314f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \brief Describes a source location entry (SLocEntry) for a 24414f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// macro instantiation. 245bd94500d3aa60092fb0f1e90f53fb0d03fa502a8Douglas Gregor SM_SLOC_INSTANTIATION_ENTRY = 4, 246bd94500d3aa60092fb0f1e90f53fb0d03fa502a8Douglas Gregor /// \brief Describes the SourceManager's line table, with 247bd94500d3aa60092fb0f1e90f53fb0d03fa502a8Douglas Gregor /// information about #line directives. 2482eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor SM_LINE_TABLE = 5, 2492eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor /// \brief Describes one header file info [isImport, DirInfo, NumIncludes] 2502eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor /// ControllingMacro is optional. 2512eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor SM_HEADER_FILE_INFO = 6 25214f79002e58556798e86168c63e48d533287eda5Douglas Gregor }; 2531eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 2547c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// \brief Record types used within a preprocessor block. 2557c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner enum PreprocessorRecordTypes { 2567c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner // The macros in the PP section are a PP_MACRO_* instance followed by a 2577c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner // list of PP_TOKEN instances for each token in the definition. 2587c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner 2597c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// \brief An object-like macro definition. 2607c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// [PP_MACRO_OBJECT_LIKE, IdentInfoID, SLoc, IsUsed] 2617c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner PP_MACRO_OBJECT_LIKE = 1, 2627c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner 2637c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// \brief A function-like macro definition. 2647c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// [PP_MACRO_FUNCTION_LIKE, <ObjectLikeStuff>, IsC99Varargs, IsGNUVarars, 2657c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// NumArgs, ArgIdentInfoID* ] 2667c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner PP_MACRO_FUNCTION_LIKE = 2, 2671eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 2687c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner /// \brief Describes one token. 269c1f9d828c733ec1eba06d01070735d1f36fda733Chris Lattner /// [PP_TOKEN, SLoc, Length, IdentInfoID, Kind, Flags] 2702eafc1b56347f772729e082e6bac824b0ef1b585Douglas Gregor PP_TOKEN = 3 2717c5d24efcd2e505b5739f7def08dfe25ce59a1b2Chris Lattner }; 27214f79002e58556798e86168c63e48d533287eda5Douglas Gregor 27314f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// \defgroup PCHAST Precompiled header AST constants 27414f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// 27514f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// The constants in this group describe various components of the 27614f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// abstract syntax tree within a precompiled header. 27714f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// 27814f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// @{ 27914f79002e58556798e86168c63e48d533287eda5Douglas Gregor 2802cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief Predefined type IDs. 2812cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 2822cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// These type IDs correspond to predefined types in the AST 2832cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// context, such as built-in types (int) and special place-holder 2842cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// types (the <overload> and <dependent> type markers). Such 2852cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// types are never actually serialized, since they will be built 2862cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// by the AST context when it is created. 2872cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor enum PredefinedTypeIDs { 2882cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The NULL type. 2892cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_NULL_ID = 0, 2902cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The void type. 2912cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_VOID_ID = 1, 2922cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'bool' or '_Bool' type. 2932cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_BOOL_ID = 2, 2942cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'char' type, when it is unsigned. 2952cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_CHAR_U_ID = 3, 2962cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'unsigned char' type. 2972cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_UCHAR_ID = 4, 2982cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'unsigned short' type. 2992cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_USHORT_ID = 5, 3002cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'unsigned int' type. 3012cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_UINT_ID = 6, 3022cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'unsigned long' type. 3032cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_ULONG_ID = 7, 3042cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'unsigned long long' type. 3052cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_ULONGLONG_ID = 8, 3062cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'char' type, when it is signed. 3072cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_CHAR_S_ID = 9, 3082cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'signed char' type. 3092cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_SCHAR_ID = 10, 3102cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The C++ 'wchar_t' type. 3112cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_WCHAR_ID = 11, 3122cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The (signed) 'short' type. 3132cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_SHORT_ID = 12, 3142cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The (signed) 'int' type. 3152cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_INT_ID = 13, 3162cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The (signed) 'long' type. 3172cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_LONG_ID = 14, 3182cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The (signed) 'long long' type. 3192cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_LONGLONG_ID = 15, 3202cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'float' type. 3212cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_FLOAT_ID = 16, 3222cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'double' type. 3232cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_DOUBLE_ID = 17, 3242cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The 'long double' type. 3252cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_LONGDOUBLE_ID = 18, 3262cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The placeholder type for overloaded function sets. 3272cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor PREDEF_TYPE_OVERLOAD_ID = 19, 3282cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The placeholder type for dependent types. 3292df9ced9fd1e8c7d7b38443db07e0e811de22571Chris Lattner PREDEF_TYPE_DEPENDENT_ID = 20, 3302df9ced9fd1e8c7d7b38443db07e0e811de22571Chris Lattner /// \brief The '__uint128_t' type. 3312df9ced9fd1e8c7d7b38443db07e0e811de22571Chris Lattner PREDEF_TYPE_UINT128_ID = 21, 3322df9ced9fd1e8c7d7b38443db07e0e811de22571Chris Lattner /// \brief The '__int128_t' type. 3336e8ed16ffef02b82995a90bdcf10ffff7d63839aSebastian Redl PREDEF_TYPE_INT128_ID = 22, 3346e8ed16ffef02b82995a90bdcf10ffff7d63839aSebastian Redl /// \brief The type of 'nullptr'. 335f5c209d23b20ada4a9b6235db50317239cbf6ae1Alisdair Meredith PREDEF_TYPE_NULLPTR_ID = 23, 336f5c209d23b20ada4a9b6235db50317239cbf6ae1Alisdair Meredith /// \brief The C++ 'char16_t' type. 337f5c209d23b20ada4a9b6235db50317239cbf6ae1Alisdair Meredith PREDEF_TYPE_CHAR16_ID = 24, 338f5c209d23b20ada4a9b6235db50317239cbf6ae1Alisdair Meredith /// \brief The C++ 'char32_t' type. 339de2e22d33afec98324a66a358dfe0951b3c7259aSteve Naroff PREDEF_TYPE_CHAR32_ID = 25, 340de2e22d33afec98324a66a358dfe0951b3c7259aSteve Naroff /// \brief The ObjC 'id' type. 341de2e22d33afec98324a66a358dfe0951b3c7259aSteve Naroff PREDEF_TYPE_OBJC_ID = 26, 342de2e22d33afec98324a66a358dfe0951b3c7259aSteve Naroff /// \brief The ObjC 'Class' type. 34313dcd00615de5c4279d97bdf63cd5f0a14fd9dccFariborz Jahanian PREDEF_TYPE_OBJC_CLASS = 27, 34413dcd00615de5c4279d97bdf63cd5f0a14fd9dccFariborz Jahanian /// \brief The ObjC 'SEL' type. 34513dcd00615de5c4279d97bdf63cd5f0a14fd9dccFariborz Jahanian PREDEF_TYPE_OBJC_SEL = 28 3462cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor }; 3472cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 3482cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief The number of predefined type IDs that are reserved for 3492cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// the PREDEF_TYPE_* constants. 3502cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 3512cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// Type IDs for non-predefined types will start at 3522cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// NUM_PREDEF_TYPE_IDs. 3532cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor const unsigned NUM_PREDEF_TYPE_IDS = 100; 3542cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 3552cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief Record codes for each kind of type. 3562cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 35761d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// These constants describe the type records that can occur within a 35861d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// block identified by DECLTYPES_BLOCK_ID in the PCH file. Each 3592cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// constant describes a record for a specific type class in the 3602cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// AST. 3612cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor enum TypeCode { 3622cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An ExtQualType record. 36363f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_EXT_QUAL = 1, 3642cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A ComplexType record. 36563f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_COMPLEX = 3, 3662cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A PointerType record. 36763f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_POINTER = 4, 3682cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A BlockPointerType record. 36963f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_BLOCK_POINTER = 5, 3702cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An LValueReferenceType record. 37163f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_LVALUE_REFERENCE = 6, 3722cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An RValueReferenceType record. 37363f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_RVALUE_REFERENCE = 7, 3742cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A MemberPointerType record. 37563f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_MEMBER_POINTER = 8, 3762cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A ConstantArrayType record. 37763f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_CONSTANT_ARRAY = 9, 3782cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An IncompleteArrayType record. 37963f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_INCOMPLETE_ARRAY = 10, 3802cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A VariableArrayType record. 38163f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_VARIABLE_ARRAY = 11, 3822cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A VectorType record. 38363f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_VECTOR = 12, 3842cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An ExtVectorType record. 38563f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_EXT_VECTOR = 13, 3862cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A FunctionNoProtoType record. 38763f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_FUNCTION_NO_PROTO = 14, 3882cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A FunctionProtoType record. 38963f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_FUNCTION_PROTO = 15, 3902cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A TypedefType record. 39163f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_TYPEDEF = 16, 3922cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A TypeOfExprType record. 39363f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_TYPEOF_EXPR = 17, 3942cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A TypeOfType record. 39563f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_TYPEOF = 18, 3962cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A RecordType record. 39763f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_RECORD = 19, 3982cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An EnumType record. 39963f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_ENUM = 20, 4002cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief An ObjCInterfaceType record. 40163f5c2646e75041277657aa1392a5bdd643367a7Douglas Gregor TYPE_OBJC_INTERFACE = 21, 402d1b3c2dd5bc1f3103bee6137957aa7c5f8f2f0bcSteve Naroff /// \brief An ObjCObjectPointerType record. 403c15cb2af27514ecc879daba9aa01389c5203685dSteve Naroff TYPE_OBJC_OBJECT_POINTER = 22, 404395b475a4474f1c7574d927ad142ca0c7997cbcaAnders Carlsson /// \brief a DecltypeType record. 40554e14c4db764c0636160d26c5bbf491637c83a76John McCall TYPE_DECLTYPE = 23, 4067da2431c23ef1ee8acb114e39692246e1801afc2John McCall /// \brief An ElaboratedType record. 40754e14c4db764c0636160d26c5bbf491637c83a76John McCall TYPE_ELABORATED = 24, 40849a832bd499d6f61c23655f1fac99f0dd229756eJohn McCall /// \brief A SubstTemplateTypeParmType record. 409ed97649e9574b9d854fa4d6109c9333ae0993554John McCall TYPE_SUBST_TEMPLATE_TYPE_PARM = 25, 410ed97649e9574b9d854fa4d6109c9333ae0993554John McCall /// \brief An UnresolvedUsingType record. 411ed97649e9574b9d854fa4d6109c9333ae0993554John McCall TYPE_UNRESOLVED_USING = 26 4122cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor }; 4132cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 414ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// \brief The type IDs for special types constructed by semantic 415ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// analysis. 416ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// 417ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// The constants in this enumeration are indices into the 418ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// SPECIAL_TYPES record. 419ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor enum SpecialTypeIDs { 420ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor /// \brief __builtin_va_list 421319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor SPECIAL_TYPE_BUILTIN_VA_LIST = 0, 422319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor /// \brief Objective-C "id" type 423319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor SPECIAL_TYPE_OBJC_ID = 1, 424319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor /// \brief Objective-C selector type 425319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor SPECIAL_TYPE_OBJC_SELECTOR = 2, 426319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor /// \brief Objective-C Protocol type 427319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor SPECIAL_TYPE_OBJC_PROTOCOL = 3, 428319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor /// \brief Objective-C Class type 429319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor SPECIAL_TYPE_OBJC_CLASS = 4, 430319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor /// \brief CFConstantString type 431319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor SPECIAL_TYPE_CF_CONSTANT_STRING = 5, 432319ac896a0fef7365d5589b8021db7e41207fe42Douglas Gregor /// \brief Objective-C fast enumeration state type 433c29f77b769bcc5b6dc85e72c8e3cc2e348e5cf25Douglas Gregor SPECIAL_TYPE_OBJC_FAST_ENUMERATION_STATE = 6, 434c29f77b769bcc5b6dc85e72c8e3cc2e348e5cf25Douglas Gregor /// \brief C FILE typedef type 435782fa308a765aeac2acb39c4e697c937ec21185bMike Stump SPECIAL_TYPE_FILE = 7, 436782fa308a765aeac2acb39c4e697c937ec21185bMike Stump /// \brief C jmp_buf typedef type 437782fa308a765aeac2acb39c4e697c937ec21185bMike Stump SPECIAL_TYPE_jmp_buf = 8, 438782fa308a765aeac2acb39c4e697c937ec21185bMike Stump /// \brief C sigjmp_buf typedef type 439d1571acc700b652a52c766e36a6c688d9bf6f3a1Douglas Gregor SPECIAL_TYPE_sigjmp_buf = 9, 440d1571acc700b652a52c766e36a6c688d9bf6f3a1Douglas Gregor /// \brief Objective-C "id" redefinition type 441d1571acc700b652a52c766e36a6c688d9bf6f3a1Douglas Gregor SPECIAL_TYPE_OBJC_ID_REDEFINITION = 10, 442d1571acc700b652a52c766e36a6c688d9bf6f3a1Douglas Gregor /// \brief Objective-C "Class" redefinition type 443adaaad3715c9c26cdcfdfe3401a13d7b4423ddcfMike Stump SPECIAL_TYPE_OBJC_CLASS_REDEFINITION = 11, 444adaaad3715c9c26cdcfdfe3401a13d7b4423ddcfMike Stump /// \brief Block descriptor type for Blocks CodeGen 445083c25eea14bb4cc4ecc3ec763c60e2e609e22bdMike Stump SPECIAL_TYPE_BLOCK_DESCRIPTOR = 12, 446083c25eea14bb4cc4ecc3ec763c60e2e609e22bdMike Stump /// \brief Block extedned descriptor type for Blocks CodeGen 44713dcd00615de5c4279d97bdf63cd5f0a14fd9dccFariborz Jahanian SPECIAL_TYPE_BLOCK_EXTENDED_DESCRIPTOR = 13, 44813dcd00615de5c4279d97bdf63cd5f0a14fd9dccFariborz Jahanian /// \brief Objective-C "SEL" redefinition type 44913dcd00615de5c4279d97bdf63cd5f0a14fd9dccFariborz Jahanian SPECIAL_TYPE_OBJC_SEL_REDEFINITION = 14 450ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor }; 451ad1de006ea080b540e480efc6b86c2e201dbf1ecDouglas Gregor 4522cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief Record codes for each kind of declaration. 4532cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 45461d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// These constants describe the declaration records that can occur within 45561d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// a declarations block (identified by DECLS_BLOCK_ID). Each 4562cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// constant describes a record for a specific declaration class 4572cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// in the AST. 4582cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor enum DeclCode { 45968a2eb0cc76267ba0615992fb5e0977853c397b2Douglas Gregor /// \brief Attributes attached to a declaration. 46061d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor DECL_ATTR = 50, 4612cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A TranslationUnitDecl record. 46268a2eb0cc76267ba0615992fb5e0977853c397b2Douglas Gregor DECL_TRANSLATION_UNIT, 4632cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A TypedefDecl record. 4642cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor DECL_TYPEDEF, 4650a2b45e5885b6b8477b167042c0f6cd1d99a1f13Douglas Gregor /// \brief An EnumDecl record. 4660a2b45e5885b6b8477b167042c0f6cd1d99a1f13Douglas Gregor DECL_ENUM, 4678c70006581a9b9e9485570ca727a6c5f7be63521Douglas Gregor /// \brief A RecordDecl record. 4688c70006581a9b9e9485570ca727a6c5f7be63521Douglas Gregor DECL_RECORD, 4690a2b45e5885b6b8477b167042c0f6cd1d99a1f13Douglas Gregor /// \brief An EnumConstantDecl record. 4700a2b45e5885b6b8477b167042c0f6cd1d99a1f13Douglas Gregor DECL_ENUM_CONSTANT, 4713a2f7e42514ddbec983c61826ce85d3071e23e8eDouglas Gregor /// \brief A FunctionDecl record. 4723a2f7e42514ddbec983c61826ce85d3071e23e8eDouglas Gregor DECL_FUNCTION, 47353c9d8a4b8f0a76cb9dd2fdd8c433ccf110f2eecSteve Naroff /// \brief A ObjCMethodDecl record. 47453c9d8a4b8f0a76cb9dd2fdd8c433ccf110f2eecSteve Naroff DECL_OBJC_METHOD, 47533feeb019a5742b286eededd5446ec0fe87c5a61Steve Naroff /// \brief A ObjCInterfaceDecl record. 47630833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_INTERFACE, 47730833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCProtocolDecl record. 47830833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_PROTOCOL, 47933feeb019a5742b286eededd5446ec0fe87c5a61Steve Naroff /// \brief A ObjCIvarDecl record. 48030833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_IVAR, 48130833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCAtDefsFieldDecl record. 48230833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_AT_DEFS_FIELD, 48330833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCClassDecl record. 48430833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_CLASS, 48530833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCForwardProtocolDecl record. 48630833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_FORWARD_PROTOCOL, 48730833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCCategoryDecl record. 48830833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_CATEGORY, 48930833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCCategoryImplDecl record. 49030833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_CATEGORY_IMPL, 49130833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCImplementationDecl record. 49230833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_IMPLEMENTATION, 49330833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCCompatibleAliasDecl record. 49430833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_COMPATIBLE_ALIAS, 49530833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCPropertyDecl record. 49630833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_PROPERTY, 49730833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff /// \brief A ObjCPropertyImplDecl record. 49830833f8d77c08f8f16371776fde85a9fde3d9b6eSteve Naroff DECL_OBJC_PROPERTY_IMPL, 4998c70006581a9b9e9485570ca727a6c5f7be63521Douglas Gregor /// \brief A FieldDecl record. 5008c70006581a9b9e9485570ca727a6c5f7be63521Douglas Gregor DECL_FIELD, 5012cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A VarDecl record. 5022cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor DECL_VAR, 503405bad07391494d2eb025f8222c256c66b56e5f8Douglas Gregor /// \brief An ImplicitParamDecl record. 504405bad07391494d2eb025f8222c256c66b56e5f8Douglas Gregor DECL_IMPLICIT_PARAM, 5053a2f7e42514ddbec983c61826ce85d3071e23e8eDouglas Gregor /// \brief A ParmVarDecl record. 5063a2f7e42514ddbec983c61826ce85d3071e23e8eDouglas Gregor DECL_PARM_VAR, 5071028bc67d56ea088c3a57c4c44c3f6aeff60a031Douglas Gregor /// \brief A FileScopeAsmDecl record. 5081028bc67d56ea088c3a57c4c44c3f6aeff60a031Douglas Gregor DECL_FILE_SCOPE_ASM, 5091028bc67d56ea088c3a57c4c44c3f6aeff60a031Douglas Gregor /// \brief A BlockDecl record. 5101028bc67d56ea088c3a57c4c44c3f6aeff60a031Douglas Gregor DECL_BLOCK, 5112cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A record that stores the set of declarations that are 5122cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// lexically stored within a given DeclContext. 5132cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 5142cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// The record itself is an array of declaration IDs, in the 5152cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// order in which those declarations were added to the 5162cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// declaration context. This data is used when iterating over 5172cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// the contents of a DeclContext, e.g., via 5182cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// DeclContext::decls_begin()/DeclContext::decls_end(). 5192cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor DECL_CONTEXT_LEXICAL, 5202cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// \brief A record that stores the set of declarations that are 5212cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// visible from a given DeclContext. 5222cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// 5232cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// The record itself stores a set of mappings, each of which 5242cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// associates a declaration name with one or more declaration 5252cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// IDs. This data is used when performing qualified name lookup 5262cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor /// into a DeclContext via DeclContext::lookup. 5270cef483f3b9d6a7f9fdbc5910d0a3ed64130e8e1Douglas Gregor DECL_CONTEXT_VISIBLE, 5280cef483f3b9d6a7f9fdbc5910d0a3ed64130e8e1Douglas Gregor /// \brief A NamespaceDecl record. 5290cef483f3b9d6a7f9fdbc5910d0a3ed64130e8e1Douglas Gregor DECL_NAMESPACE 5302cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor }; 5310b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor 5320b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// \brief Record codes for each kind of statement or expression. 5330b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// 5340b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// These constants describe the records that describe statements 53561d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// or expressions. These records occur within type and declarations 53661d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// block, so they begin with record values of 100. Each constant 53761d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// describes a record for a specific statement or expression class in the 53861d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor /// AST. 5390b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor enum StmtCode { 540087fd536809ebe754d91c641a98917e02dd7452dDouglas Gregor /// \brief A marker record that indicates that we are at the end 541087fd536809ebe754d91c641a98917e02dd7452dDouglas Gregor /// of an expression. 54261d60ee6aa0a5ded0ddcf48679673b37506a1895Douglas Gregor STMT_STOP = 100, 5430b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// \brief A NULL expression. 544c9490c000f515c29f200a1215328d8ab9a0f3818Douglas Gregor STMT_NULL_PTR, 545025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A NullStmt record. 546025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_NULL, 547025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A CompoundStmt record. 548025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_COMPOUND, 549025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A CaseStmt record. 550025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_CASE, 551025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A DefaultStmt record. 552025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_DEFAULT, 5531de05feeeafe5b215fe7617594a7076a5192a6e2Douglas Gregor /// \brief A LabelStmt record. 5541de05feeeafe5b215fe7617594a7076a5192a6e2Douglas Gregor STMT_LABEL, 555025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief An IfStmt record. 556025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_IF, 557025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A SwitchStmt record. 558025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_SWITCH, 559d921cf976b4769af8d06d6763a2547dadf7940abDouglas Gregor /// \brief A WhileStmt record. 560d921cf976b4769af8d06d6763a2547dadf7940abDouglas Gregor STMT_WHILE, 56167d8249924ef38a5375ff9c92cd21c1854d6ababDouglas Gregor /// \brief A DoStmt record. 56267d8249924ef38a5375ff9c92cd21c1854d6ababDouglas Gregor STMT_DO, 56367d8249924ef38a5375ff9c92cd21c1854d6ababDouglas Gregor /// \brief A ForStmt record. 56467d8249924ef38a5375ff9c92cd21c1854d6ababDouglas Gregor STMT_FOR, 5651de05feeeafe5b215fe7617594a7076a5192a6e2Douglas Gregor /// \brief A GotoStmt record. 5661de05feeeafe5b215fe7617594a7076a5192a6e2Douglas Gregor STMT_GOTO, 5677d5c2f241c74e5f8d9ec492e8f9f268e5e9ae41fDouglas Gregor /// \brief An IndirectGotoStmt record. 5687d5c2f241c74e5f8d9ec492e8f9f268e5e9ae41fDouglas Gregor STMT_INDIRECT_GOTO, 569d921cf976b4769af8d06d6763a2547dadf7940abDouglas Gregor /// \brief A ContinueStmt record. 570d921cf976b4769af8d06d6763a2547dadf7940abDouglas Gregor STMT_CONTINUE, 571025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor /// \brief A BreakStmt record. 572025452fa0eda63e150cfaeebe64f0a19c96b3a06Douglas Gregor STMT_BREAK, 5730de9d8857b715c2f45c987651f4ce06d73330d93Douglas Gregor /// \brief A ReturnStmt record. 5740de9d8857b715c2f45c987651f4ce06d73330d93Douglas Gregor STMT_RETURN, 57584f2170062014d268951902164bed0d8bdea0e82Douglas Gregor /// \brief A DeclStmt record. 57684f2170062014d268951902164bed0d8bdea0e82Douglas Gregor STMT_DECL, 577cd7d5a9dc558178ed7a66032f888781b3c592e4fDouglas Gregor /// \brief An AsmStmt record. 578cd7d5a9dc558178ed7a66032f888781b3c592e4fDouglas Gregor STMT_ASM, 57917fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor /// \brief A PredefinedExpr record. 58017fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor EXPR_PREDEFINED, 5810b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// \brief A DeclRefExpr record. 5820b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor EXPR_DECL_REF, 5830b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// \brief An IntegerLiteral record. 5840b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor EXPR_INTEGER_LITERAL, 58517fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor /// \brief A FloatingLiteral record. 58617fc223395d51be582fc666bb6ea21bd1dff26dcDouglas Gregor EXPR_FLOATING_LITERAL, 587cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor /// \brief An ImaginaryLiteral record. 588cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor EXPR_IMAGINARY_LITERAL, 589673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregor /// \brief A StringLiteral record. 590673ecd6a4a9f7c12fb6f76f84f654dbdcdc89e76Douglas Gregor EXPR_STRING_LITERAL, 5910b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor /// \brief A CharacterLiteral record. 592087fd536809ebe754d91c641a98917e02dd7452dDouglas Gregor EXPR_CHARACTER_LITERAL, 593c04db4feefa2b0dbbc6876cb4eeeee108aa6791dDouglas Gregor /// \brief A ParenExpr record. 594c04db4feefa2b0dbbc6876cb4eeeee108aa6791dDouglas Gregor EXPR_PAREN, 5950b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor /// \brief A UnaryOperator record. 5960b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor EXPR_UNARY_OPERATOR, 5970b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor /// \brief A SizefAlignOfExpr record. 5980b0b77fa29c74c99a77548ed86ca8a04f7cf6b02Douglas Gregor EXPR_SIZEOF_ALIGN_OF, 599cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor /// \brief An ArraySubscriptExpr record. 600cb2ca73c1d7e76cc1358ce51457d2d5837d84f9bDouglas Gregor EXPR_ARRAY_SUBSCRIPT, 6011f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor /// \brief A CallExpr record. 6021f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor EXPR_CALL, 6031f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor /// \brief A MemberExpr record. 6041f0d0133b0e8d1f01f63951ee04927796b34740dDouglas Gregor EXPR_MEMBER, 605db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor /// \brief A BinaryOperator record. 606db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor EXPR_BINARY_OPERATOR, 607ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor /// \brief A CompoundAssignOperator record. 608ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor EXPR_COMPOUND_ASSIGN_OPERATOR, 609ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor /// \brief A ConditionOperator record. 610ad90e96fb7eed26d5217dd06ba50ecbbbebb59e6Douglas Gregor EXPR_CONDITIONAL_OPERATOR, 611087fd536809ebe754d91c641a98917e02dd7452dDouglas Gregor /// \brief An ImplicitCastExpr record. 612db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor EXPR_IMPLICIT_CAST, 613db600c330a37b1c3ab4533310729910ee188f900Douglas Gregor /// \brief A CStyleCastExpr record. 614d3c98a02c73417689deaaa6671ea6df7f2a8a73cDouglas Gregor EXPR_CSTYLE_CAST, 615ba6d7e7fa5f79959d3eef39adb5620d845ba5198Douglas Gregor /// \brief A CompoundLiteralExpr record. 616ba6d7e7fa5f79959d3eef39adb5620d845ba5198Douglas Gregor EXPR_COMPOUND_LITERAL, 617d3c98a02c73417689deaaa6671ea6df7f2a8a73cDouglas Gregor /// \brief An ExtVectorElementExpr record. 618d3c98a02c73417689deaaa6671ea6df7f2a8a73cDouglas Gregor EXPR_EXT_VECTOR_ELEMENT, 619d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief An InitListExpr record. 620d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor EXPR_INIT_LIST, 621d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief A DesignatedInitExpr record. 622d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor EXPR_DESIGNATED_INIT, 623d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief An ImplicitValueInitExpr record. 624d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor EXPR_IMPLICIT_VALUE_INIT, 625d3c98a02c73417689deaaa6671ea6df7f2a8a73cDouglas Gregor /// \brief A VAArgExpr record. 62644cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor EXPR_VA_ARG, 6276a2dd55b0b3ae376d449a4b07bbb6b2d30b26330Douglas Gregor /// \brief An AddrLabelExpr record. 6287d5c2f241c74e5f8d9ec492e8f9f268e5e9ae41fDouglas Gregor EXPR_ADDR_LABEL, 6296a2dd55b0b3ae376d449a4b07bbb6b2d30b26330Douglas Gregor /// \brief A StmtExpr record. 6306a2dd55b0b3ae376d449a4b07bbb6b2d30b26330Douglas Gregor EXPR_STMT, 63144cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor /// \brief A TypesCompatibleExpr record. 63244cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor EXPR_TYPES_COMPATIBLE, 63344cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor /// \brief A ChooseExpr record. 63444cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor EXPR_CHOOSE, 63544cae0c8669cdf83618cbe7fd36ea7a8e51cf97fDouglas Gregor /// \brief A GNUNullExpr record. 63694cd5d1397bb1a8bcd109602aa38dd787b164c22Douglas Gregor EXPR_GNU_NULL, 63794cd5d1397bb1a8bcd109602aa38dd787b164c22Douglas Gregor /// \brief A ShuffleVectorExpr record. 63894cd5d1397bb1a8bcd109602aa38dd787b164c22Douglas Gregor EXPR_SHUFFLE_VECTOR, 63984af7c27cdc615ff917a501d61256b4049383c97Douglas Gregor /// \brief BlockExpr 64084af7c27cdc615ff917a501d61256b4049383c97Douglas Gregor EXPR_BLOCK, 64184af7c27cdc615ff917a501d61256b4049383c97Douglas Gregor /// \brief A BlockDeclRef record. 6424dcf151a555ff51e4d643e8e6eeb80f121d11d1bChris Lattner EXPR_BLOCK_DECL_REF, 64339da0b8145eaec7da7004f9b3645c5c9f4f63b1dDouglas Gregor 6444dcf151a555ff51e4d643e8e6eeb80f121d11d1bChris Lattner // Objective-C 6451eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 6460389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCStringLiteral record. 6473a57a3765b6192a94ff4e5997ae0489a1471b308Chris Lattner EXPR_OBJC_STRING_LITERAL, 6480389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCEncodeExpr record. 6493a57a3765b6192a94ff4e5997ae0489a1471b308Chris Lattner EXPR_OBJC_ENCODE, 6500389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCSelectorExpr record. 6513a57a3765b6192a94ff4e5997ae0489a1471b308Chris Lattner EXPR_OBJC_SELECTOR_EXPR, 6520389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCProtocolExpr record. 653c4f0bbdb166fbc31ab2cf0f6ff573fde9fa307b3Steve Naroff EXPR_OBJC_PROTOCOL_EXPR, 6540389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCIvarRefExpr record. 6550389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner EXPR_OBJC_IVAR_REF_EXPR, 6560389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCPropertyRefExpr record. 6570389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner EXPR_OBJC_PROPERTY_REF_EXPR, 65809105f52b1f28cbb1374c27c3c70f5517e2c465dFariborz Jahanian /// \brief An ObjCImplicitSetterGetterRefExpr record. 6590389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner EXPR_OBJC_KVC_REF_EXPR, 6600389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCMessageExpr record. 6610389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner EXPR_OBJC_MESSAGE_EXPR, 6620389e6bd0159bfdd08f7c50a37543b6e3adf0c33Chris Lattner /// \brief An ObjCSuperExpr record. 6631eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff EXPR_OBJC_SUPER_EXPR, 664f242b1b0c4e998911cb96b2ba7e27ab4a5abaed3Steve Naroff /// \brief An ObjCIsa Expr record. 665f242b1b0c4e998911cb96b2ba7e27ab4a5abaed3Steve Naroff EXPR_OBJC_ISA, 6661eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 6671eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCForCollectionStmt record. 6681eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff STMT_OBJC_FOR_COLLECTION, 6691eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCAtCatchStmt record. 6701eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff STMT_OBJC_CATCH, 6711eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCAtFinallyStmt record. 6721eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff STMT_OBJC_FINALLY, 6731eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCAtTryStmt record. 6741eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff STMT_OBJC_AT_TRY, 6751eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCAtSynchronizedStmt record. 6761eb5540760dc79502e32d4fe9c28217476ea14b9Steve Naroff STMT_OBJC_AT_SYNCHRONIZED, 6771eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump /// \brief An ObjCAtThrowStmt record. 678ba0a9006dbc4814e1e35f82812cb5a1dad65e8b8Argyrios Kyrtzidis STMT_OBJC_AT_THROW, 679ba0a9006dbc4814e1e35f82812cb5a1dad65e8b8Argyrios Kyrtzidis 680ba0a9006dbc4814e1e35f82812cb5a1dad65e8b8Argyrios Kyrtzidis // C++ 681ba0a9006dbc4814e1e35f82812cb5a1dad65e8b8Argyrios Kyrtzidis 68239da0b8145eaec7da7004f9b3645c5c9f4f63b1dDouglas Gregor /// \brief A CXXOperatorCallExpr record. 68339da0b8145eaec7da7004f9b3645c5c9f4f63b1dDouglas Gregor EXPR_CXX_OPERATOR_CALL, 68439da0b8145eaec7da7004f9b3645c5c9f4f63b1dDouglas Gregor /// \brief A CXXConstructExpr record. 685ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig EXPR_CXX_CONSTRUCT, 686ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig // \brief A CXXStaticCastExpr record. 687ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig EXPR_CXX_STATIC_CAST, 688ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig // \brief A CXXDynamicCastExpr record. 689ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig EXPR_CXX_DYNAMIC_CAST, 690ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig // \brief A CXXReinterpretCastExpr record. 691ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig EXPR_CXX_REINTERPRET_CAST, 692ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig // \brief A CXXConstCastExpr record. 693ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig EXPR_CXX_CONST_CAST, 694ce757a7a1ee905f87551996a69da3e95e8afeeb7Sam Weinig // \brief A CXXFunctionalCastExpr record. 695eb7f96141f754150a92433286fa385910a22f494Sam Weinig EXPR_CXX_FUNCTIONAL_CAST, 696eb7f96141f754150a92433286fa385910a22f494Sam Weinig // \brief A CXXBoolLiteralExpr record. 697eb7f96141f754150a92433286fa385910a22f494Sam Weinig EXPR_CXX_BOOL_LITERAL, 698eb7f96141f754150a92433286fa385910a22f494Sam Weinig // \brief A CXXNullPtrLiteralExpr record. 699eb7f96141f754150a92433286fa385910a22f494Sam Weinig EXPR_CXX_NULL_PTR_LITERAL 7000b7489194f9f89fac39d57211c1e7953ae50251fDouglas Gregor }; 701d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor 702d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief The kinds of designators that can occur in a 703d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// DesignatedInitExpr. 704d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor enum DesignatorTypes { 705d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief Field designator where only the field name is known. 706d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor DESIG_FIELD_NAME = 0, 707d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief Field designator where the field has been resolved to 708d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// a declaration. 709d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor DESIG_FIELD_DECL = 1, 710d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief Array designator. 711d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor DESIG_ARRAY = 2, 712d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor /// \brief GNU array range designator. 713d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor DESIG_ARRAY_RANGE = 3 714d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor }; 715d077d759d0c7fceee98f4e77b6423a3f11cfc849Douglas Gregor 71614f79002e58556798e86168c63e48d533287eda5Douglas Gregor /// @} 7172cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor } 7182cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor} // end namespace clang 7192cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor 7202cf2634ffdb4f7c8d46cef3f8e60a55993f1c57aDouglas Gregor#endif 721