1 //===-- TypeLocNodes.def - Metadata about TypeLoc wrappers ------*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 // This file defines the TypeLoc info database. Each node is
10 // enumerated by providing its core name (e.g., "Pointer" for "PointerTypeLoc")
11 // and base class (e.g., "DeclaratorLoc"). All nodes except QualifiedTypeLoc
14 // TYPELOC(Class, Base) - A TypeLoc subclass. If UNQUAL_TYPELOC is
15 // provided, there will be exactly one of these, Qualified.
17 // UNQUAL_TYPELOC(Class, Base, Type) - An UnqualTypeLoc subclass.
19 // ABSTRACT_TYPELOC(Class) - Refers to TypeSpecLoc and DeclaratorLoc.
21 //===----------------------------------------------------------------------===//
23 #ifndef UNQUAL_TYPELOC
24 # define UNQUAL_TYPELOC(Class, Base) TYPELOC(Class, Base)
27 #ifndef ABSTRACT_TYPELOC
28 # define ABSTRACT_TYPELOC(Class, Base) UNQUAL_TYPELOC(Class, Base)
31 TYPELOC(Qualified, TypeLoc)
32 #define TYPE(Class, Base) UNQUAL_TYPELOC(Class, Base##Loc)
33 #define ABSTRACT_TYPE(Class, Base) ABSTRACT_TYPELOC(Class, Base##Loc)
34 #include "clang/AST/TypeNodes.def"
36 #undef DECLARATOR_TYPELOC
37 #undef TYPESPEC_TYPELOC
38 #undef ABSTRACT_TYPELOC