1//===-- Symbols.def - Metadata about SymExpr kinds --------------*- 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// The list of symbols (SymExpr sub-classes) used in the Static Analyzer. 11// In order to use this information, users of this file must define 12// one or more of the three macros: 13// 14// SYMBOL(Id, Parent) - for specific SymExpr sub-classes, reserving the 15// IdKind identifier for its kind enumeration value. 16// 17// ABSTRACT_SYMBOL(Id, Parent) - for abstract symbol classes, 18// 19// SYMBOL_RANGE(Id, First, Last) - for ranges of kind-enums, 20// allowing to determine abstract class of a symbol 21// based on the kind enumeration value. 22// 23//===----------------------------------------------------------------------===// 24 25#ifndef SYMBOL 26#define SYMBOL(Id, Parent) 27#endif 28 29#ifndef ABSTRACT_SYMBOL 30#define ABSTRACT_SYMBOL(Id, Parent) 31#endif 32 33#ifndef SYMBOL_RANGE 34#define SYMBOL_RANGE(Id, First, Last) 35#endif 36 37ABSTRACT_SYMBOL(BinarySymExpr, SymExpr) 38 SYMBOL(IntSymExpr, BinarySymExpr) 39 SYMBOL(SymIntExpr, BinarySymExpr) 40 SYMBOL(SymSymExpr, BinarySymExpr) 41SYMBOL_RANGE(BINARYSYMEXPRS, IntSymExprKind, SymSymExprKind) 42 43SYMBOL(SymbolCast, SymExpr) 44 45ABSTRACT_SYMBOL(SymbolData, SymExpr) 46 SYMBOL(SymbolConjured, SymbolData) 47 SYMBOL(SymbolDerived, SymbolData) 48 SYMBOL(SymbolExtent, SymbolData) 49 SYMBOL(SymbolMetadata, SymbolData) 50 SYMBOL(SymbolRegionValue, SymbolData) 51SYMBOL_RANGE(SYMBOLS, SymbolConjuredKind, SymbolRegionValueKind) 52 53#undef SYMBOL 54#undef ABSTRACT_SYMBOL 55#undef SYMBOL_RANGE 56