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