Class: Temill::SourceFile::InsertionPointSet

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/temill/core.rb

Overview

represent a set of insertion points in a single source file

Instance Method Summary collapse

Constructor Details

#initializeInsertionPointSet



243
244
245
246
# File 'lib/temill/core.rb', line 243

def initialize
  @caller_lineno_to_ip = {}
  @emitter_lineno_to_ips = {}
end

Instance Method Details

#add(ip) ⇒ Object



248
249
250
251
252
253
254
255
256
257
258
# File 'lib/temill/core.rb', line 248

def add(ip)
  if @caller_lineno_to_ip[ip.caller_lineno]
    false
  else
    @caller_lineno_to_ip[ip.caller_lineno] = ip
    ((@emitter_lineno_to_ips[ip.emitter_lineno] ||= []) << ip).sort_by!{| ips |
      ips.caller_lineno
    }
    true
  end
end

#at_caller_lineno(lineno) ⇒ InsertionPoint?



262
263
264
# File 'lib/temill/core.rb', line 262

def at_caller_lineno(lineno)
  @caller_lineno_to_ip[lineno]
end

#at_emitter_lineno(lineno) ⇒ Array<InsertionPoint>?



268
269
270
# File 'lib/temill/core.rb', line 268

def at_emitter_lineno(lineno)
  @emitter_lineno_to_ips[lineno]
end

#each(&block) ⇒ Object



272
273
274
# File 'lib/temill/core.rb', line 272

def each(&block)
  @caller_lineno_to_ip.values.each(&block)
end