xref: /llvm-project/llvm/tools/llvm-cxxdump/Error.h (revision 2946cd701067404b99c39fb29dc9c74bd7193eb3)
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 Majnemer inline 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