File indexing completed on 2026-05-10 08:43:44
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef LLVM_DEBUGINFO_MSF_MSFERROR_H
0010 #define LLVM_DEBUGINFO_MSF_MSFERROR_H
0011
0012 #include "llvm/Support/Error.h"
0013
0014 namespace llvm {
0015 namespace msf {
0016 enum class msf_error_code {
0017 unspecified = 1,
0018 insufficient_buffer,
0019 not_writable,
0020 no_stream,
0021 invalid_format,
0022 block_in_use,
0023 size_overflow_4096,
0024 size_overflow_8192,
0025 size_overflow_16384,
0026 size_overflow_32768,
0027 stream_directory_overflow,
0028 };
0029 }
0030 }
0031
0032 namespace std {
0033 template <>
0034 struct is_error_code_enum<llvm::msf::msf_error_code> : std::true_type {};
0035 }
0036
0037 namespace llvm {
0038 namespace msf {
0039 const std::error_category &MSFErrCategory();
0040
0041 inline std::error_code make_error_code(msf_error_code E) {
0042 return std::error_code(static_cast<int>(E), MSFErrCategory());
0043 }
0044
0045
0046 class MSFError : public ErrorInfo<MSFError, StringError> {
0047 public:
0048 using ErrorInfo<MSFError, StringError>::ErrorInfo;
0049 MSFError(const Twine &S) : ErrorInfo(S, msf_error_code::unspecified) {}
0050
0051 bool isPageOverflow() const {
0052 switch (static_cast<msf_error_code>(convertToErrorCode().value())) {
0053 case msf_error_code::unspecified:
0054 case msf_error_code::insufficient_buffer:
0055 case msf_error_code::not_writable:
0056 case msf_error_code::no_stream:
0057 case msf_error_code::invalid_format:
0058 case msf_error_code::block_in_use:
0059 return false;
0060 case msf_error_code::size_overflow_4096:
0061 case msf_error_code::size_overflow_8192:
0062 case msf_error_code::size_overflow_16384:
0063 case msf_error_code::size_overflow_32768:
0064 case msf_error_code::stream_directory_overflow:
0065 return true;
0066 }
0067 llvm_unreachable("msf error code not implemented");
0068 }
0069
0070 static char ID;
0071 };
0072 }
0073 }
0074
0075 #endif