nimbus-eth1/src/vm/memory.nim

36 lines
963 B
Nim
Raw Normal View History

import
sequtils, bigints,
../constants, ../errors, ../logging, ../validation, ../utils_numeric
type
Memory* = ref object
logger*: Logger
bytes*: seq[byte]
proc newMemory*: Memory =
new(result)
result.bytes = @[]
result.logger = logging.getLogger("evm.vm.memory.Memory")
proc len*(memory: Memory): int =
result = len(memory.bytes)
proc extend*(memory: var Memory; startPosition: Int256; size: Int256) =
if size == 0:
return
var newSize = ceil32(startPosition + size)
if newSize <= len(memory).int256:
return
var sizeToExtend = newSize - len(memory).int256
memory.bytes = memory.bytes.concat(repeat(0.byte, sizeToExtend.getInt))
proc newMemory*(size: Int256): Memory =
result = newMemory()
result.extend(0.int256, size)
proc read*(self: var Memory; startPosition: Int256; size: Int256): cstring =
return cstring""
proc write*(self: var Memory, startPosition: Int256, size: Int256, value: cstring) =
echo value