From 6a653b35990e9a642dd4af9b8ee5742d5a84956c Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 16 Sep 2009 22:24:08 -0700 Subject: Adding basic Database structure. --- Database/internals/database-internal.h | 39 ++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Database/internals/database-internal.h (limited to 'Database/internals/database-internal.h') 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 -- cgit v1.2.3