//===-- Symbols.def - Metadata about SymExpr kinds --------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // The list of symbols (SymExpr sub-classes) used in the Static Analyzer. // In order to use this information, users of this file must define // one or more of the three macros: // // SYMBOL(Id, Parent) - for specific SymExpr sub-classes, reserving the // IdKind identifier for its kind enumeration value. // // ABSTRACT_SYMBOL(Id, Parent) - for abstract symbol classes, // // SYMBOL_RANGE(Id, First, Last) - for ranges of kind-enums, // allowing to determine abstract class of a symbol // based on the kind enumeration value. // //===----------------------------------------------------------------------===// #ifndef SYMBOL #define SYMBOL(Id, Parent) #endif #ifndef ABSTRACT_SYMBOL #define ABSTRACT_SYMBOL(Id, Parent) #endif #ifndef SYMBOL_RANGE #define SYMBOL_RANGE(Id, First, Last) #endif ABSTRACT_SYMBOL(BinarySymExpr, SymExpr) SYMBOL(IntSymExpr, BinarySymExpr) SYMBOL(SymIntExpr, BinarySymExpr) SYMBOL(SymSymExpr, BinarySymExpr) SYMBOL_RANGE(BINARYSYMEXPRS, IntSymExprKind, SymSymExprKind) SYMBOL(SymbolCast, SymExpr) ABSTRACT_SYMBOL(SymbolData, SymExpr) SYMBOL(SymbolConjured, SymbolData) SYMBOL(SymbolDerived, SymbolData) SYMBOL(SymbolExtent, SymbolData) SYMBOL(SymbolMetadata, SymbolData) SYMBOL(SymbolRegionValue, SymbolData) SYMBOL_RANGE(SYMBOLS, SymbolConjuredKind, SymbolRegionValueKind) #undef SYMBOL #undef ABSTRACT_SYMBOL #undef SYMBOL_RANGE