Source code for data_specification.memory_region
[docs]class MemoryRegion(object):
""" Memory region storage object
"""
__slots__ = [
# the write pointer position
"_mem_pointer",
# flag that states if the region is filled or not
"_unfilled",
# the amount of memory allocated to this dsg
"_allocated_size",
# the region address map????
"_region_data",
# the position in the memory where the writing is currently occurring
"_write_pointer",
# the max point where if written over, it will cause an error
"_max_write_pointer"
]
def __init__(self, memory_pointer, unfilled, size):
"""
:param memory_pointer: the write pointer position
:param unfilled: if the region needs to be filled when written
:rtype: None
:raise None: this method does not raise any known exception
"""
self._mem_pointer = memory_pointer
self._unfilled = unfilled
self._allocated_size = size
self._region_data = bytearray(size)
self._write_pointer = 0
self._max_write_pointer = 0
@property
def memory_pointer(self):
""" property method to retrieve memory write pointer
:return: the memory pointer of the region
:rtype: int
:raise None: this method does not raise any known exception
"""
return self._mem_pointer
@property
def allocated_size(self):
""" property method for the size of the region
:return: the size of the region
:rtype: int
:raise None: this method does not raise any known exception
"""
return self._allocated_size
@property
def unfilled(self):
""" property method to retrieve if the region is filled
:return: the the
:rtype: None
:raise None: this method does not raise any known exception
"""
return self._unfilled
@property
def region_data(self):
""" the container which holds the data written in this region
:return: the region data container
:rtype: bytearray
:raise None: this method does not raise any known exception
"""
return self._region_data
@property
def write_pointer(self):
return self._write_pointer
@write_pointer.setter
def write_pointer(self, write_pointer):
self._write_pointer = write_pointer
self._max_write_pointer = max((
self._write_pointer, self._max_write_pointer))
@property
def max_write_pointer(self):
return self._max_write_pointer
[docs] def increment_write_pointer(self, n_bytes):
self._write_pointer += n_bytes
self._max_write_pointer = max((
self._write_pointer, self._max_write_pointer))