//===-- TypeLocNodes.def - Metadata about TypeLoc wrappers ------*- 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 TypeLoc info database. Each node is // enumerated by providing its core name (e.g., "Pointer" for "PointerTypeLoc") // and base class (e.g., "DeclaratorLoc"). All nodes except QualifiedTypeLoc // are associated // // TYPELOC(Class, Base) - A TypeLoc subclass. If UNQUAL_TYPELOC is // provided, there will be exactly one of these, Qualified. // // UNQUAL_TYPELOC(Class, Base, Type) - An UnqualTypeLoc subclass. // // ABSTRACT_TYPELOC(Class) - Refers to TypeSpecLoc and DeclaratorLoc. // //===----------------------------------------------------------------------===// #ifndef UNQUAL_TYPELOC # define UNQUAL_TYPELOC(Class, Base) TYPELOC(Class, Base) #endif #ifndef ABSTRACT_TYPELOC # define ABSTRACT_TYPELOC(Class, Base) UNQUAL_TYPELOC(Class, Base) #endif TYPELOC(Qualified, TypeLoc) #define TYPE(Class, Base) UNQUAL_TYPELOC(Class, Base##Loc) #define ABSTRACT_TYPE(Class, Base) ABSTRACT_TYPELOC(Class, Base##Loc) #include "clang/AST/TypeNodes.def" #undef DECLARATOR_TYPELOC #undef TYPESPEC_TYPELOC #undef ABSTRACT_TYPELOC #undef UNQUAL_TYPELOC #undef TYPELOC