/// constant describes a record for a specific type class in the
/// AST. Note that DeclCode values share this code space.
enum TypeCode {
- /// An ExtQualType record.
- TYPE_EXT_QUAL = 1,
-
- /// A ComplexType record.
- TYPE_COMPLEX = 3,
-
- /// A PointerType record.
- TYPE_POINTER = 4,
-
- /// A BlockPointerType record.
- TYPE_BLOCK_POINTER = 5,
-
- /// An LValueReferenceType record.
- TYPE_LVALUE_REFERENCE = 6,
-
- /// An RValueReferenceType record.
- TYPE_RVALUE_REFERENCE = 7,
-
- /// A MemberPointerType record.
- TYPE_MEMBER_POINTER = 8,
-
- /// A ConstantArrayType record.
- TYPE_CONSTANT_ARRAY = 9,
-
- /// An IncompleteArrayType record.
- TYPE_INCOMPLETE_ARRAY = 10,
-
- /// A VariableArrayType record.
- TYPE_VARIABLE_ARRAY = 11,
-
- /// A VectorType record.
- TYPE_VECTOR = 12,
-
- /// An ExtVectorType record.
- TYPE_EXT_VECTOR = 13,
-
- /// A FunctionNoProtoType record.
- TYPE_FUNCTION_NO_PROTO = 14,
-
- /// A FunctionProtoType record.
- TYPE_FUNCTION_PROTO = 15,
-
- /// A TypedefType record.
- TYPE_TYPEDEF = 16,
-
- /// A TypeOfExprType record.
- TYPE_TYPEOF_EXPR = 17,
-
- /// A TypeOfType record.
- TYPE_TYPEOF = 18,
-
- /// A RecordType record.
- TYPE_RECORD = 19,
-
- /// An EnumType record.
- TYPE_ENUM = 20,
-
- /// An ObjCInterfaceType record.
- TYPE_OBJC_INTERFACE = 21,
-
- /// An ObjCObjectPointerType record.
- TYPE_OBJC_OBJECT_POINTER = 22,
-
- /// a DecltypeType record.
- TYPE_DECLTYPE = 23,
-
- /// An ElaboratedType record.
- TYPE_ELABORATED = 24,
-
- /// A SubstTemplateTypeParmType record.
- TYPE_SUBST_TEMPLATE_TYPE_PARM = 25,
+#define TYPE_BIT_CODE(CLASS_ID, CODE_ID, CODE_VALUE) \
+ TYPE_##CODE_ID = CODE_VALUE,
+#include "clang/Serialization/TypeBitCodes.def"
- /// An UnresolvedUsingType record.
- TYPE_UNRESOLVED_USING = 26,
-
- /// An InjectedClassNameType record.
- TYPE_INJECTED_CLASS_NAME = 27,
-
- /// An ObjCObjectType record.
- TYPE_OBJC_OBJECT = 28,
-
- /// An TemplateTypeParmType record.
- TYPE_TEMPLATE_TYPE_PARM = 29,
-
- /// An TemplateSpecializationType record.
- TYPE_TEMPLATE_SPECIALIZATION = 30,
-
- /// A DependentNameType record.
- TYPE_DEPENDENT_NAME = 31,
-
- /// A DependentTemplateSpecializationType record.
- TYPE_DEPENDENT_TEMPLATE_SPECIALIZATION = 32,
-
- /// A DependentSizedArrayType record.
- TYPE_DEPENDENT_SIZED_ARRAY = 33,
-
- /// A ParenType record.
- TYPE_PAREN = 34,
-
- /// A PackExpansionType record.
- TYPE_PACK_EXPANSION = 35,
-
- /// An AttributedType record.
- TYPE_ATTRIBUTED = 36,
-
- /// A SubstTemplateTypeParmPackType record.
- TYPE_SUBST_TEMPLATE_TYPE_PARM_PACK = 37,
-
- /// A AutoType record.
- TYPE_AUTO = 38,
-
- /// A UnaryTransformType record.
- TYPE_UNARY_TRANSFORM = 39,
-
- /// An AtomicType record.
- TYPE_ATOMIC = 40,
-
- /// A DecayedType record.
- TYPE_DECAYED = 41,
-
- /// An AdjustedType record.
- TYPE_ADJUSTED = 42,
-
- /// A PipeType record.
- TYPE_PIPE = 43,
-
- /// An ObjCTypeParamType record.
- TYPE_OBJC_TYPE_PARAM = 44,
-
- /// A DeducedTemplateSpecializationType record.
- TYPE_DEDUCED_TEMPLATE_SPECIALIZATION = 45,
-
- /// A DependentSizedExtVectorType record.
- TYPE_DEPENDENT_SIZED_EXT_VECTOR = 46,
-
- /// A DependentAddressSpaceType record.
- TYPE_DEPENDENT_ADDRESS_SPACE = 47,
-
- /// A dependentSizedVectorType record.
- TYPE_DEPENDENT_SIZED_VECTOR = 48,
-
- /// A type defined in a macro.
- TYPE_MACRO_QUALIFIED = 49
+ /// An ExtQualType record.
+ TYPE_EXT_QUAL = 1
};
/// The type IDs for special types constructed by semantic
--- /dev/null
+//===--- TypeNodeBitCodes.def - Type to bitcode correspondance --*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file provides an x-macro link between AST Type IDs and
+// their stable serialized bit-code record type IDs.
+//
+//===----------------------------------------------------------------------===//
+
+TYPE_BIT_CODE(Complex, COMPLEX, 3)
+TYPE_BIT_CODE(Pointer, POINTER, 4)
+TYPE_BIT_CODE(BlockPointer, BLOCK_POINTER, 5)
+TYPE_BIT_CODE(LValueReference, LVALUE_REFERENCE, 6)
+TYPE_BIT_CODE(RValueReference, RVALUE_REFERENCE, 7)
+TYPE_BIT_CODE(MemberPointer, MEMBER_POINTER, 8)
+TYPE_BIT_CODE(ConstantArray, CONSTANT_ARRAY, 9)
+TYPE_BIT_CODE(IncompleteArray, INCOMPLETE_ARRAY, 10)
+TYPE_BIT_CODE(VariableArray, VARIABLE_ARRAY, 11)
+TYPE_BIT_CODE(Vector, VECTOR, 12)
+TYPE_BIT_CODE(ExtVector, EXT_VECTOR, 13)
+TYPE_BIT_CODE(FunctionNoProto, FUNCTION_NO_PROTO, 14)
+TYPE_BIT_CODE(FunctionProto, FUNCTION_PROTO, 15)
+TYPE_BIT_CODE(Typedef, TYPEDEF, 16)
+TYPE_BIT_CODE(TypeOfExpr, TYPEOF_EXPR, 17)
+TYPE_BIT_CODE(TypeOf, TYPEOF, 18)
+TYPE_BIT_CODE(Record, RECORD, 19)
+TYPE_BIT_CODE(Enum, ENUM, 20)
+TYPE_BIT_CODE(ObjCInterface, OBJC_INTERFACE, 21)
+TYPE_BIT_CODE(ObjCObjectPointer, OBJC_OBJECT_POINTER, 22)
+TYPE_BIT_CODE(Decltype, DECLTYPE, 23)
+TYPE_BIT_CODE(Elaborated, ELABORATED, 24)
+TYPE_BIT_CODE(SubstTemplateTypeParm, SUBST_TEMPLATE_TYPE_PARM, 25)
+TYPE_BIT_CODE(UnresolvedUsing, UNRESOLVED_USING, 26)
+TYPE_BIT_CODE(InjectedClassName, INJECTED_CLASS_NAME, 27)
+TYPE_BIT_CODE(ObjCObject, OBJC_OBJECT, 28)
+TYPE_BIT_CODE(TemplateTypeParm, TEMPLATE_TYPE_PARM, 29)
+TYPE_BIT_CODE(TemplateSpecialization, TEMPLATE_SPECIALIZATION, 30)
+TYPE_BIT_CODE(DependentName, DEPENDENT_NAME, 31)
+TYPE_BIT_CODE(DependentTemplateSpecialization, DEPENDENT_TEMPLATE_SPECIALIZATION, 32)
+TYPE_BIT_CODE(DependentSizedArray, DEPENDENT_SIZED_ARRAY, 33)
+TYPE_BIT_CODE(Paren, PAREN, 34)
+TYPE_BIT_CODE(PackExpansion, PACK_EXPANSION, 35)
+TYPE_BIT_CODE(Attributed, ATTRIBUTED, 36)
+TYPE_BIT_CODE(SubstTemplateTypeParmPack, SUBST_TEMPLATE_TYPE_PARM_PACK, 37)
+TYPE_BIT_CODE(Auto, AUTO, 38)
+TYPE_BIT_CODE(UnaryTransform, UNARY_TRANSFORM, 39)
+TYPE_BIT_CODE(Atomic, ATOMIC, 40)
+TYPE_BIT_CODE(Decayed, DECAYED, 41)
+TYPE_BIT_CODE(Adjusted, ADJUSTED, 42)
+TYPE_BIT_CODE(Pipe, PIPE, 43)
+TYPE_BIT_CODE(ObjCTypeParam, OBJC_TYPE_PARAM, 44)
+TYPE_BIT_CODE(DeducedTemplateSpecialization, DEDUCED_TEMPLATE_SPECIALIZATION, 45)
+TYPE_BIT_CODE(DependentSizedExtVector, DEPENDENT_SIZED_EXT_VECTOR, 46)
+TYPE_BIT_CODE(DependentAddressSpace, DEPENDENT_ADDRESS_SPACE, 47)
+TYPE_BIT_CODE(DependentVector, DEPENDENT_SIZED_VECTOR, 48)
+TYPE_BIT_CODE(MacroQualified, MACRO_QUALIFIED, 49)
+
+#undef TYPE_BIT_CODE