Home | History | Annotate | Line # | Download | only in Native
      1 //===- RawError.h - Error extensions for raw PDB implementation -*- 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_DEBUGINFO_PDB_NATIVE_RAWERROR_H
     10 #define LLVM_DEBUGINFO_PDB_NATIVE_RAWERROR_H
     11 
     12 #include "llvm/Support/Error.h"
     13 
     14 #include <string>
     15 
     16 namespace llvm {
     17 namespace pdb {
     18 enum class raw_error_code {
     19   unspecified = 1,
     20   feature_unsupported,
     21   invalid_format,
     22   corrupt_file,
     23   insufficient_buffer,
     24   no_stream,
     25   index_out_of_bounds,
     26   invalid_block_address,
     27   duplicate_entry,
     28   no_entry,
     29   not_writable,
     30   stream_too_long,
     31   invalid_tpi_hash,
     32 };
     33 } // namespace pdb
     34 } // namespace llvm
     35 
     36 namespace std {
     37 template <>
     38 struct is_error_code_enum<llvm::pdb::raw_error_code> : std::true_type {};
     39 } // namespace std
     40 
     41 namespace llvm {
     42 namespace pdb {
     43 const std::error_category &RawErrCategory();
     44 
     45 inline std::error_code make_error_code(raw_error_code E) {
     46   return std::error_code(static_cast<int>(E), RawErrCategory());
     47 }
     48 
     49 /// Base class for errors originating when parsing raw PDB files
     50 class RawError : public ErrorInfo<RawError, StringError> {
     51 public:
     52   using ErrorInfo<RawError, StringError>::ErrorInfo; // inherit constructors
     53   RawError(const Twine &S) : ErrorInfo(S, raw_error_code::unspecified) {}
     54   static char ID;
     55 };
     56 } // namespace pdb
     57 } // namespace llvm
     58 #endif
     59