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