1e5bf4892SAaron Ballman //===- Error.cpp - system_error extensions for llvm-cxxdump -----*- C++ -*-===// 2f45bbd0dSDavid Majnemer // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6f45bbd0dSDavid Majnemer // 7f45bbd0dSDavid Majnemer //===----------------------------------------------------------------------===// 8f45bbd0dSDavid Majnemer // 9f45bbd0dSDavid Majnemer // This defines a new error_category for the llvm-cxxdump tool. 10f45bbd0dSDavid Majnemer // 11f45bbd0dSDavid Majnemer //===----------------------------------------------------------------------===// 12f45bbd0dSDavid Majnemer 13f45bbd0dSDavid Majnemer #include "Error.h" 14f45bbd0dSDavid Majnemer #include "llvm/Support/ErrorHandling.h" 15*856a07e4SQiongsi Wu #include <string> 16f45bbd0dSDavid Majnemer 17f45bbd0dSDavid Majnemer using namespace llvm; 18f45bbd0dSDavid Majnemer 19f45bbd0dSDavid Majnemer namespace { 204718f8b5SPeter Collingbourne // FIXME: This class is only here to support the transition to llvm::Error. It 214718f8b5SPeter Collingbourne // will be removed once this transition is complete. Clients should prefer to 224718f8b5SPeter Collingbourne // deal with the Error value directly, rather than converting to error_code. 23f45bbd0dSDavid Majnemer class cxxdump_error_category : public std::error_category { 24f45bbd0dSDavid Majnemer public: name() const25990504e6SReid Kleckner const char *name() const noexcept override { return "llvm.cxxdump"; } message(int ev) const26f45bbd0dSDavid Majnemer std::string message(int ev) const override { 27f45bbd0dSDavid Majnemer switch (static_cast<cxxdump_error>(ev)) { 28f45bbd0dSDavid Majnemer case cxxdump_error::success: 29f45bbd0dSDavid Majnemer return "Success"; 30f45bbd0dSDavid Majnemer case cxxdump_error::file_not_found: 31f45bbd0dSDavid Majnemer return "No such file."; 32f45bbd0dSDavid Majnemer case cxxdump_error::unrecognized_file_format: 33f45bbd0dSDavid Majnemer return "Unrecognized file type."; 34f45bbd0dSDavid Majnemer } 35f45bbd0dSDavid Majnemer llvm_unreachable( 36f45bbd0dSDavid Majnemer "An enumerator of cxxdump_error does not have a message defined."); 37f45bbd0dSDavid Majnemer } 38f45bbd0dSDavid Majnemer }; 39f45bbd0dSDavid Majnemer } // namespace 40f45bbd0dSDavid Majnemer 41f45bbd0dSDavid Majnemer namespace llvm { cxxdump_category()42f45bbd0dSDavid Majnemerconst std::error_category &cxxdump_category() { 43f45bbd0dSDavid Majnemer static cxxdump_error_category o; 44f45bbd0dSDavid Majnemer return o; 45f45bbd0dSDavid Majnemer } 46f45bbd0dSDavid Majnemer } // namespace llvm 47