introduce some helper methods

This commit is contained in:
Torsten Ruger
2018-06-02 23:02:59 +03:00
parent c2d450f779
commit 1d1c7105b4
9 changed files with 50 additions and 25 deletions

View File

@ -48,7 +48,7 @@ module Risc
Position.set_to(position , at)
if code.next
listener = PositionListener.new(code.next)
position.register_event(:position_changed , listener)
position.position_listener( listener)
end
at += code.padded_length unless at < 0
code = code.next

View File

@ -62,7 +62,7 @@ module Risc
nekst = instruction.next
if nekst
listener = InstructionListener.new( nekst , code )
position.register_event(:position_changed , listener)
position.position_listener(listener)
end
instruction = nekst
end

View File

@ -34,6 +34,20 @@ module Risc
Position.set_to(self , pos)
end
# utility to register events of type :position_changed
# can give an object and a PositionListener will be created for it
def position_listener(listener)
unless listener.class.name.include?("Listener")
listener = PositionListener.new(listener)
end
register_event(:position_changed , listener)
end
# utility to get all registered listeners to the :position_changed event
# returns an array
def position_listeners
event_table[:position_changed]
end
#look for InstructionListener and return its code if found
def get_code
listener = event_table.find{|one| one.class == InstructionListener}