clang: clang::serialization Namespace Reference (original) (raw)

Classes
class AbstractTypeReader
class AbstractTypeWriter
class BasicReaderBase
class DataStreamBasicReader
DataStreamBasicReader provides convenience implementations for many BasicReader methods based on the assumption that the ultimate reader implementation is based on a variable-length stream of unstructured data (like Clang's module files). More...
class DataStreamBasicWriter
DataStreamBasicWriter provides convenience implementations for many BasicWriter methods based on the assumption that the ultimate writer implementation is based on a variable-length stream of unstructured data (like Clang's module files). More...
class DeclarationNameKey
A key used when looking up entities by DeclarationName. More...
class DeclOffset
Source location and bit offset of a declaration. More...
class InputFile
The input file that has been loaded from this AST file, along with bools indicating whether this was an overridden buffer or if it was out-of-date or not-found. More...
struct InputFileInfo
The input file info that has been loaded from an AST file. More...
class ModuleFile
Information about a module that has been loaded by the ASTReader. More...
class ModuleManager
Manages the set of modules loaded by an AST reader. More...
class MultiOnDiskHashTable
A collection of on-disk hash tables, merged when relevant for performance. More...
class MultiOnDiskHashTableGenerator
Writer for the on-disk hash table. More...
struct ObjCCategoriesInfo
Describes the categories of an Objective-C class. More...
class PPEntityOffset
Source range/offset of a preprocessed entity. More...
class PPSkippedRange
Source range of a skipped preprocessor region. More...
class ReadMethodPoolVisitor
class TypeIdx
A type index; the type ID with the qualifier bits removed. More...
class UnalignedUInt64
32 aligned uint64_t in the AST file. More...
struct UnsafeQualTypeDenseMapInfo
A structure for putting "fast"-unqualified QualTypes into a DenseMap. More...
Typedefs
using IdentifierID = uint64_t
An ID number that refers to an identifier in an AST file.
using DeclID = DeclIDBase::DeclID
An ID number that refers to a declaration in an AST file.
using TypeID = uint64_t
An ID number that refers to a type in an AST file.
using LocalTypeID = TypeID
Same with TypeID except that the LocalTypeID is only meaningful with the corresponding ModuleFile.
using MacroID = uint64_t
An ID number that refers to a macro in an AST file.
using GlobalMacroID = uint64_t
A global ID number that refers to a macro in an AST file.
using LocalMacroID = uint64_t
A local to a module ID number that refers to a macro in an AST file.
using SelectorID = uint32_t
An ID number that refers to an ObjC selector in an AST file.
using CXXBaseSpecifiersID = uint32_t
An ID number that refers to a set of CXXBaseSpecifiers in an AST file.
using CXXCtorInitializersID = uint32_t
An ID number that refers to a list of CXXCtorInitializers in an AST file.
using PreprocessedEntityID = uint64_t
An ID number that refers to an entity in the detailed preprocessing record.
using SubmoduleID = uint32_t
An ID number that refers to a submodule in a module file.
using unaligned_decl_id_t
Enumerations
enum BlockIDs { AST_BLOCK_ID = llvm::bitc::FIRST_APPLICATION_BLOCKID , SOURCE_MANAGER_BLOCK_ID, PREPROCESSOR_BLOCK_ID, DECLTYPES_BLOCK_ID, PREPROCESSOR_DETAIL_BLOCK_ID, SUBMODULE_BLOCK_ID, COMMENTS_BLOCK_ID, CONTROL_BLOCK_ID, INPUT_FILES_BLOCK_ID, OPTIONS_BLOCK_ID, EXTENSION_BLOCK_ID, UNHASHED_CONTROL_BLOCK_ID }
Describes the various kinds of blocks that occur within an AST file. More...
enum ControlRecordTypes { METADATA = 1 , IMPORT, ORIGINAL_FILE, ORIGINAL_FILE_ID, INPUT_FILE_OFFSETS, MODULE_NAME, MODULE_MAP_FILE, MODULE_DIRECTORY }
Record types that occur within the control block. More...
enum OptionsRecordTypes { LANGUAGE_OPTIONS = 1 , TARGET_OPTIONS, FILE_SYSTEM_OPTIONS, HEADER_SEARCH_OPTIONS, PREPROCESSOR_OPTIONS, CODEGEN_OPTIONS }
Record types that occur within the options block inside the control block. More...
enum UnhashedControlBlockRecordTypes { SIGNATURE = 1 , AST_BLOCK_HASH, DIAGNOSTIC_OPTIONS, HEADER_SEARCH_PATHS, DIAG_PRAGMA_MAPPINGS, HEADER_SEARCH_ENTRY_USAGE, VFS_USAGE }
Record codes for the unhashed control block. More...
enum ExtensionBlockRecordTypes { EXTENSION_METADATA = 1 , FIRST_EXTENSION_RECORD_ID = 4 }
Record code for extension blocks. More...
enum InputFileRecordTypes { INPUT_FILE = 1 , INPUT_FILE_HASH }
Record types that occur within the input-files block inside the control block. More...
enum ASTRecordTypes { TYPE_OFFSET = 1 , DECL_OFFSET = 2 , IDENTIFIER_OFFSET = 3 , METADATA_OLD_FORMAT = 4 , IDENTIFIER_TABLE = 5 , EAGERLY_DESERIALIZED_DECLS = 6 , SPECIAL_TYPES = 7 , STATISTICS = 8 , TENTATIVE_DEFINITIONS = 9 , SELECTOR_OFFSETS = 11 , METHOD_POOL = 12 , PP_COUNTER_VALUE = 13 , SOURCE_LOCATION_OFFSETS = 14 , EXT_VECTOR_DECLS = 16 , UNUSED_FILESCOPED_DECLS = 17 , PPD_ENTITIES_OFFSETS = 18 , VTABLE_USES = 19 , REFERENCED_SELECTOR_POOL = 21 , TU_UPDATE_LEXICAL = 22 , SEMA_DECL_REFS = 24 , WEAK_UNDECLARED_IDENTIFIERS = 25 , PENDING_IMPLICIT_INSTANTIATIONS = 26 , UPDATE_VISIBLE = 28 , DECL_UPDATE_OFFSETS = 29 , CUDA_SPECIAL_DECL_REFS = 33 , HEADER_SEARCH_TABLE = 34 , FP_PRAGMA_OPTIONS = 35 , OPENCL_EXTENSIONS = 36 , DELEGATING_CTORS = 37 , KNOWN_NAMESPACES = 38 , MODULE_OFFSET_MAP = 39 , SOURCE_MANAGER_LINE_TABLE = 40 , OBJC_CATEGORIES_MAP = 41 , FILE_SORTED_DECLS = 42 , IMPORTED_MODULES = 43 , OBJC_CATEGORIES = 46 , MACRO_OFFSET = 47 , INTERESTING_IDENTIFIERS = 48 , UNDEFINED_BUT_USED = 49 , LATE_PARSED_TEMPLATE = 50 , OPTIMIZE_PRAGMA_OPTIONS = 51 , UNUSED_LOCAL_TYPEDEF_NAME_CANDIDATES = 52 , DELETE_EXPRS_TO_ANALYZE = 54 , MSSTRUCT_PRAGMA_OPTIONS = 55 , POINTERS_TO_MEMBERS_PRAGMA_OPTIONS = 56 , CUDA_PRAGMA_FORCE_HOST_DEVICE_DEPTH = 57 , OPENCL_EXTENSION_TYPES = 58 , OPENCL_EXTENSION_DECLS = 59 , MODULAR_CODEGEN_DECLS = 60 , ALIGN_PACK_PRAGMA_OPTIONS = 61 , PP_CONDITIONAL_STACK = 62 , PPD_SKIPPED_RANGES = 63 , DECLS_TO_CHECK_FOR_DEFERRED_DIAGS = 64 , FLOAT_CONTROL_PRAGMA_OPTIONS = 65 , PP_ASSUME_NONNULL_LOC = 67 , DELAYED_NAMESPACE_LEXICAL_VISIBLE_RECORD = 68 , PP_UNSAFE_BUFFER_USAGE = 69 , VTABLES_TO_EMIT = 70 , RELATED_DECLS_MAP = 71 , DECLS_WITH_EFFECTS_TO_VERIFY = 72 , UPDATE_SPECIALIZATION = 73 , CXX_ADDED_TEMPLATE_SPECIALIZATION = 74 , CXX_ADDED_TEMPLATE_PARTIAL_SPECIALIZATION = 75 , UPDATE_MODULE_LOCAL_VISIBLE = 76 , UPDATE_TU_LOCAL_VISIBLE = 77 }
Record types that occur within the AST block itself. More...
enum SourceManagerRecordTypes { SM_SLOC_FILE_ENTRY = 1 , SM_SLOC_BUFFER_ENTRY = 2 , SM_SLOC_BUFFER_BLOB = 3 , SM_SLOC_BUFFER_BLOB_COMPRESSED = 4 , SM_SLOC_EXPANSION_ENTRY = 5 }
Record types used within a source manager block. More...
enum PreprocessorRecordTypes { PP_MACRO_OBJECT_LIKE = 1 , PP_MACRO_FUNCTION_LIKE = 2 , PP_TOKEN = 3 , PP_MACRO_DIRECTIVE_HISTORY = 4 , PP_MODULE_MACRO = 5 }
Record types used within a preprocessor block. More...
enum PreprocessorDetailRecordTypes { PPD_MACRO_EXPANSION = 0 , PPD_MACRO_DEFINITION = 1 , PPD_INCLUSION_DIRECTIVE = 2 }
Record types used within a preprocessor detail block. More...
enum SubmoduleRecordTypes { SUBMODULE_METADATA = 0 , SUBMODULE_DEFINITION = 1 , SUBMODULE_UMBRELLA_HEADER = 2 , SUBMODULE_HEADER = 3 , SUBMODULE_TOPHEADER = 4 , SUBMODULE_UMBRELLA_DIR = 5 , SUBMODULE_IMPORTS = 6 , SUBMODULE_EXPORTS = 7 , SUBMODULE_REQUIRES = 8 , SUBMODULE_EXCLUDED_HEADER = 9 , SUBMODULE_LINK_LIBRARY = 10 , SUBMODULE_CONFIG_MACRO = 11 , SUBMODULE_CONFLICT = 12 , SUBMODULE_PRIVATE_HEADER = 13 , SUBMODULE_TEXTUAL_HEADER = 14 , SUBMODULE_PRIVATE_TEXTUAL_HEADER = 15 , SUBMODULE_INITIALIZERS = 16 , SUBMODULE_EXPORT_AS = 17 , SUBMODULE_AFFECTING_MODULES = 18 }
Record types used within a submodule description block. More...
enum CommentRecordTypes { COMMENTS_RAW_COMMENT = 0 }
Record types used within a comments block. More...
enum PredefinedTypeIDs { PREDEF_TYPE_NULL_ID = 0 , PREDEF_TYPE_VOID_ID = 1 , PREDEF_TYPE_BOOL_ID = 2 , PREDEF_TYPE_CHAR_U_ID = 3 , PREDEF_TYPE_UCHAR_ID = 4 , PREDEF_TYPE_USHORT_ID = 5 , PREDEF_TYPE_UINT_ID = 6 , PREDEF_TYPE_ULONG_ID = 7 , PREDEF_TYPE_ULONGLONG_ID = 8 , PREDEF_TYPE_CHAR_S_ID = 9 , PREDEF_TYPE_SCHAR_ID = 10 , PREDEF_TYPE_WCHAR_ID = 11 , PREDEF_TYPE_SHORT_ID = 12 , PREDEF_TYPE_INT_ID = 13 , PREDEF_TYPE_LONG_ID = 14 , PREDEF_TYPE_LONGLONG_ID = 15 , PREDEF_TYPE_FLOAT_ID = 16 , PREDEF_TYPE_DOUBLE_ID = 17 , PREDEF_TYPE_LONGDOUBLE_ID = 18 , PREDEF_TYPE_OVERLOAD_ID = 19 , PREDEF_TYPE_DEPENDENT_ID = 20 , PREDEF_TYPE_UINT128_ID = 21 , PREDEF_TYPE_INT128_ID = 22 , PREDEF_TYPE_NULLPTR_ID = 23 , PREDEF_TYPE_CHAR16_ID = 24 , PREDEF_TYPE_CHAR32_ID = 25 , PREDEF_TYPE_OBJC_ID = 26 , PREDEF_TYPE_OBJC_CLASS = 27 , PREDEF_TYPE_OBJC_SEL = 28 , PREDEF_TYPE_UNKNOWN_ANY = 29 , PREDEF_TYPE_BOUND_MEMBER = 30 , PREDEF_TYPE_AUTO_DEDUCT = 31 , PREDEF_TYPE_AUTO_RREF_DEDUCT = 32 , PREDEF_TYPE_HALF_ID = 33 , PREDEF_TYPE_ARC_UNBRIDGED_CAST = 34 , PREDEF_TYPE_PSEUDO_OBJECT = 35 , PREDEF_TYPE_BUILTIN_FN = 36 , PREDEF_TYPE_EVENT_ID = 37 , PREDEF_TYPE_CLK_EVENT_ID = 38 , PREDEF_TYPE_SAMPLER_ID = 39 , PREDEF_TYPE_QUEUE_ID = 40 , PREDEF_TYPE_RESERVE_ID_ID = 41 , PREDEF_TYPE_ARRAY_SECTION = 42 , PREDEF_TYPE_FLOAT128_ID = 43 , PREDEF_TYPE_FLOAT16_ID = 44 , PREDEF_TYPE_CHAR8_ID = 45 , PREDEF_TYPE_SHORT_ACCUM_ID = 46 , PREDEF_TYPE_ACCUM_ID = 47 , PREDEF_TYPE_LONG_ACCUM_ID = 48 , PREDEF_TYPE_USHORT_ACCUM_ID = 49 , PREDEF_TYPE_UACCUM_ID = 50 , PREDEF_TYPE_ULONG_ACCUM_ID = 51 , PREDEF_TYPE_SHORT_FRACT_ID = 52 , PREDEF_TYPE_FRACT_ID = 53 , PREDEF_TYPE_LONG_FRACT_ID = 54 , PREDEF_TYPE_USHORT_FRACT_ID = 55 , PREDEF_TYPE_UFRACT_ID = 56 , PREDEF_TYPE_ULONG_FRACT_ID = 57 , PREDEF_TYPE_SAT_SHORT_ACCUM_ID = 58 , PREDEF_TYPE_SAT_ACCUM_ID = 59 , PREDEF_TYPE_SAT_LONG_ACCUM_ID = 60 , PREDEF_TYPE_SAT_USHORT_ACCUM_ID = 61 , PREDEF_TYPE_SAT_UACCUM_ID = 62 , PREDEF_TYPE_SAT_ULONG_ACCUM_ID = 63 , PREDEF_TYPE_SAT_SHORT_FRACT_ID = 64 , PREDEF_TYPE_SAT_FRACT_ID = 65 , PREDEF_TYPE_SAT_LONG_FRACT_ID = 66 , PREDEF_TYPE_SAT_USHORT_FRACT_ID = 67 , PREDEF_TYPE_SAT_UFRACT_ID = 68 , PREDEF_TYPE_SAT_ULONG_FRACT_ID = 69 , PREDEF_TYPE_OMP_ARRAY_SHAPING = 70 , PREDEF_TYPE_OMP_ITERATOR = 71 , PREDEF_TYPE_INCOMPLETE_MATRIX_IDX = 72 , PREDEF_TYPE_BFLOAT16_ID = 73 , PREDEF_TYPE_IBM128_ID = 74 , PREDEF_TYPE_UNRESOLVED_TEMPLATE, PREDEF_TYPE_LAST_ID }
Predefined type IDs. More...
enum TypeCode { TYPE_EXT_QUAL = 1 }
Record codes for each kind of type. More...
enum SpecialTypeIDs { SPECIAL_TYPE_CF_CONSTANT_STRING = 0 , SPECIAL_TYPE_FILE = 1 , SPECIAL_TYPE_JMP_BUF = 2 , SPECIAL_TYPE_SIGJMP_BUF = 3 , SPECIAL_TYPE_OBJC_ID_REDEFINITION = 4 , SPECIAL_TYPE_OBJC_CLASS_REDEFINITION = 5 , SPECIAL_TYPE_OBJC_SEL_REDEFINITION = 6 , SPECIAL_TYPE_UCONTEXT_T = 7 }
The type IDs for special types constructed by semantic analysis. More...
enum DeclCode { DECL_TYPEDEF = 51 , DECL_TYPEALIAS, DECL_ENUM, DECL_RECORD, DECL_ENUM_CONSTANT, DECL_FUNCTION, DECL_OBJC_METHOD, DECL_OBJC_INTERFACE, DECL_OBJC_PROTOCOL, DECL_OBJC_IVAR, DECL_OBJC_AT_DEFS_FIELD, DECL_OBJC_CATEGORY, DECL_OBJC_CATEGORY_IMPL, DECL_OBJC_IMPLEMENTATION, DECL_OBJC_COMPATIBLE_ALIAS, DECL_OBJC_PROPERTY, DECL_OBJC_PROPERTY_IMPL, DECL_FIELD, DECL_MS_PROPERTY, DECL_MS_GUID, DECL_TEMPLATE_PARAM_OBJECT, DECL_VAR, DECL_IMPLICIT_PARAM, DECL_PARM_VAR, DECL_DECOMPOSITION, DECL_BINDING, DECL_FILE_SCOPE_ASM, DECL_TOP_LEVEL_STMT_DECL, DECL_BLOCK, DECL_OUTLINEDFUNCTION, DECL_CAPTURED, DECL_CONTEXT_LEXICAL, DECL_CONTEXT_VISIBLE, DECL_CONTEXT_MODULE_LOCAL_VISIBLE, DECL_CONTEXT_TU_LOCAL_VISIBLE, DECL_LABEL, DECL_NAMESPACE, DECL_NAMESPACE_ALIAS, DECL_USING, DECL_USING_ENUM, DECL_USING_PACK, DECL_USING_SHADOW, DECL_CONSTRUCTOR_USING_SHADOW, DECL_USING_DIRECTIVE, DECL_UNRESOLVED_USING_VALUE, DECL_UNRESOLVED_USING_TYPENAME, DECL_LINKAGE_SPEC, DECL_EXPORT, DECL_CXX_RECORD, DECL_CXX_DEDUCTION_GUIDE, DECL_CXX_METHOD, DECL_CXX_CONSTRUCTOR, DECL_CXX_DESTRUCTOR, DECL_CXX_CONVERSION, DECL_ACCESS_SPEC, DECL_FRIEND, DECL_FRIEND_TEMPLATE, DECL_CLASS_TEMPLATE, DECL_CLASS_TEMPLATE_SPECIALIZATION, DECL_CLASS_TEMPLATE_PARTIAL_SPECIALIZATION, DECL_VAR_TEMPLATE, DECL_VAR_TEMPLATE_SPECIALIZATION, DECL_VAR_TEMPLATE_PARTIAL_SPECIALIZATION, DECL_FUNCTION_TEMPLATE, DECL_TEMPLATE_TYPE_PARM, DECL_NON_TYPE_TEMPLATE_PARM, DECL_TEMPLATE_TEMPLATE_PARM, DECL_TYPE_ALIAS_TEMPLATE, DECL_CONCEPT, DECL_UNRESOLVED_USING_IF_EXISTS, DECL_STATIC_ASSERT, DECL_CXX_BASE_SPECIFIERS, DECL_CXX_CTOR_INITIALIZERS, DECL_INDIRECTFIELD, DECL_EXPANDED_NON_TYPE_TEMPLATE_PARM_PACK, DECL_EXPANDED_TEMPLATE_TEMPLATE_PARM_PACK, DECL_IMPORT, DECL_OMP_THREADPRIVATE, DECL_OMP_REQUIRES, DECL_OMP_ALLOCATE, DECL_EMPTY, DECL_LIFETIME_EXTENDED_TEMPORARY, DECL_REQUIRES_EXPR_BODY, DECL_OBJC_TYPE_PARAM, DECL_OMP_CAPTUREDEXPR, DECL_PRAGMA_COMMENT, DECL_PRAGMA_DETECT_MISMATCH, DECL_OMP_DECLARE_MAPPER, DECL_OMP_DECLARE_REDUCTION, DECL_UNNAMED_GLOBAL_CONSTANT, DECL_HLSL_BUFFER, DECL_IMPLICIT_CONCEPT_SPECIALIZATION, DECL_SPECIALIZATIONS, DECL_PARTIAL_SPECIALIZATIONS, DECL_OPENACC_DECLARE, DECL_OPENACC_ROUTINE, DECL_LAST = DECL_OPENACC_ROUTINE }
Record codes for each kind of declaration. More...
enum StmtCode { STMT_STOP = DECL_LAST + 1 , STMT_NULL_PTR, STMT_REF_PTR, STMT_NULL, STMT_COMPOUND, STMT_CASE, STMT_DEFAULT, STMT_LABEL, STMT_ATTRIBUTED, STMT_IF, STMT_SWITCH, STMT_WHILE, STMT_DO, STMT_FOR, STMT_GOTO, STMT_INDIRECT_GOTO, STMT_CONTINUE, STMT_BREAK, STMT_RETURN, STMT_DECL, STMT_CAPTURED, STMT_SYCLKERNELCALL, STMT_GCCASM, STMT_MSASM, EXPR_CONSTANT, EXPR_PREDEFINED, EXPR_DECL_REF, EXPR_INTEGER_LITERAL, EXPR_FLOATING_LITERAL, EXPR_IMAGINARY_LITERAL, EXPR_STRING_LITERAL, EXPR_CHARACTER_LITERAL, EXPR_PAREN, EXPR_PAREN_LIST, EXPR_UNARY_OPERATOR, EXPR_OFFSETOF, EXPR_SIZEOF_ALIGN_OF, EXPR_ARRAY_SUBSCRIPT, EXPR_MATRIX_SUBSCRIPT, EXPR_CALL, EXPR_MEMBER, EXPR_BINARY_OPERATOR, EXPR_COMPOUND_ASSIGN_OPERATOR, EXPR_CONDITIONAL_OPERATOR, EXPR_IMPLICIT_CAST, EXPR_CSTYLE_CAST, EXPR_COMPOUND_LITERAL, EXPR_EXT_VECTOR_ELEMENT, EXPR_INIT_LIST, EXPR_DESIGNATED_INIT, EXPR_DESIGNATED_INIT_UPDATE, EXPR_NO_INIT, EXPR_ARRAY_INIT_LOOP, EXPR_ARRAY_INIT_INDEX, EXPR_IMPLICIT_VALUE_INIT, EXPR_VA_ARG, EXPR_ADDR_LABEL, EXPR_STMT, EXPR_CHOOSE, EXPR_GNU_NULL, EXPR_SOURCE_LOC, EXPR_BUILTIN_PP_EMBED, EXPR_SHUFFLE_VECTOR, EXPR_CONVERT_VECTOR, EXPR_BLOCK, EXPR_GENERIC_SELECTION, EXPR_PSEUDO_OBJECT, EXPR_ATOMIC, EXPR_RECOVERY, EXPR_OBJC_STRING_LITERAL, EXPR_OBJC_BOXED_EXPRESSION, EXPR_OBJC_ARRAY_LITERAL, EXPR_OBJC_DICTIONARY_LITERAL, EXPR_OBJC_ENCODE, EXPR_OBJC_SELECTOR_EXPR, EXPR_OBJC_PROTOCOL_EXPR, EXPR_OBJC_IVAR_REF_EXPR, EXPR_OBJC_PROPERTY_REF_EXPR, EXPR_OBJC_SUBSCRIPT_REF_EXPR, EXPR_OBJC_KVC_REF_EXPR, EXPR_OBJC_MESSAGE_EXPR, EXPR_OBJC_ISA, EXPR_OBJC_INDIRECT_COPY_RESTORE, STMT_OBJC_FOR_COLLECTION, STMT_OBJC_CATCH, STMT_OBJC_FINALLY, STMT_OBJC_AT_TRY, STMT_OBJC_AT_SYNCHRONIZED, STMT_OBJC_AT_THROW, STMT_OBJC_AUTORELEASE_POOL, EXPR_OBJC_BOOL_LITERAL, EXPR_OBJC_AVAILABILITY_CHECK, STMT_CXX_CATCH, STMT_CXX_TRY, STMT_CXX_FOR_RANGE, EXPR_CXX_OPERATOR_CALL, EXPR_CXX_MEMBER_CALL, EXPR_CXX_REWRITTEN_BINARY_OPERATOR, EXPR_CXX_CONSTRUCT, EXPR_CXX_INHERITED_CTOR_INIT, EXPR_CXX_TEMPORARY_OBJECT, EXPR_CXX_STATIC_CAST, EXPR_CXX_DYNAMIC_CAST, EXPR_CXX_REINTERPRET_CAST, EXPR_CXX_CONST_CAST, EXPR_CXX_ADDRSPACE_CAST, EXPR_CXX_FUNCTIONAL_CAST, EXPR_BUILTIN_BIT_CAST, EXPR_USER_DEFINED_LITERAL, EXPR_CXX_STD_INITIALIZER_LIST, EXPR_CXX_BOOL_LITERAL, EXPR_CXX_PAREN_LIST_INIT, EXPR_CXX_NULL_PTR_LITERAL, EXPR_CXX_TYPEID_EXPR, EXPR_CXX_TYPEID_TYPE, EXPR_CXX_THIS, EXPR_CXX_THROW, EXPR_CXX_DEFAULT_ARG, EXPR_CXX_DEFAULT_INIT, EXPR_CXX_BIND_TEMPORARY, EXPR_CXX_SCALAR_VALUE_INIT, EXPR_CXX_NEW, EXPR_CXX_DELETE, EXPR_CXX_PSEUDO_DESTRUCTOR, EXPR_EXPR_WITH_CLEANUPS, EXPR_CXX_DEPENDENT_SCOPE_MEMBER, EXPR_CXX_DEPENDENT_SCOPE_DECL_REF, EXPR_CXX_UNRESOLVED_CONSTRUCT, EXPR_CXX_UNRESOLVED_MEMBER, EXPR_CXX_UNRESOLVED_LOOKUP, EXPR_CXX_EXPRESSION_TRAIT, EXPR_CXX_NOEXCEPT, EXPR_OPAQUE_VALUE, EXPR_BINARY_CONDITIONAL_OPERATOR, EXPR_TYPE_TRAIT, EXPR_ARRAY_TYPE_TRAIT, EXPR_PACK_EXPANSION, EXPR_PACK_INDEXING, EXPR_SIZEOF_PACK, EXPR_SUBST_NON_TYPE_TEMPLATE_PARM, EXPR_SUBST_NON_TYPE_TEMPLATE_PARM_PACK, EXPR_FUNCTION_PARM_PACK, EXPR_MATERIALIZE_TEMPORARY, EXPR_CXX_FOLD, EXPR_CONCEPT_SPECIALIZATION, EXPR_REQUIRES, EXPR_CUDA_KERNEL_CALL, EXPR_ASTYPE, EXPR_CXX_PROPERTY_REF_EXPR, EXPR_CXX_PROPERTY_SUBSCRIPT_EXPR, EXPR_CXX_UUIDOF_EXPR, EXPR_CXX_UUIDOF_TYPE, STMT_SEH_LEAVE, STMT_SEH_EXCEPT, STMT_SEH_FINALLY, STMT_SEH_TRY, STMT_OMP_META_DIRECTIVE, STMT_OMP_CANONICAL_LOOP, STMT_OMP_PARALLEL_DIRECTIVE, STMT_OMP_SIMD_DIRECTIVE, STMT_OMP_TILE_DIRECTIVE, STMP_OMP_STRIPE_DIRECTIVE, STMT_OMP_UNROLL_DIRECTIVE, STMT_OMP_REVERSE_DIRECTIVE, STMT_OMP_INTERCHANGE_DIRECTIVE, STMT_OMP_FUSE_DIRECTIVE, STMT_OMP_FOR_DIRECTIVE, STMT_OMP_FOR_SIMD_DIRECTIVE, STMT_OMP_SECTIONS_DIRECTIVE, STMT_OMP_SECTION_DIRECTIVE, STMT_OMP_SINGLE_DIRECTIVE, STMT_OMP_MASTER_DIRECTIVE, STMT_OMP_CRITICAL_DIRECTIVE, STMT_OMP_PARALLEL_FOR_DIRECTIVE, STMT_OMP_PARALLEL_FOR_SIMD_DIRECTIVE, STMT_OMP_PARALLEL_MASTER_DIRECTIVE, STMT_OMP_PARALLEL_MASKED_DIRECTIVE, STMT_OMP_PARALLEL_SECTIONS_DIRECTIVE, STMT_OMP_TASK_DIRECTIVE, STMT_OMP_TASKYIELD_DIRECTIVE, STMT_OMP_ERROR_DIRECTIVE, STMT_OMP_BARRIER_DIRECTIVE, STMT_OMP_TASKWAIT_DIRECTIVE, STMT_OMP_FLUSH_DIRECTIVE, STMT_OMP_DEPOBJ_DIRECTIVE, STMT_OMP_SCAN_DIRECTIVE, STMT_OMP_ORDERED_DIRECTIVE, STMT_OMP_ATOMIC_DIRECTIVE, STMT_OMP_TARGET_DIRECTIVE, STMT_OMP_TARGET_DATA_DIRECTIVE, STMT_OMP_TARGET_ENTER_DATA_DIRECTIVE, STMT_OMP_TARGET_EXIT_DATA_DIRECTIVE, STMT_OMP_TARGET_PARALLEL_DIRECTIVE, STMT_OMP_TARGET_PARALLEL_FOR_DIRECTIVE, STMT_OMP_TEAMS_DIRECTIVE, STMT_OMP_TASKGROUP_DIRECTIVE, STMT_OMP_CANCELLATION_POINT_DIRECTIVE, STMT_OMP_CANCEL_DIRECTIVE, STMT_OMP_TASKLOOP_DIRECTIVE, STMT_OMP_TASKLOOP_SIMD_DIRECTIVE, STMT_OMP_MASTER_TASKLOOP_DIRECTIVE, STMT_OMP_MASTER_TASKLOOP_SIMD_DIRECTIVE, STMT_OMP_PARALLEL_MASTER_TASKLOOP_DIRECTIVE, STMT_OMP_PARALLEL_MASTER_TASKLOOP_SIMD_DIRECTIVE, STMT_OMP_MASKED_TASKLOOP_DIRECTIVE, STMT_OMP_MASKED_TASKLOOP_SIMD_DIRECTIVE, STMT_OMP_PARALLEL_MASKED_TASKLOOP_DIRECTIVE, STMT_OMP_PARALLEL_MASKED_TASKLOOP_SIMD_DIRECTIVE, STMT_OMP_DISTRIBUTE_DIRECTIVE, STMT_OMP_TARGET_UPDATE_DIRECTIVE, STMT_OMP_DISTRIBUTE_PARALLEL_FOR_DIRECTIVE, STMT_OMP_DISTRIBUTE_PARALLEL_FOR_SIMD_DIRECTIVE, STMT_OMP_DISTRIBUTE_SIMD_DIRECTIVE, STMT_OMP_TARGET_PARALLEL_FOR_SIMD_DIRECTIVE, STMT_OMP_TARGET_SIMD_DIRECTIVE, STMT_OMP_TEAMS_DISTRIBUTE_DIRECTIVE, STMT_OMP_TEAMS_DISTRIBUTE_SIMD_DIRECTIVE, STMT_OMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_DIRECTIVE, STMT_OMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_DIRECTIVE, STMT_OMP_TARGET_TEAMS_DIRECTIVE, STMT_OMP_TARGET_TEAMS_DISTRIBUTE_DIRECTIVE, STMT_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_DIRECTIVE, STMT_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD_DIRECTIVE, STMT_OMP_TARGET_TEAMS_DISTRIBUTE_SIMD_DIRECTIVE, STMT_OMP_SCOPE_DIRECTIVE, STMT_OMP_INTEROP_DIRECTIVE, STMT_OMP_DISPATCH_DIRECTIVE, STMT_OMP_MASKED_DIRECTIVE, STMT_OMP_GENERIC_LOOP_DIRECTIVE, STMT_OMP_TEAMS_GENERIC_LOOP_DIRECTIVE, STMT_OMP_TARGET_TEAMS_GENERIC_LOOP_DIRECTIVE, STMT_OMP_PARALLEL_GENERIC_LOOP_DIRECTIVE, STMT_OMP_TARGET_PARALLEL_GENERIC_LOOP_DIRECTIVE, STMT_OMP_ASSUME_DIRECTIVE, EXPR_ARRAY_SECTION, EXPR_OMP_ARRAY_SHAPING, EXPR_OMP_ITERATOR, EXPR_OBJC_BRIDGED_CAST, STMT_MS_DEPENDENT_EXISTS, EXPR_LAMBDA, STMT_COROUTINE_BODY, STMT_CORETURN, EXPR_COAWAIT, EXPR_COYIELD, EXPR_DEPENDENT_COAWAIT, EXPR_FIXEDPOINT_LITERAL, EXPR_SYCL_UNIQUE_STABLE_NAME, STMT_OPENACC_COMPUTE_CONSTRUCT, STMT_OPENACC_LOOP_CONSTRUCT, STMT_OPENACC_COMBINED_CONSTRUCT, EXPR_OPENACC_ASTERISK_SIZE, STMT_OPENACC_DATA_CONSTRUCT, STMT_OPENACC_ENTER_DATA_CONSTRUCT, STMT_OPENACC_EXIT_DATA_CONSTRUCT, STMT_OPENACC_HOST_DATA_CONSTRUCT, STMT_OPENACC_WAIT_CONSTRUCT, STMT_OPENACC_INIT_CONSTRUCT, STMT_OPENACC_SHUTDOWN_CONSTRUCT, STMT_OPENACC_SET_CONSTRUCT, STMT_OPENACC_UPDATE_CONSTRUCT, STMT_OPENACC_ATOMIC_CONSTRUCT, STMT_OPENACC_CACHE_CONSTRUCT, EXPR_HLSL_OUT_ARG, STMT_DEFER }
Record codes for each kind of statement or expression. More...
enum DesignatorTypes { DESIG_FIELD_NAME = 0 , DESIG_FIELD_DECL = 1 , DESIG_ARRAY = 2 , DESIG_ARRAY_RANGE = 3 }
The kinds of designators that can occur in a DesignatedInitExpr. More...
enum CtorInitializerType { CTOR_INITIALIZER_BASE, CTOR_INITIALIZER_DELEGATING, CTOR_INITIALIZER_MEMBER, CTOR_INITIALIZER_INDIRECT_MEMBER }
The different kinds of data that can occur in a CtorInitializer. More...
enum CleanupObjectKind { COK_Block, COK_CompoundLiteral }
Kinds of cleanup objects owned by ExprWithCleanups. More...
enum ModuleKind { MK_ImplicitModule, MK_ExplicitModule, MK_PCH, MK_Preamble, MK_MainFile, MK_PrebuiltModule }
Specifies the kind of module that has been loaded. More...
enum class DeclUpdateKind { CXXAddedImplicitMember, CXXAddedAnonymousNamespace, CXXAddedFunctionDefinition, CXXAddedVarDefinition, CXXPointOfInstantiation, CXXInstantiatedClassDefinition, CXXInstantiatedDefaultArgument, CXXInstantiatedDefaultMemberInitializer, CXXResolvedDtorDelete, CXXResolvedExceptionSpec, CXXDeducedReturnType, DeclMarkedUsed, ManglingNumber, StaticLocalNumber, DeclMarkedOpenMPThreadPrivate, DeclMarkedOpenMPAllocate, DeclMarkedOpenMPDeclareTarget, DeclExported, AddedAttrToRecord, CXXResolvedDtorGlobDelete, CXXResolvedDtorArrayDelete, CXXResolvedDtorGlobArrayDelete }
Functions
template<class T>
T makeNullableFromOptional (const std::optional< T > &value)
template<class T>
T * makePointerFromOptional (std::optional< T * > value)
template<class T>
std::optional< T > makeOptionalFromNullable (const T &value)
template<class T>
std::optional< T * > makeOptionalFromPointer (T *value)
TypeIdx TypeIdxFromBuiltin (const BuiltinType *BT)
unsigned ComputeHash (Selector Sel)
const DeclContext * getDefinitiveDeclContext (const DeclContext *DC)
Retrieve the "definitive" declaration that provides all of the visible entries for the given declaration context, if there is one.
bool isRedeclarableDeclKind (unsigned Kind)
Determine whether the given declaration kind is redeclarable.
bool needsAnonymousDeclarationNumber (const NamedDecl *D)
Determine whether the given declaration needs an anonymous declaration number.
template
void numberAnonymousDeclsWithin (const DeclContext *DC, Fn Visit)
Visit each declaration within DC that needs an anonymous declaration number and call Visit with the declaration and its number.
bool isPartOfPerModuleInitializer (const Decl *D)
Determine whether the given declaration will be included in the per-module initializer if it needs to be eagerly handed to the AST consumer.
unsigned StableHashForTemplateArguments (llvm::ArrayRef< TemplateArgument > Args)
Calculate a stable hash value for template arguments.
Variables
const unsigned VERSION_MAJOR = 35
AST file major version number supported by this version of Clang.
const unsigned VERSION_MINOR = 0
AST file minor version number supported by this version of Clang.
const unsigned int NUM_PREDEF_IDENT_IDS = 1
The number of predefined identifier IDs.
const unsigned int NUM_PREDEF_MACRO_IDS = 1
The number of predefined macro IDs.
const unsigned int NUM_PREDEF_SELECTOR_IDS = 1
The number of predefined selector IDs.
const unsigned int NUM_PREDEF_SUBMODULE_IDS = 1
The number of predefined submodule IDs.
const unsigned int NUM_PREDEF_PP_ENTITY_IDS = 1
The number of predefined preprocessed entity IDs.
const unsigned NUM_PREDEF_TYPE_IDS = 514
The number of predefined type IDs that are reserved for the PREDEF_TYPE_* constants.
const unsigned NumSpecialTypeIDs = 8
The number of special type IDs.
const unsigned int DECL_UPDATES = 49
Record of updates for a declaration that was modified after being deserialized.
const unsigned int LOCAL_REDECLARATIONS = 50
Record code for a list of local redeclarations of a declaration.

CXXBaseSpecifiersID

An ID number that refers to a set of CXXBaseSpecifiers in an AST file.

Definition at line 174 of file ASTBitCodes.h.

CXXCtorInitializersID

An ID number that refers to a list of CXXCtorInitializers in an AST file.

Definition at line 178 of file ASTBitCodes.h.

DeclID

An ID number that refers to a declaration in an AST file.

See the comments in DeclIDBase for details.

Definition at line 70 of file ASTBitCodes.h.

GlobalMacroID

A global ID number that refers to a macro in an AST file.

Definition at line 157 of file ASTBitCodes.h.

IdentifierID

using clang::serialization::IdentifierID = uint64_t

An ID number that refers to an identifier in an AST file.

The ID numbers of identifiers are consecutive (in order of discovery) and start at 1. 0 is reserved for NULL.

Definition at line 63 of file ASTBitCodes.h.

LocalMacroID

using clang::serialization::LocalMacroID = uint64_t

A local to a module ID number that refers to a macro in an AST file.

Definition at line 161 of file ASTBitCodes.h.

LocalTypeID

Same with TypeID except that the LocalTypeID is only meaningful with the corresponding ModuleFile.

FIXME: Make TypeID and LocalTypeID a class to improve the type safety.

Definition at line 94 of file ASTBitCodes.h.

MacroID

using clang::serialization::MacroID = uint64_t

An ID number that refers to a macro in an AST file.

Definition at line 154 of file ASTBitCodes.h.

PreprocessedEntityID

An ID number that refers to an entity in the detailed preprocessing record.

Definition at line 182 of file ASTBitCodes.h.

SelectorID

using clang::serialization::SelectorID = uint32_t

An ID number that refers to an ObjC selector in an AST file.

Definition at line 167 of file ASTBitCodes.h.

SubmoduleID

using clang::serialization::SubmoduleID = uint32_t

An ID number that refers to a submodule in a module file.

Definition at line 185 of file ASTBitCodes.h.

TypeID

using clang::serialization::TypeID = uint64_t

An ID number that refers to a type in an AST file.

The ID of a type is partitioned into three parts:

The type index values are partitioned into two sets. The values below NUM_PREDEF_TYPE_IDs are predefined type IDs (based on the PREDEF_TYPE_*_ID constants), with 0 as a placeholder for "no type". The module file index for predefined types are always 0 since they don't belong to any modules. Values from NUM_PREDEF_TYPE_IDs are other types that have serialized representations.

Definition at line 88 of file ASTBitCodes.h.

unaligned_decl_id_t

Initial value:

llvm::support::detail::packed_endian_specific_integral<

serialization::DeclID, llvm::endianness::native,

llvm::support::unaligned>

DeclIDBase::DeclID DeclID

An ID number that refers to a declaration in an AST file.

Definition at line 283 of file ASTBitCodes.h.

ASTRecordTypes

Record types that occur within the AST block itself.

Enumerator
TYPE_OFFSET Record code for the offsets of each type. The TYPE_OFFSET constant describes the record that occurs within the AST block. The record itself is an array of offsets that point into the declarations and types block (identified by DECLTYPES_BLOCK_ID). The index into the array is based on the ID of a type. For a given type ID T, the lower three bits of T are its qualifiers (const, volatile, restrict), as in the QualType class. The upper bits, after being shifted and subtracting NUM_PREDEF_TYPE_IDS, are used to index into the TYPE_OFFSET block to determine the offset of that type's corresponding record within the DECLTYPES_BLOCK_ID block.
DECL_OFFSET Record code for the offsets of each decl. The DECL_OFFSET constant describes the record that occurs within the block identified by DECL_OFFSETS_BLOCK_ID within the AST block. The record itself is an array of offsets that point into the declarations and types block (identified by DECLTYPES_BLOCK_ID). The declaration ID is an index into this record, after subtracting one to account for the use of declaration ID 0 for a NULL declaration pointer. Index 0 is reserved for the translation unit declaration.
IDENTIFIER_OFFSET Record code for the table of offsets of each identifier ID. The offset table contains offsets into the blob stored in the IDENTIFIER_TABLE record. Each offset points to the NULL-terminated string that corresponds to that identifier.
METADATA_OLD_FORMAT This is so that older clang versions, before the introduction of the control block, can read and reject the newer PCH format. DON'T CHANGE THIS NUMBER.
IDENTIFIER_TABLE Record code for the identifier table. The identifier table is a simple blob that contains NULL-terminated strings for all of the identifiers referenced by the AST file. The IDENTIFIER_OFFSET table contains the mapping from identifier IDs to the characters in this blob. Note that the starting offsets of all of the identifiers are odd, so that, when the identifier offset table is loaded in, we can use the low bit to distinguish between offsets (for unresolved identifier IDs) and IdentifierInfo pointers (for already-resolved identifier IDs).
EAGERLY_DESERIALIZED_DECLS Record code for the array of eagerly deserialized decls. The AST file contains a list of all of the declarations that should be eagerly deserialized present within the parsed headers, stored as an array of declaration IDs. These declarations will be reported to the AST consumer after the AST file has been read, since their presence can affect the semantics of the program (e.g., for code generation).
SPECIAL_TYPES Record code for the set of non-builtin, special types. This record contains the type IDs for the various type nodes that are constructed during semantic analysis (e.g., __builtin_va_list). The SPECIAL_TYPE_* constants provide offsets into this record.
STATISTICS Record code for the extra statistics we gather while generating an AST file.
TENTATIVE_DEFINITIONS Record code for the array of tentative definitions.
SELECTOR_OFFSETS Record code for the table of offsets into the Objective-C method pool.
METHOD_POOL Record code for the Objective-C method pool,.
PP_COUNTER_VALUE The value of the next COUNTER to dispense. [PP_COUNTER_VALUE, Val]
SOURCE_LOCATION_OFFSETS Record code for the table of offsets into the block of source-location information.
EXT_VECTOR_DECLS Record code for the set of ext_vector type names.
UNUSED_FILESCOPED_DECLS Record code for the array of unused file scoped decls.
PPD_ENTITIES_OFFSETS Record code for the table of offsets to entries in the preprocessing record.
VTABLE_USES Record code for the array of VTable uses.
REFERENCED_SELECTOR_POOL Record code for referenced selector pool.
TU_UPDATE_LEXICAL Record code for an update to the TU's lexically contained declarations.
SEMA_DECL_REFS Record code for declarations that Sema keeps references of.
WEAK_UNDECLARED_IDENTIFIERS Record code for weak undeclared identifiers.
PENDING_IMPLICIT_INSTANTIATIONS Record code for pending implicit instantiations.
UPDATE_VISIBLE Record code for an update to a decl context's lookup table. In practice, this should only be used for the TU and namespaces.
DECL_UPDATE_OFFSETS Record for offsets of DECL_UPDATES records for declarations that were modified after being deserialized and need updates.
CUDA_SPECIAL_DECL_REFS Record code for special CUDA declarations.
HEADER_SEARCH_TABLE Record code for header search information.
FP_PRAGMA_OPTIONS Record code for floating point #pragma options.
OPENCL_EXTENSIONS Record code for enabled OpenCL extensions.
DELEGATING_CTORS The list of delegating constructor declarations.
KNOWN_NAMESPACES Record code for the set of known namespaces, which are used for typo correction.
MODULE_OFFSET_MAP Record code for the remapping information used to relate loaded modules to the various offsets and IDs(e.g., source location offests, declaration and type IDs) that are used in that module to refer to other modules.
SOURCE_MANAGER_LINE_TABLE Record code for the source manager line table information, which stores information about #line directives.
OBJC_CATEGORIES_MAP Record code for map of Objective-C class definition IDs to the ObjC categories in a module that are attached to that class.
FILE_SORTED_DECLS Record code for a file sorted array of DeclIDs in a module.
IMPORTED_MODULES Record code for an array of all of the (sub)modules that were imported by the AST file.
OBJC_CATEGORIES Record code for the array of Objective-C categories (including extensions). This array can only be interpreted properly using the Objective-C categories map.
MACRO_OFFSET Record code for the table of offsets of each macro ID. The offset table contains offsets into the blob stored in the preprocessor block. Each offset points to the corresponding macro definition.
INTERESTING_IDENTIFIERS A list of "interesting" identifiers. Only used in C++ (where we don't normally do lookups into the serialized identifier table). These are eagerly deserialized.
UNDEFINED_BUT_USED Record code for undefined but used functions and variables that need a definition in this TU.
LATE_PARSED_TEMPLATE Record code for late parsed template functions.
OPTIMIZE_PRAGMA_OPTIONS Record code for #pragma optimize options.
UNUSED_LOCAL_TYPEDEF_NAME_CANDIDATES Record code for potentially unused local typedef names.
DELETE_EXPRS_TO_ANALYZE Delete expressions that will be analyzed later.
MSSTRUCT_PRAGMA_OPTIONS Record code for #pragma ms_struct options.
POINTERS_TO_MEMBERS_PRAGMA_OPTIONS Record code for #pragma ms_struct options.
CUDA_PRAGMA_FORCE_HOST_DEVICE_DEPTH Number of unmatched #pragma clang cuda_force_host_device begin directives we've seen.
OPENCL_EXTENSION_TYPES Record code for types associated with OpenCL extensions.
OPENCL_EXTENSION_DECLS Record code for declarations associated with OpenCL extensions.
MODULAR_CODEGEN_DECLS
ALIGN_PACK_PRAGMA_OPTIONS Record code for #pragma align/pack options.
PP_CONDITIONAL_STACK The stack of open #ifs/#ifdefs recorded in a preamble.
PPD_SKIPPED_RANGES A table of skipped ranges within the preprocessing record.
DECLS_TO_CHECK_FOR_DEFERRED_DIAGS Record code for the Decls to be checked for deferred diags.
FLOAT_CONTROL_PRAGMA_OPTIONS Record code for #pragma float_control options.
PP_ASSUME_NONNULL_LOC ID 66 used to be the list of included files. Record code for an unterminated #pragma clang assume_nonnull begin recorded in a preamble.
DELAYED_NAMESPACE_LEXICAL_VISIBLE_RECORD Record code for lexical and visible block for delayed namespace in reduced BMI.
PP_UNSAFE_BUFFER_USAGE Record code for #pragma clang unsafe_buffer_usage begin/end.
VTABLES_TO_EMIT Record code for vtables to emit.
RELATED_DECLS_MAP Record code for related declarations that have to be deserialized together from the same module.
DECLS_WITH_EFFECTS_TO_VERIFY Record code for Sema's vector of functions/blocks with effects to be verified.
UPDATE_SPECIALIZATION Record code for updated specialization.
CXX_ADDED_TEMPLATE_SPECIALIZATION
CXX_ADDED_TEMPLATE_PARTIAL_SPECIALIZATION
UPDATE_MODULE_LOCAL_VISIBLE
UPDATE_TU_LOCAL_VISIBLE

Definition at line 451 of file ASTBitCodes.h.

BlockIDs

Describes the various kinds of blocks that occur within an AST file.

Enumerator
AST_BLOCK_ID The AST block, which acts as a container around the full AST block.
SOURCE_MANAGER_BLOCK_ID The block containing information about the source manager.
PREPROCESSOR_BLOCK_ID The block containing information about the preprocessor.
DECLTYPES_BLOCK_ID The block containing the definitions of all of the types and decls used within the AST file.
PREPROCESSOR_DETAIL_BLOCK_ID The block containing the detailed preprocessing record.
SUBMODULE_BLOCK_ID The block containing the submodule structure.
COMMENTS_BLOCK_ID The block containing comments.
CONTROL_BLOCK_ID The control block, which contains all of the information that needs to be validated prior to committing to loading the AST file.
INPUT_FILES_BLOCK_ID The block of input files, which were used as inputs to create this AST file. This block is part of the control block.
OPTIONS_BLOCK_ID The block of configuration options, used to check that a module is being used in a configuration compatible with the configuration in which it was built. This block is part of the control block.
EXTENSION_BLOCK_ID A block containing a module file extension.
UNHASHED_CONTROL_BLOCK_ID A block with unhashed content. These records should not change the ASTFileSignature. See UnhashedControlBlockRecordTypes for the list of records.

Definition at line 293 of file ASTBitCodes.h.

CommentRecordTypes

Record types used within a comments block.

Enumerator
COMMENTS_RAW_COMMENT

Definition at line 884 of file ASTBitCodes.h.

ControlRecordTypes

Record types that occur within the control block.

Enumerator
METADATA AST file metadata, including the AST file version number and information about the compiler used to build this AST file.
IMPORT Record code for another AST file imported by this AST file.
ORIGINAL_FILE Record code for the original file that was used to generate the AST file, including both its file ID and its name.
ORIGINAL_FILE_ID Record code for file ID of the file or buffer that was used to generate the AST file.
INPUT_FILE_OFFSETS Offsets into the input-files block where input files reside.
MODULE_NAME Record code for the module name.
MODULE_MAP_FILE Record code for the module map file that was used to build this AST file.
MODULE_DIRECTORY Record code for the module build directory.

Definition at line 348 of file ASTBitCodes.h.

DeclUpdateKind

Enumerator
CXXAddedImplicitMember
CXXAddedAnonymousNamespace
CXXAddedFunctionDefinition
CXXAddedVarDefinition
CXXPointOfInstantiation
CXXInstantiatedClassDefinition
CXXInstantiatedDefaultArgument
CXXInstantiatedDefaultMemberInitializer
CXXResolvedDtorDelete
CXXResolvedExceptionSpec
CXXDeducedReturnType
DeclMarkedUsed
ManglingNumber
StaticLocalNumber
DeclMarkedOpenMPThreadPrivate
DeclMarkedOpenMPAllocate
DeclMarkedOpenMPDeclareTarget
DeclExported
AddedAttrToRecord
CXXResolvedDtorGlobDelete
CXXResolvedDtorArrayDelete
CXXResolvedDtorGlobArrayDelete

Definition at line 25 of file ASTCommon.h.

ExtensionBlockRecordTypes

Record code for extension blocks.

Enumerator
EXTENSION_METADATA Metadata describing this particular extension.
FIRST_EXTENSION_RECORD_ID The first record ID allocated to the extensions themselves.

Definition at line 432 of file ASTBitCodes.h.

InputFileRecordTypes

Record types that occur within the input-files block inside the control block.

Enumerator
INPUT_FILE An input file.
INPUT_FILE_HASH The input file content hash.

Definition at line 442 of file ASTBitCodes.h.

ModuleKind

Specifies the kind of module that has been loaded.

Enumerator
MK_ImplicitModule File is an implicitly-loaded module.
MK_ExplicitModule File is an explicitly-loaded module.
MK_PCH File is a PCH file treated as such.
MK_Preamble File is a PCH file treated as the preamble.
MK_MainFile File is a PCH file treated as the actual main file.
MK_PrebuiltModule File is from a prebuilt module path.

Definition at line 43 of file ModuleFile.h.

OptionsRecordTypes

Record types that occur within the options block inside the control block.

Enumerator
LANGUAGE_OPTIONS Record code for the language options table. The record with this code contains the contents of the LangOptions structure. We serialize the entire contents of the structure, and let the reader decide which options are actually important to check.
TARGET_OPTIONS Record code for the target options table.
FILE_SYSTEM_OPTIONS Record code for the filesystem options table.
HEADER_SEARCH_OPTIONS Record code for the headers search options table.
PREPROCESSOR_OPTIONS Record code for the preprocessor options table.
CODEGEN_OPTIONS Record code for the codegen options table.

Definition at line 382 of file ASTBitCodes.h.

PreprocessorDetailRecordTypes

Record types used within a preprocessor detail block.

Enumerator
PPD_MACRO_EXPANSION Describes a macro expansion within the preprocessing record.
PPD_MACRO_DEFINITION Describes a macro definition within the preprocessing record.
PPD_INCLUSION_DIRECTIVE Describes an inclusion directive within the preprocessing record.

Definition at line 802 of file ASTBitCodes.h.

PreprocessorRecordTypes

Record types used within a preprocessor block.

Enumerator
PP_MACRO_OBJECT_LIKE An object-like macro definition. [PP_MACRO_OBJECT_LIKE, IdentInfoID, SLoc, IsUsed]
PP_MACRO_FUNCTION_LIKE A function-like macro definition. [PP_MACRO_FUNCTION_LIKE, , IsC99Varargs, IsGNUVarars, NumArgs, ArgIdentInfoID* ]
PP_TOKEN Describes one token. [PP_TOKEN, SLoc, Length, IdentInfoID, Kind, Flags]
PP_MACRO_DIRECTIVE_HISTORY The macro directives history for a particular identifier.
PP_MODULE_MACRO A macro directive exported by a module. [PP_MODULE_MACRO, SubmoduleID, MacroID, (Overridden SubmoduleID)*]

Definition at line 776 of file ASTBitCodes.h.

SourceManagerRecordTypes

Record types used within a source manager block.

Enumerator
SM_SLOC_FILE_ENTRY Describes a source location entry (SLocEntry) for a file.
SM_SLOC_BUFFER_ENTRY Describes a source location entry (SLocEntry) for a buffer.
SM_SLOC_BUFFER_BLOB Describes a blob that contains the data for a buffer entry. This kind of record always directly follows a SM_SLOC_BUFFER_ENTRY record or a SM_SLOC_FILE_ENTRY with an overridden buffer.
SM_SLOC_BUFFER_BLOB_COMPRESSED Describes a zlib-compressed blob that contains the data for a buffer entry.
SM_SLOC_EXPANSION_ENTRY Describes a source location entry (SLocEntry) for a macro expansion.

Definition at line 751 of file ASTBitCodes.h.

SubmoduleRecordTypes

Record types used within a submodule description block.

Enumerator
SUBMODULE_METADATA Metadata for submodules as a whole.
SUBMODULE_DEFINITION Defines the major attributes of a submodule, including its name and parent.
SUBMODULE_UMBRELLA_HEADER Specifies the umbrella header used to create this module, if any.
SUBMODULE_HEADER Specifies a header that falls into this (sub)module.
SUBMODULE_TOPHEADER Specifies a top-level header that falls into this (sub)module.
SUBMODULE_UMBRELLA_DIR Specifies an umbrella directory.
SUBMODULE_IMPORTS Specifies the submodules that are imported by this submodule.
SUBMODULE_EXPORTS Specifies the submodules that are re-exported from this submodule.
SUBMODULE_REQUIRES Specifies a required feature.
SUBMODULE_EXCLUDED_HEADER Specifies a header that has been explicitly excluded from this submodule.
SUBMODULE_LINK_LIBRARY Specifies a library or framework to link against.
SUBMODULE_CONFIG_MACRO Specifies a configuration macro for this module.
SUBMODULE_CONFLICT Specifies a conflict with another module.
SUBMODULE_PRIVATE_HEADER Specifies a header that is private to this submodule.
SUBMODULE_TEXTUAL_HEADER Specifies a header that is part of the module but must be textually included.
SUBMODULE_PRIVATE_TEXTUAL_HEADER Specifies a header that is private to this submodule but must be textually included.
SUBMODULE_INITIALIZERS Specifies some declarations with initializers that must be emitted to initialize the module.
SUBMODULE_EXPORT_AS Specifies the name of the module that will eventually re-export the entities in this module.
SUBMODULE_AFFECTING_MODULES Specifies affecting modules that were not imported.

Definition at line 815 of file ASTBitCodes.h.

UnhashedControlBlockRecordTypes

Record codes for the unhashed control block.

Enumerator
SIGNATURE Record code for the signature that identifiers this AST file.
AST_BLOCK_HASH Record code for the content hash of the AST block.
DIAGNOSTIC_OPTIONS Record code for the diagnostic options table.
HEADER_SEARCH_PATHS Record code for the headers search paths.
DIAG_PRAGMA_MAPPINGS Record code for #pragma diagnostic mappings.
HEADER_SEARCH_ENTRY_USAGE Record code for the indices of used header search entries.
VFS_USAGE Record code for the indices of used VFSs.

Definition at line 408 of file ASTBitCodes.h.

ComputeHash()

getDefinitiveDeclContext()

Retrieve the "definitive" declaration that provides all of the visible entries for the given declaration context, if there is one.

The "definitive" declaration is the only place where we need to look to find information about the declarations within the given declaration context. For example, C++ and Objective-C classes, C structs/unions, and Objective-C protocols, categories, and extensions are all defined in a single place in the source code, so they have definitive declarations associated with them. C++ namespaces, on the other hand, can have multiple definitions.

Definition at line 306 of file ASTCommon.cpp.

References clang::cast(), clang::DeclContext::getDeclKind(), and getDefinition().

isPartOfPerModuleInitializer()

bool clang::serialization::isPartOfPerModuleInitializer ( const Decl * D) inline

Determine whether the given declaration will be included in the per-module initializer if it needs to be eagerly handed to the AST consumer.

If so, we should not hand it to the consumer when deserializing it, nor include it in the list of eagerly deserialized declarations.

Definition at line 95 of file ASTCommon.h.

References clang::isa(), and clang::isTemplateInstantiation().

Referenced by isRequiredDecl().

isRedeclarableDeclKind()

bool clang::serialization::isRedeclarableDeclKind ( unsigned Kind )

makeNullableFromOptional()

template<class T>

T clang::serialization::makeNullableFromOptional ( const std::optional< T > & value) inline

makeOptionalFromNullable()

template<class T>

std::optional< T > clang::serialization::makeOptionalFromNullable ( const T & value) inline

makeOptionalFromPointer()

template<class T>

std::optional< T * > clang::serialization::makeOptionalFromPointer ( T * value) inline

makePointerFromOptional()

template<class T>

T * clang::serialization::makePointerFromOptional ( std::optional< T * > value) inline

needsAnonymousDeclarationNumber()

bool clang::serialization::needsAnonymousDeclarationNumber ( const NamedDecl * D )

Determine whether the given declaration needs an anonymous declaration number.

Definition at line 475 of file ASTCommon.cpp.

References clang::NamedDecl::getDeclName(), clang::Decl::getFriendObjectKind(), clang::Decl::getLexicalDeclContext(), clang::isa(), clang::DeclContext::isDependentContext(), and clang::DeclContext::isFunctionOrMethod().

Referenced by clang::ASTReader::CompleteRedeclChain(), clang::ASTWriter::getAnonymousDeclarationNumber(), numberAnonymousDeclsWithin(), clang::ASTDeclWriter::VisitEnumDecl(), clang::ASTDeclWriter::VisitNamedDecl(), clang::ASTDeclWriter::VisitRecordDecl(), clang::ASTDeclWriter::VisitTypedefDecl(), clang::ASTDeclWriter::VisitUsingShadowDecl(), and clang::ASTDeclWriter::VisitVarDecl().

numberAnonymousDeclsWithin()

template

void clang::serialization::numberAnonymousDeclsWithin ( const DeclContext * DC,
Fn Visit )

StableHashForTemplateArguments()

Calculate a stable hash value for template arguments.

We guarantee that the same template arguments must have the same hashed values. But we don't guarantee that the template arguments with the same hashed value are the same template arguments.

ODR hashing may not be the best mechanism to hash the template arguments. ODR hashing is (or perhaps, should be) about determining whether two things are spelled the same way and have the same meaning (as required by the C++ ODR), whereas what we want here is whether they have the same meaning regardless of spelling. Maybe we can get away with reusing ODR hashing anyway, on the basis that any canonical, non-dependent template argument should have the same (invented) spelling in every translation unit, but it is not sure that's true in all cases. There may still be cases where the canonical type includes some aspect of "whatever we saw first", in which case the ODR hash can differ across translation units for non-dependent, canonical template arguments that are spelled differently but have the same meaning. But it is not easy to raise examples.

Definition at line 403 of file TemplateArgumentHasher.cpp.

TypeIdxFromBuiltin()

Definition at line 26 of file ASTCommon.cpp.

References clang::BuiltinType::getKind(), PREDEF_TYPE_ACCUM_ID, PREDEF_TYPE_ARC_UNBRIDGED_CAST, PREDEF_TYPE_ARRAY_SECTION, PREDEF_TYPE_BFLOAT16_ID, PREDEF_TYPE_BOOL_ID, PREDEF_TYPE_BOUND_MEMBER, PREDEF_TYPE_BUILTIN_FN, PREDEF_TYPE_CHAR16_ID, PREDEF_TYPE_CHAR32_ID, PREDEF_TYPE_CHAR8_ID, PREDEF_TYPE_CHAR_S_ID, PREDEF_TYPE_CHAR_U_ID, PREDEF_TYPE_CLK_EVENT_ID, PREDEF_TYPE_DEPENDENT_ID, PREDEF_TYPE_DOUBLE_ID, PREDEF_TYPE_EVENT_ID, PREDEF_TYPE_FLOAT128_ID, PREDEF_TYPE_FLOAT16_ID, PREDEF_TYPE_FLOAT_ID, PREDEF_TYPE_FRACT_ID, PREDEF_TYPE_HALF_ID, PREDEF_TYPE_IBM128_ID, PREDEF_TYPE_INCOMPLETE_MATRIX_IDX, PREDEF_TYPE_INT128_ID, PREDEF_TYPE_INT_ID, PREDEF_TYPE_LONG_ACCUM_ID, PREDEF_TYPE_LONG_FRACT_ID, PREDEF_TYPE_LONG_ID, PREDEF_TYPE_LONGDOUBLE_ID, PREDEF_TYPE_LONGLONG_ID, PREDEF_TYPE_NULLPTR_ID, PREDEF_TYPE_OBJC_CLASS, PREDEF_TYPE_OBJC_ID, PREDEF_TYPE_OBJC_SEL, PREDEF_TYPE_OMP_ARRAY_SHAPING, PREDEF_TYPE_OMP_ITERATOR, PREDEF_TYPE_OVERLOAD_ID, PREDEF_TYPE_PSEUDO_OBJECT, PREDEF_TYPE_QUEUE_ID, PREDEF_TYPE_RESERVE_ID_ID, PREDEF_TYPE_SAMPLER_ID, PREDEF_TYPE_SAT_ACCUM_ID, PREDEF_TYPE_SAT_FRACT_ID, PREDEF_TYPE_SAT_LONG_ACCUM_ID, PREDEF_TYPE_SAT_LONG_FRACT_ID, PREDEF_TYPE_SAT_SHORT_ACCUM_ID, PREDEF_TYPE_SAT_SHORT_FRACT_ID, PREDEF_TYPE_SAT_UACCUM_ID, PREDEF_TYPE_SAT_UFRACT_ID, PREDEF_TYPE_SAT_ULONG_ACCUM_ID, PREDEF_TYPE_SAT_ULONG_FRACT_ID, PREDEF_TYPE_SAT_USHORT_ACCUM_ID, PREDEF_TYPE_SAT_USHORT_FRACT_ID, PREDEF_TYPE_SCHAR_ID, PREDEF_TYPE_SHORT_ACCUM_ID, PREDEF_TYPE_SHORT_FRACT_ID, PREDEF_TYPE_SHORT_ID, PREDEF_TYPE_UACCUM_ID, PREDEF_TYPE_UCHAR_ID, PREDEF_TYPE_UFRACT_ID, PREDEF_TYPE_UINT128_ID, PREDEF_TYPE_UINT_ID, PREDEF_TYPE_ULONG_ACCUM_ID, PREDEF_TYPE_ULONG_FRACT_ID, PREDEF_TYPE_ULONG_ID, PREDEF_TYPE_ULONGLONG_ID, PREDEF_TYPE_UNKNOWN_ANY, PREDEF_TYPE_UNRESOLVED_TEMPLATE, PREDEF_TYPE_USHORT_ACCUM_ID, PREDEF_TYPE_USHORT_FRACT_ID, PREDEF_TYPE_USHORT_ID, PREDEF_TYPE_VOID_ID, and PREDEF_TYPE_WCHAR_ID.

Referenced by MakeTypeID().

NUM_PREDEF_IDENT_IDS

const unsigned int clang::serialization::NUM_PREDEF_IDENT_IDS = 1

NUM_PREDEF_MACRO_IDS

const unsigned int clang::serialization::NUM_PREDEF_MACRO_IDS = 1

NUM_PREDEF_PP_ENTITY_IDS

const unsigned int clang::serialization::NUM_PREDEF_PP_ENTITY_IDS = 1

NUM_PREDEF_SELECTOR_IDS

const unsigned int clang::serialization::NUM_PREDEF_SELECTOR_IDS = 1

NUM_PREDEF_SUBMODULE_IDS

const unsigned int clang::serialization::NUM_PREDEF_SUBMODULE_IDS = 1

VERSION_MAJOR

const unsigned clang::serialization::VERSION_MAJOR = 35

AST file major version number supported by this version of Clang.

Whenever the AST file format changes in a way that makes it incompatible with previous versions (such that a reader designed for the previous version could not support reading the new version), this number should be increased.

Version 4 of AST files also requires that the version control branch and revision match exactly, since there is no backward compatibility of AST files at this time.

Definition at line 47 of file ASTBitCodes.h.

Referenced by getModuleContextHash(), clang::CompilerInvocation::getModuleHash(), and clang::ASTReader::readASTFileControlBlock().

VERSION_MINOR

const unsigned clang::serialization::VERSION_MINOR = 0

AST file minor version number supported by this version of Clang.

Whenever the AST format changes in a way that is still compatible with previous versions (such that a reader designed for the previous version could still support reading the new version by ignoring new kinds of subblocks), this number should be increased.

Definition at line 57 of file ASTBitCodes.h.

Referenced by getModuleContextHash(), and clang::CompilerInvocation::getModuleHash().