Home | History | Annotate | Download | only in AST
      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 
     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"
     36 
     37 #undef DECLARATOR_TYPELOC
     38 #undef TYPESPEC_TYPELOC
     39 #undef ABSTRACT_TYPELOC
     40 #undef UNQUAL_TYPELOC
     41 #undef TYPELOC
     42