Line data Source code
1 : //===- RawError.h - Error extensions for raw PDB implementation -*- C++ -*-===//
2 : //
3 : // The LLVM Compiler Infrastructure
4 : //
5 : // This file is distributed under the University of Illinois Open Source
6 : // License. See LICENSE.TXT for details.
7 : //
8 : //===----------------------------------------------------------------------===//
9 :
10 : #ifndef LLVM_DEBUGINFO_PDB_RAW_RAWERROR_H
11 : #define LLVM_DEBUGINFO_PDB_RAW_RAWERROR_H
12 :
13 : #include "llvm/Support/Error.h"
14 :
15 : #include <string>
16 :
17 : namespace llvm {
18 : namespace pdb {
19 : enum class raw_error_code {
20 : unspecified = 1,
21 : feature_unsupported,
22 : invalid_format,
23 : corrupt_file,
24 : insufficient_buffer,
25 : no_stream,
26 : index_out_of_bounds,
27 : invalid_block_address,
28 : duplicate_entry,
29 : no_entry,
30 : not_writable,
31 : stream_too_long,
32 : invalid_tpi_hash,
33 : };
34 : } // namespace pdb
35 : } // namespace llvm
36 :
37 : namespace std {
38 : template <>
39 : struct is_error_code_enum<llvm::pdb::raw_error_code> : std::true_type {};
40 : } // namespace std
41 :
42 : namespace llvm {
43 : namespace pdb {
44 : const std::error_category &RawErrCategory();
45 :
46 : inline std::error_code make_error_code(raw_error_code E) {
47 0 : return std::error_code(static_cast<int>(E), RawErrCategory());
48 : }
49 :
50 : /// Base class for errors originating when parsing raw PDB files
51 : class RawError : public ErrorInfo<RawError, StringError> {
52 : public:
53 0 : using ErrorInfo<RawError, StringError>::ErrorInfo; // inherit constructors
54 : RawError(const Twine &S) : ErrorInfo(S, raw_error_code::unspecified) {}
55 : static char ID;
56 : };
57 : } // namespace pdb
58 : } // namespace llvm
59 : #endif
|