Home | History | Annotate | Line # | Download | only in Support
      1 //===- BinaryStreamError.h - Error extensions for Binary Streams *- C++ -*-===//
      2 //
      3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
      4 // See https://llvm.org/LICENSE.txt for license information.
      5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
      6 //
      7 //===----------------------------------------------------------------------===//
      8 
      9 #ifndef LLVM_SUPPORT_BINARYSTREAMERROR_H
     10 #define LLVM_SUPPORT_BINARYSTREAMERROR_H
     11 
     12 #include "llvm/ADT/StringRef.h"
     13 #include "llvm/Support/Error.h"
     14 
     15 #include <string>
     16 
     17 namespace llvm {
     18 enum class stream_error_code {
     19   unspecified,
     20   stream_too_short,
     21   invalid_array_size,
     22   invalid_offset,
     23   filesystem_error
     24 };
     25 
     26 /// Base class for errors originating when parsing raw PDB files
     27 class BinaryStreamError : public ErrorInfo<BinaryStreamError> {
     28 public:
     29   static char ID;
     30   explicit BinaryStreamError(stream_error_code C);
     31   explicit BinaryStreamError(StringRef Context);
     32   BinaryStreamError(stream_error_code C, StringRef Context);
     33 
     34   void log(raw_ostream &OS) const override;
     35   std::error_code convertToErrorCode() const override;
     36 
     37   StringRef getErrorMessage() const;
     38 
     39   stream_error_code getErrorCode() const { return Code; }
     40 
     41 private:
     42   std::string ErrMsg;
     43   stream_error_code Code;
     44 };
     45 } // namespace llvm
     46 
     47 #endif // LLVM_SUPPORT_BINARYSTREAMERROR_H
     48