|  | //===-- tools/f18/dump.cpp ------------------------------------------------===// | 
|  | // | 
|  | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | 
|  | // See https://llvm.org/LICENSE.txt for license information. | 
|  | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | // This file defines Dump routines available for calling from the debugger. | 
|  | // Each is based on operator<< for that type. There are overloadings for | 
|  | // reference and pointer, and for dumping to a provided raw_ostream or errs(). | 
|  |  | 
|  | #ifdef DEBUGF18 | 
|  |  | 
|  | #include "llvm/Support/raw_ostream.h" | 
|  |  | 
|  | #define DEFINE_DUMP(ns, name) \ | 
|  | namespace ns { \ | 
|  | class name; \ | 
|  | llvm::raw_ostream &operator<<(llvm::raw_ostream &, const name &); \ | 
|  | } \ | 
|  | void Dump(llvm::raw_ostream &os, const ns::name &x) { os << x << '\n'; } \ | 
|  | void Dump(llvm::raw_ostream &os, const ns::name *x) { \ | 
|  | if (x == nullptr) \ | 
|  | os << "null\n"; \ | 
|  | else \ | 
|  | Dump(os, *x); \ | 
|  | } \ | 
|  | void Dump(const ns::name &x) { Dump(llvm::errs(), x); } \ | 
|  | void Dump(const ns::name *x) { Dump(llvm::errs(), *x); } | 
|  |  | 
|  | namespace Fortran { | 
|  | DEFINE_DUMP(parser, Name) | 
|  | DEFINE_DUMP(parser, CharBlock) | 
|  | DEFINE_DUMP(semantics, Symbol) | 
|  | DEFINE_DUMP(semantics, Scope) | 
|  | DEFINE_DUMP(semantics, IntrinsicTypeSpec) | 
|  | DEFINE_DUMP(semantics, DerivedTypeSpec) | 
|  | DEFINE_DUMP(semantics, DeclTypeSpec) | 
|  | } // namespace Fortran | 
|  |  | 
|  | #endif |