class Ethereum::VM::CallData

Attributes

size[R]

Public Class Methods

new(parent_memory, offset=0, size=nil) click to toggle source
# File lib/ethereum/vm/call_data.rb, line 9
def initialize(parent_memory, offset=0, size=nil)
  @data = parent_memory
  @offset = offset
  @size = size || @data.size
  @rlimit = @offset + @size
end

Public Instance Methods

extract32(i) click to toggle source
# File lib/ethereum/vm/call_data.rb, line 22
def extract32(i)
  return 0 if i >= @size

  right = [@offset+i+32, @rlimit].min
  o = @data.safe_slice(@offset+i...right)
  Utils.bytearray_to_int(o + [0]*(32-o.size))
end
extract_all() click to toggle source
# File lib/ethereum/vm/call_data.rb, line 16
def extract_all
  d = @data.safe_slice(@offset, @size)
  d += [0] * (@size - d.size)
  Utils.int_array_to_bytes(d)
end
extract_copy(mem, memstart, datastart, size) click to toggle source
# File lib/ethereum/vm/call_data.rb, line 30
def extract_copy(mem, memstart, datastart, size)
  size.times do |i|
    mem[memstart+i] = datastart+i < @size ? @data[@offset+datastart+i] : 0
  end
end