1f45bbd0dSDavid Majnemer //===- Error.h - system_error extensions for llvm-cxxdump -------*- C++ -*-===// 2f45bbd0dSDavid Majnemer // 3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 5*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6f45bbd0dSDavid Majnemer // 7f45bbd0dSDavid Majnemer //===----------------------------------------------------------------------===// 8f45bbd0dSDavid Majnemer // 9f45bbd0dSDavid Majnemer // This declares a new error_category for the llvm-cxxdump tool. 10f45bbd0dSDavid Majnemer // 11f45bbd0dSDavid Majnemer //===----------------------------------------------------------------------===// 12f45bbd0dSDavid Majnemer 13f45bbd0dSDavid Majnemer #ifndef LLVM_TOOLS_LLVM_CXXDUMP_ERROR_H 14f45bbd0dSDavid Majnemer #define LLVM_TOOLS_LLVM_CXXDUMP_ERROR_H 15f45bbd0dSDavid Majnemer 16f45bbd0dSDavid Majnemer #include <system_error> 17f45bbd0dSDavid Majnemer 18f45bbd0dSDavid Majnemer namespace llvm { 19f45bbd0dSDavid Majnemer const std::error_category &cxxdump_category(); 20f45bbd0dSDavid Majnemer 21f45bbd0dSDavid Majnemer enum class cxxdump_error { 22f45bbd0dSDavid Majnemer success = 0, 23f45bbd0dSDavid Majnemer file_not_found, 24f45bbd0dSDavid Majnemer unrecognized_file_format, 25f45bbd0dSDavid Majnemer }; 26f45bbd0dSDavid Majnemer make_error_code(cxxdump_error e)27f45bbd0dSDavid Majnemerinline std::error_code make_error_code(cxxdump_error e) { 28f45bbd0dSDavid Majnemer return std::error_code(static_cast<int>(e), cxxdump_category()); 29f45bbd0dSDavid Majnemer } 30f45bbd0dSDavid Majnemer 31f45bbd0dSDavid Majnemer } // namespace llvm 32f45bbd0dSDavid Majnemer 33f45bbd0dSDavid Majnemer namespace std { 34f45bbd0dSDavid Majnemer template <> 35f45bbd0dSDavid Majnemer struct is_error_code_enum<llvm::cxxdump_error> : std::true_type {}; 36f45bbd0dSDavid Majnemer } 37f45bbd0dSDavid Majnemer 38f45bbd0dSDavid Majnemer #endif 39