1 #include "llvm/DebugInfo/PDB/Native/RawError.h"
2 #include "llvm/Support/ErrorHandling.h"
3 #include "llvm/Support/ManagedStatic.h"
6 using namespace llvm::pdb
;
9 // FIXME: This class is only here to support the transition to llvm::Error. It
10 // will be removed once this transition is complete. Clients should prefer to
11 // deal with the Error value directly, rather than converting to error_code.
12 class RawErrorCategory
: public std::error_category
{
14 const char *name() const noexcept override
{ return "llvm.pdb.raw"; }
15 std::string
message(int Condition
) const override
{
16 switch (static_cast<raw_error_code
>(Condition
)) {
17 case raw_error_code::unspecified
:
18 return "An unknown error has occurred.";
19 case raw_error_code::feature_unsupported
:
20 return "The feature is unsupported by the implementation.";
21 case raw_error_code::invalid_format
:
22 return "The record is in an unexpected format.";
23 case raw_error_code::corrupt_file
:
24 return "The PDB file is corrupt.";
25 case raw_error_code::insufficient_buffer
:
26 return "The buffer is not large enough to read the requested number of "
28 case raw_error_code::no_stream
:
29 return "The specified stream could not be loaded.";
30 case raw_error_code::index_out_of_bounds
:
31 return "The specified item does not exist in the array.";
32 case raw_error_code::invalid_block_address
:
33 return "The specified block address is not valid.";
34 case raw_error_code::duplicate_entry
:
35 return "The entry already exists.";
36 case raw_error_code::no_entry
:
37 return "The entry does not exist.";
38 case raw_error_code::not_writable
:
39 return "The PDB does not support writing.";
40 case raw_error_code::stream_too_long
:
41 return "The stream was longer than expected.";
42 case raw_error_code::invalid_tpi_hash
:
43 return "The Type record has an invalid hash value.";
45 llvm_unreachable("Unrecognized raw_error_code");
50 static llvm::ManagedStatic
<RawErrorCategory
> RawCategory
;
51 const std::error_category
&llvm::pdb::RawErrCategory() { return *RawCategory
; }