diff options
Diffstat (limited to 'qtmips_machine/qtmipsexception.cpp')
| -rw-r--r-- | qtmips_machine/qtmipsexception.cpp | 60 | 
1 files changed, 60 insertions, 0 deletions
diff --git a/qtmips_machine/qtmipsexception.cpp b/qtmips_machine/qtmipsexception.cpp new file mode 100644 index 0000000..2ce7ae5 --- /dev/null +++ b/qtmips_machine/qtmipsexception.cpp @@ -0,0 +1,60 @@ +#include "qtmipsexception.h" +#include <iostream> +#include <cstring> + +QtMipsException::QtMipsException(QTMIPS_ARGS_COMMON) { +    this->reason = reason; +    this->ext = ext; +    this->file = file; +    this->line = line; +} + +const char *QtMipsException::what() const throw() { +    std::string message = this->msg(true); +    char * cstr = new char [message.length()+1]; +    std::strcpy (cstr, message.c_str()); +    return cstr; +} + +std::string QtMipsException::msg(bool pos) const { +    std::string message; +    if (pos) +        message += std::string("(") + std::string(this->file) + std::string(":") + std::to_string(this->line) + std::string(") "); +    message += this->reason; +    if (!this->ext.empty()) { +        message += std::string(": "); +        message += this->ext; +    } +    return message; +} + + +QtMipsExceptionInput::QtMipsExceptionInput(QTMIPS_ARGS_COMMON) +        : QtMipsException(reason, ext, file, line) { +    return; +} + +QtMipsExceptionRuntime::QtMipsExceptionRuntime(QTMIPS_ARGS_COMMON) +        : QtMipsException(reason, ext, file, line) { +    return; +} + +QtMipsExceptionUnsupportedInstruction::QtMipsExceptionUnsupportedInstruction(QTMIPS_ARGS_COMMON) +        : QtMipsExceptionRuntime(reason, ext, file, line) { +    return; +} + +QtMipsExceptionUnalignedJump::QtMipsExceptionUnalignedJump(QTMIPS_ARGS_COMMON) +        : QtMipsExceptionRuntime(reason, ext, file, line) { +    return; +} + +QtMipsExceptionOutOfMemoryAccess::QtMipsExceptionOutOfMemoryAccess(QTMIPS_ARGS_COMMON) +        : QtMipsExceptionRuntime(reason, ext, file, line) { +    return; +} + +QtMipsExceptionSanity::QtMipsExceptionSanity(QTMIPS_ARGS_COMMON) +        : QtMipsException(reason, ext, file, line) { +    return; +}  | 
