//===--- Type.h - C Language Family Type Representation ---------*- C++ -*-===////// The LLVM Compiler Infrastructure//// This file is distributed under the University of Illinois Open Source// License. See LICENSE.TXT for details.////===----------------------------------------------------------------------===////// This file defines the Type interface and subclasses.////===----------------------------------------------------------------------===//#ifndef LLVM_CLANG_AST_TYPE_H#define LLVM_CLANG_AST_TYPE_H#include"llvm/Support/Casting.h"#include"llvm/ADT/FoldingSet.h"#include"llvm/ADT/APSInt.h"#include"llvm/Bitcode/SerializationFwd.h"usingllvm::isa;usingllvm::cast;usingllvm::cast_or_null;usingllvm::dyn_cast;usingllvm::dyn_cast_or_null;namespaceclang{classASTContext;classType;classTypedefDecl;classTagDecl;classRecordDecl;classCXXRecordDecl;classEnumDecl;classFieldDecl;classObjCInterfaceDecl;classObjCProtocolDecl;classObjCMethodDecl;classExpr;classStmt;classSourceLocation;classPointerLikeType;classPointerType;classBlockPointerType;classReferenceType;classVectorType;classArrayType;classConstantArrayType;classVariableArrayType;classIncompleteArrayType;classRecordType;classEnumType;classComplexType;classTagType;classTypedefType;classFunctionType;classFunctionTypeProto;classExtVectorType;classBuiltinType;classObjCInterfaceType;classObjCQualifiedIdType;classObjCQualifiedInterfaceType;classStmtIteratorBase;/// QualType - For efficiency, we don't store CVR-qualified types as nodes on/// their own: instead each reference to a type stores the qualifiers. This/// greatly reduces the number of nodes we need to allocate for types (for/// example we only need one for 'int', 'const int