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 : invalid_tpi_hash,
32 : };
33 :
34 : /// Base class for errors originating when parsing raw PDB files
35 6 : class RawError : public ErrorInfo<RawError> {
36 : public:
37 : static char ID;
38 : RawError(raw_error_code C);
39 : RawError(const std::string &Context);
40 : RawError(raw_error_code C, const std::string &Context);
41 :
42 : void log(raw_ostream &OS) const override;
43 : const std::string &getErrorMessage() const;
44 : std::error_code convertToErrorCode() const override;
45 :
46 : private:
47 : std::string ErrMsg;
48 : raw_error_code Code;
49 : };
50 : }
51 : }
52 : #endif
|