Simple compiler list module to make compilers a list
This commit is contained in:
@ -1,7 +1,6 @@
|
||||
require "rx-file"
|
||||
|
||||
require "util/logging"
|
||||
require "util/list"
|
||||
require_relative "util"
|
||||
require_relative "elf/object_writer"
|
||||
require_relative "risc"
|
||||
require_relative "mom/mom"
|
||||
|
3
lib/util.rb
Normal file
3
lib/util.rb
Normal file
@ -0,0 +1,3 @@
|
||||
require_relative "util/logging"
|
||||
require_relative "util/list"
|
||||
require_relative "util/compiler_list"
|
36
lib/util/compiler_list.rb
Normal file
36
lib/util/compiler_list.rb
Normal file
@ -0,0 +1,36 @@
|
||||
module Util
|
||||
|
||||
module CompilerList
|
||||
|
||||
attr_reader :next_compiler
|
||||
|
||||
def add_method_compiler(comp)
|
||||
raise "not compiler #{comp.class}" unless comp.is_a?(MethodCompiler)
|
||||
if(@next_compiler)
|
||||
@next_compiler.add_method_compiler(comp)
|
||||
else
|
||||
@next_compiler = comp
|
||||
end
|
||||
end
|
||||
|
||||
def each_compiler &block
|
||||
block.yield(self)
|
||||
@next_compiler.each(&block) if @next_compiler
|
||||
end
|
||||
|
||||
def find_compiler &block
|
||||
return self if block.yield(self)
|
||||
@next_compiler.find_compiler(&block) if @next_compiler
|
||||
end
|
||||
|
||||
def last_compiler
|
||||
return self unless @next_compiler
|
||||
@next_compiler.last_compiler
|
||||
end
|
||||
|
||||
def num_compilers
|
||||
1 + (@next_compiler ? @next_compiler.num_compilers : 0)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user