1.1 --- a/region.cc Mon Mar 29 00:04:07 2021 +0200
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,83 +0,0 @@
1.4 -#include <string.h>
1.5 -#include <stdlib.h>
1.6 -
1.7 -#include "region.h"
1.8 -
1.9 -
1.10 -
1.11 -/* Initialise region state, indicating the size, file and position. */
1.12 -
1.13 -RegionState::RegionState(unsigned long size, fileid_t fileid, offset_t filepos)
1.14 -: size(size), fileid(fileid), filepos(filepos)
1.15 -{
1.16 -}
1.17 -
1.18 -void RegionState::fill(fileid_t fileid, offset_t filepos)
1.19 -{
1.20 - this->fileid = fileid;
1.21 - this->filepos = filepos;
1.22 -}
1.23 -
1.24 -
1.25 -
1.26 -/* Initialise a region having the given 'start' and 'end' addresses, with the
1.27 - 'end' being one location beyond the last address in the region. */
1.28 -
1.29 -Region::Region(offset_t start, offset_t end)
1.30 -: start(start), end(end), state(end - start)
1.31 -{
1.32 - /* Content state. */
1.33 -
1.34 - memset((void *) start, 0, end - start);
1.35 -}
1.36 -
1.37 -Region::~Region()
1.38 -{
1.39 - free((void *) start);
1.40 -}
1.41 -
1.42 -offset_t Region::size()
1.43 -{
1.44 - return end - start;
1.45 -}
1.46 -
1.47 -/* Debugging methods. */
1.48 -
1.49 -int Region::compare(Region *other)
1.50 -{
1.51 - if (start < other->start)
1.52 - return -1;
1.53 - else if (start > other->start)
1.54 - return 1;
1.55 - else
1.56 - return 0;
1.57 -}
1.58 -
1.59 -void Region::fill(fileid_t fileid, offset_t filepos)
1.60 -{
1.61 - state.fill(fileid, filepos);
1.62 -}
1.63 -
1.64 -void Region::flush()
1.65 -{
1.66 -}
1.67 -
1.68 -/* Simulation methods. */
1.69 -
1.70 -char *Region::read(offset_t offset)
1.71 -{
1.72 - if (offset < size())
1.73 - return (char *) start + offset;
1.74 - else
1.75 - return NULL;
1.76 -}
1.77 -
1.78 -void Region::write(const char *data, offset_t offset)
1.79 -{
1.80 - size_t length = strlen(data);
1.81 -
1.82 - if (offset + length < size())
1.83 - memcpy((void *) (start + offset), data, length + 1);
1.84 -}
1.85 -
1.86 -// vim: tabstop=4 expandtab shiftwidth=4