class Vernier::StackTableHelpers::Stack
def [](n)
def [](n) raise RangeError if n < 0 stack_idx = idx while n > 0 stack_idx = stack_table.stack_parent_idx(stack_idx) n -= 1 end Frame.new(stack_table, stack_table.stack_frame_idx(stack_idx)) end
def each
def each return enum_for(__method__) unless block_given? stack_idx = idx while stack_idx frame_idx = stack_table.stack_frame_idx(stack_idx) yield Frame.new(stack_table, frame_idx) stack_idx = stack_table.stack_parent_idx(stack_idx) end end
def frames
def frames each_frame.to_a end
def leaf_frame
def leaf_frame Frame.new(stack_table, leaf_frame_idx) end
def leaf_frame_idx
def leaf_frame_idx stack_table.stack_frame_idx(idx) end
def to_s
def to_s arr = [] each_frame do |frame| arr << frame.to_s end arr.join("\n") end