summaryrefslogtreecommitdiff
path: root/Database/internals/database-internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'Database/internals/database-internal.h')
-rw-r--r--Database/internals/database-internal.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/Database/internals/database-internal.h b/Database/internals/database-internal.h
new file mode 100644
index 0000000..75e82c9
--- /dev/null
+++ b/Database/internals/database-internal.h
@@ -0,0 +1,39 @@
+#ifndef __DATABASE_INTERNAL_H__
+#define __DATABASE_INTERNAL_H__
+
+#include "database-segment.h"
+#include "database-types.h"
+
+class Database;
+class Cpu;
+
+/** A database element. Basically, the database is a collection of segments, associated with information.
+ * This class could have been merged with Segment's, but in an effort to split the segment, that only
+ * contains the raw memory, and the various data associated with it, this glue element exists. It'll also
+ * construct a linked list for the database.
+ */
+
+class DatabaseCell : public Base {
+ public:
+ /** The constructor of a DatabaseCell. Note that if you specify the origin parameter,
+ * it'll create a sub-segment based on the first one. Note also that this doesn't support
+ * the patching system, yet.
+ */
+ DatabaseCell(Cpu * cpu, Uint64 cpu_base, absolute_ptr origin, Uint32 size, Uint32 extra_size, DatabaseCell * prev);
+ ~DatabaseCell();
+ Uint32 getID() { return segment->GetID(); }
+ void LoadMemory(Handle * src) { segment->LoadMemory(src); }
+ Segment * getSegment() { return segment; }
+ Cpu * getCpu() { return cpu; }
+ Uint64 getCpuBase() { return segment->getCpuBase(); }
+ absolute_ptr getOrigin() { return origin; }
+
+ private:
+ Segment * segment;
+ Cpu * cpu;
+ absolute_ptr origin; // a data segment can come from within another one
+ DatabaseCell * next, * prev;
+ Database * parent;
+};
+
+#endif