From 1473699d8e204d9bf8b00c160b097b4adf85a66b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Wed, 3 Jan 2018 19:19:06 +0100 Subject: Add memory template for gui coreview --- qtmips_gui/coreview/memory.cpp | 63 ++++++++++++++++++++++++++++++++++++++++++ qtmips_gui/coreview/memory.h | 41 +++++++++++++++++++++++++++ qtmips_gui/qtmips_gui.pro | 6 ++-- 3 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 qtmips_gui/coreview/memory.cpp create mode 100644 qtmips_gui/coreview/memory.h (limited to 'qtmips_gui') diff --git a/qtmips_gui/coreview/memory.cpp b/qtmips_gui/coreview/memory.cpp new file mode 100644 index 0000000..e6044fe --- /dev/null +++ b/qtmips_gui/coreview/memory.cpp @@ -0,0 +1,63 @@ +#include "memory.h" + +using namespace coreview; + +////////////////////// +#define WIDTH 80 +#define HEIGHT 100 +#define PENW 1 +////////////////////// + +Memory::Memory(machine::QtMipsMachine *machine) : QGraphicsObject(nullptr) { +#define CON_INIT(X) do { \ + X.in = new Connector(); \ + X.out = new Connector(); \ + X.read = new Connector(); \ + X.write = new Connector(); \ + } while(false) + CON_INIT(con_program); + CON_INIT(con_data); +#undef CON_INIT + // TODO cache? +} + +QRectF Memory::boundingRect() const { + // TODO +} + +void Memory::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { + // TODO +} + +void Memory::setPos(qreal x, qreal y) { + QGraphicsObject::setPos(x, y); + // TODO con +} + +const Connector *Memory::connector_in(bool program) const { + if (program) + return con_program.in; + else + return con_data.in; +} + +const Connector *Memory::connector_out(bool program) const { + if (program) + return con_program.out; + else + return con_data.out; +} + +const Connector *Memory::connector_read(bool program) const { + if (program) + return con_program.read; + else + return con_data.read; +} + +const Connector *Memory::connector_write(bool program) const { + if (program) + return con_program.write; + else + return con_data.write; +} diff --git a/qtmips_gui/coreview/memory.h b/qtmips_gui/coreview/memory.h new file mode 100644 index 0000000..0f0d40d --- /dev/null +++ b/qtmips_gui/coreview/memory.h @@ -0,0 +1,41 @@ +#ifndef COREVIEW_MEMORY_H +#define COREVIEW_MEMORY_H + +#include +#include +#include +#include "../coreview.h" +#include "connection.h" + +namespace coreview{ + +class Memory : public QGraphicsObject { + Q_OBJECT +public: + Memory(machine::QtMipsMachine *machine); + + QRectF boundingRect() const; + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); + + void setPos(qreal x, qreal y); + const Connector *connector_in(bool program) const; + const Connector *connector_out(bool program) const; + const Connector *connector_read(bool program) const; + const Connector *connector_write(bool program) const; + // TODO integrate cache + +private: + struct { + Connector *in, *out, *read, *write; + } con_program, con_data; +}; + +} + +#else + +namespace coreview { + class Memory; +} + +#endif // MEMORY_H diff --git a/qtmips_gui/qtmips_gui.pro b/qtmips_gui/qtmips_gui.pro index 66d9189..c16fed7 100644 --- a/qtmips_gui/qtmips_gui.pro +++ b/qtmips_gui/qtmips_gui.pro @@ -24,7 +24,8 @@ SOURCES += \ coreview/multiplexer.cpp \ coreview/connection.cpp \ coreview/latch.cpp \ - coreview/alu.cpp + coreview/alu.cpp \ + coreview/memory.cpp HEADERS += \ mainwindow.h \ @@ -37,7 +38,8 @@ HEADERS += \ coreview/multiplexer.h \ coreview/connection.h \ coreview/latch.h \ - coreview/alu.h + coreview/alu.h \ + coreview/memory.h FORMS += \ NewDialog.ui \ -- cgit v1.2.3