class Squash::Symbolicator::Lines

An aggregation of the `Symbolicator::Line`s of a binary class. This class is enumerable.

Public Class Methods

new() click to toggle source

Creates a new empty aggregation.

# File lib/squash/symbolicator/lines.rb, line 48
def initialize
  @lines = Array.new
end

Public Instance Methods

[](*args) click to toggle source

Delegated to `Array`.

# File lib/squash/symbolicator/lines.rb, line 87
def [](*args) @lines[*args] end
add(start_address, file, lineno, col) click to toggle source

Adds a line definition to the aggregation.

@param [Fixnum] start_address The lowest program counter address

corresponding to this method or function.

@param [String] file The path to the file where this line is found. @param [Fixnum] lineno The line number in `file`. @param [Fixnum] col The column number in `file`.

# File lib/squash/symbolicator/lines.rb, line 60
def add(start_address, file, lineno, col)
  index   = @lines.find_index { |line| line.start_address > start_address }
  new_line = Squash::Symbolicator::Line.new(start_address, file, lineno, col)

  if index
    @lines.insert index, new_line
  else
    @lines << new_line
  end
end
clear(*args) click to toggle source

Delegated to `Array`.

# File lib/squash/symbolicator/lines.rb, line 89
def clear(*args) @lines.clear(*args) end
each(*args) click to toggle source

Delegated to `Array`.

# File lib/squash/symbolicator/lines.rb, line 85
def each(*args) @lines.each(*args) end
for(address) click to toggle source

Returns the nearest `Symbolicator::Line` to a given program counter address.

@param [Fixnum] address A program counter address. @return [Symbol, nil] The line corresponding to that address, or `nil` if

the address is not symbolicated.
# File lib/squash/symbolicator/lines.rb, line 77
def for(address)
  return @lines.last if @lines.last && @lines.last.start_address == address
  idx = @lines.find_index { |line| address < line.start_address }
  return nil unless idx
  return @lines[idx - 1]
end
inspect() click to toggle source

@private

# File lib/squash/symbolicator/lines.rb, line 94
def inspect() "#<#{self.class} [#{size} lines]>" end
size(*args) click to toggle source

Delegated to `Array`.

# File lib/squash/symbolicator/lines.rb, line 91
def size(*args) @lines.size(*args) end