navicat-keygen/navicat-patcher/ExceptionCapstone.hpp
2019-01-15 12:32:33 +08:00

63 lines
2.0 KiB
C++

#pragma once
#include "Exception.hpp"
#if defined(CAPSTONE_ENGINE_H) // if include <capstone/capstone.h>
class CapstoneError : public Exception {
private:
const cs_err _ErrorCode;
public:
CapstoneError(const char* FileName,
int Line,
cs_err Code,
const char* Message) noexcept :
Exception(FileName, Line, Message),
_ErrorCode(Code) {}
virtual bool HasErrorCode() const noexcept override {
return true;
}
virtual unsigned long ErrorCode() const noexcept override {
return _ErrorCode;
}
virtual const char* ErrorString() const noexcept override {
switch (_ErrorCode) {
case CS_ERR_MEM:
return "Out-Of-Memory error.";
case CS_ERR_ARCH:
return "Unsupported architecture.";
case CS_ERR_HANDLE:
return "Invalid handle.";
case CS_ERR_CSH:
return "Invalid csh argument.";
case CS_ERR_MODE:
return "Invalid/unsupported mode.";
case CS_ERR_OPTION:
return "Invalid/unsupported option.";
case CS_ERR_DETAIL:
return "Information is unavailable because detail option is OFF";
case CS_ERR_MEMSETUP:
return "Dynamic memory management uninitialized.";
case CS_ERR_VERSION:
return "Unsupported version (bindings).";
case CS_ERR_DIET:
return "Access irrelevant data in \"diet\" engine.";
case CS_ERR_SKIPDATA:
return "Access irrelevant data for \"data\" instruction in SKIPDATA mode.";
case CS_ERR_X86_ATT:
return "X86 AT&T syntax is unsupported (opt-out at compile time).";
case CS_ERR_X86_INTEL:
return "X86 Intel syntax is unsupported (opt-out at compile time).";
case CS_ERR_X86_MASM:
return "X86 Intel syntax is unsupported (opt-out at compile time).";
default:
return nullptr;
}
}
};
#endif