1*fcaf7f86SDimitry Andric //===- Error.h --------------------------------------------------*- C++ -*-===// 2*fcaf7f86SDimitry Andric // 3*fcaf7f86SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*fcaf7f86SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*fcaf7f86SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*fcaf7f86SDimitry Andric // 7*fcaf7f86SDimitry Andric //===----------------------------------------------------------------------===// 8*fcaf7f86SDimitry Andric 9*fcaf7f86SDimitry Andric #ifndef LLVM_TOOLS_LLVM_DWARFUTIL_ERROR_H 10*fcaf7f86SDimitry Andric #define LLVM_TOOLS_LLVM_DWARFUTIL_ERROR_H 11*fcaf7f86SDimitry Andric 12*fcaf7f86SDimitry Andric #include "llvm/ADT/STLExtras.h" 13*fcaf7f86SDimitry Andric #include "llvm/ADT/StringRef.h" 14*fcaf7f86SDimitry Andric #include "llvm/ADT/StringSet.h" 15*fcaf7f86SDimitry Andric #include "llvm/ADT/Triple.h" 16*fcaf7f86SDimitry Andric #include "llvm/Support/Debug.h" 17*fcaf7f86SDimitry Andric #include "llvm/Support/Error.h" 18*fcaf7f86SDimitry Andric #include "llvm/Support/Format.h" 19*fcaf7f86SDimitry Andric #include "llvm/Support/WithColor.h" 20*fcaf7f86SDimitry Andric #include "llvm/Support/raw_ostream.h" 21*fcaf7f86SDimitry Andric 22*fcaf7f86SDimitry Andric namespace llvm { 23*fcaf7f86SDimitry Andric namespace dwarfutil { 24*fcaf7f86SDimitry Andric 25*fcaf7f86SDimitry Andric inline void error(Error Err, StringRef Prefix = "") { 26*fcaf7f86SDimitry Andric handleAllErrors(std::move(Err), [&](ErrorInfoBase &Info) { 27*fcaf7f86SDimitry Andric WithColor::error(errs(), Prefix) << Info.message() << '\n'; 28*fcaf7f86SDimitry Andric }); 29*fcaf7f86SDimitry Andric std::exit(EXIT_FAILURE); 30*fcaf7f86SDimitry Andric } 31*fcaf7f86SDimitry Andric 32*fcaf7f86SDimitry Andric inline void warning(const Twine &Message, StringRef Prefix = "") { 33*fcaf7f86SDimitry Andric WithColor::warning(errs(), Prefix) << Message << '\n'; 34*fcaf7f86SDimitry Andric } 35*fcaf7f86SDimitry Andric 36*fcaf7f86SDimitry Andric inline void verbose(const Twine &Message, bool Verbose) { 37*fcaf7f86SDimitry Andric if (Verbose) 38*fcaf7f86SDimitry Andric outs() << Message << '\n'; 39*fcaf7f86SDimitry Andric } 40*fcaf7f86SDimitry Andric 41*fcaf7f86SDimitry Andric } // end of namespace dwarfutil 42*fcaf7f86SDimitry Andric } // end of namespace llvm 43*fcaf7f86SDimitry Andric 44*fcaf7f86SDimitry Andric #endif // LLVM_TOOLS_LLVM_DWARFUTIL_ERROR_H 45