1//===-- TypeLocNodes.def - Metadata about TypeLoc wrappers ------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
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
13//  are associated
14//
15//    TYPELOC(Class, Base) - A TypeLoc subclass.  If UNQUAL_TYPELOC is
16//      provided, there will be exactly one of these, Qualified.
17//
18//    UNQUAL_TYPELOC(Class, Base, Type) - An UnqualTypeLoc subclass.
19//
20//    ABSTRACT_TYPELOC(Class) - Refers to TypeSpecLoc and DeclaratorLoc.
21//
22//===----------------------------------------------------------------------===//
23
24#ifndef UNQUAL_TYPELOC
25#  define UNQUAL_TYPELOC(Class, Base) TYPELOC(Class, Base)
26#endif
27
28#ifndef ABSTRACT_TYPELOC
29#  define ABSTRACT_TYPELOC(Class, Base) UNQUAL_TYPELOC(Class, Base)
30#endif
31
32TYPELOC(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"
36
37#undef DECLARATOR_TYPELOC
38#undef TYPESPEC_TYPELOC
39#undef ABSTRACT_TYPELOC
40#undef UNQUAL_TYPELOC
41#undef TYPELOC
42