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