1 //===-- TypeLocNodes.def - Metadata about TypeLoc wrappers ------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file defines the TypeLoc info database. Each node is
11 // enumerated by providing its core name (e.g., "Pointer" for "PointerTypeLoc")
12 // and base class (e.g., "DeclaratorLoc"). All nodes except QualifiedTypeLoc
15 // TYPELOC(Class, Base) - A TypeLoc subclass. If UNQUAL_TYPELOC is
16 // provided, there will be exactly one of these, Qualified.
18 // UNQUAL_TYPELOC(Class, Base, Type) - An UnqualTypeLoc subclass.
20 // ABSTRACT_TYPELOC(Class) - Refers to TypeSpecLoc and DeclaratorLoc.
22 //===----------------------------------------------------------------------===//
24 #ifndef UNQUAL_TYPELOC
25 # define UNQUAL_TYPELOC(Class, Base) TYPELOC(Class, Base)
28 #ifndef ABSTRACT_TYPELOC
29 # define ABSTRACT_TYPELOC(Class, Base) UNQUAL_TYPELOC(Class, Base)
32 TYPELOC(Qualified, TypeLoc)
33 #define TYPE(Class, Base) UNQUAL_TYPELOC(Class, Base##Loc)
34 #define ABSTRACT_TYPE(Class, Base) ABSTRACT_TYPELOC(Class, Base##Loc)
35 #include "clang/AST/TypeNodes.def"
37 #undef DECLARATOR_TYPELOC
38 #undef TYPESPEC_TYPELOC
39 #undef ABSTRACT_TYPELOC