aboutsummaryrefslogtreecommitdiff
path: root/qtmips_machine/qtmipsexception.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qtmips_machine/qtmipsexception.cpp')
-rw-r--r--qtmips_machine/qtmipsexception.cpp60
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;
+}