Source code for envi.util
class CopyOnWrite:
[docs] """
A memory object wrapper you can use to do copy-on-write memory
use and be able to simply reset it.
"""
def __init__(self, memobj):
self.writes = []
self.memobj = memobj
def reset(self):
[docs] """
Throw away the current writes and be fresh...
"""
self.writes = []
def writeMemory(self, va, bytes):
[docs] # FIXME for now, allow any writes, but soon, do more
self.writes.append((va,va+len(bytes),bytes))
def readMemory(self, va, size):
[docs] for memva,nextva,bytes in self.writes:
if memva <= va and va+size <= nextva:
offset = va-memva
return bytes[offset:offset+size]
return self.memobj.readMemory(va, size)