1 #pragma once 2 3 #include <stdio.h> 4 #include <sstream> 5 6 #include "types.h" 7 8 9 10 /* Region-related state information. */ 11 12 class RegionState 13 { 14 public: 15 unsigned long size; 16 fileid_t fileid; 17 offset_t filepos; 18 19 explicit RegionState(unsigned long size=0, fileid_t fileid=0, offset_t filepos=0); 20 21 void fill(fileid_t fileid, offset_t filepos); 22 23 void show(std::ostringstream &buffer); 24 25 bool valid() { return size != 0; } 26 }; 27 28 29 30 /* A memory region abstraction. */ 31 32 class Region 33 { 34 public: 35 offset_t start, end; 36 37 /* Debugging information. */ 38 39 RegionState state; 40 41 /* Methods. */ 42 43 explicit Region(offset_t start, offset_t end); 44 45 virtual ~Region(); 46 47 offset_t size(); 48 49 int compare(Region *other); 50 51 void fill(fileid_t fileid, offset_t filepos); 52 53 void flush(); 54 55 /* Simulation methods. */ 56 57 char *read(offset_t offset=0); 58 59 void write(const char *data, offset_t offset=0); 60 }; 61 62 // vim: tabstop=4 expandtab shiftwidth=4