brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · dbd8648 Raw
60 lines · cpp
1//===- MSFError.cpp - Error extensions for MSF files ------------*- 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-exception6//7//===----------------------------------------------------------------------===//8 9#include "llvm/DebugInfo/MSF/MSFError.h"10#include "llvm/Support/ErrorHandling.h"11#include <string>12 13using namespace llvm;14using namespace llvm::msf;15 16namespace {17// FIXME: This class is only here to support the transition to llvm::Error. It18// will be removed once this transition is complete. Clients should prefer to19// deal with the Error value directly, rather than converting to error_code.20class MSFErrorCategory : public std::error_category {21public:22  const char *name() const noexcept override { return "llvm.msf"; }23  std::string message(int Condition) const override {24    switch (static_cast<msf_error_code>(Condition)) {25    case msf_error_code::unspecified:26      return "An unknown error has occurred.";27    case msf_error_code::insufficient_buffer:28      return "The buffer is not large enough to read the requested number of "29             "bytes.";30    case msf_error_code::size_overflow_4096:31      return "Output data is larger than 4 GiB.";32    case msf_error_code::size_overflow_8192:33      return "Output data is larger than 8 GiB.";34    case msf_error_code::size_overflow_16384:35      return "Output data is larger than 16 GiB.";36    case msf_error_code::size_overflow_32768:37      return "Output data is larger than 32 GiB.";38    case msf_error_code::not_writable:39      return "The specified stream is not writable.";40    case msf_error_code::no_stream:41      return "The specified stream does not exist.";42    case msf_error_code::invalid_format:43      return "The data is in an unexpected format.";44    case msf_error_code::block_in_use:45      return "The block is already in use.";46    case msf_error_code::stream_directory_overflow:47      return "PDB stream directory too large.";48    }49    llvm_unreachable("Unrecognized msf_error_code");50  }51};52} // namespace53 54const std::error_category &llvm::msf::MSFErrCategory() {55  static MSFErrorCategory MSFCategory;56  return MSFCategory;57}58 59char MSFError::ID;60