introduce some helper methods
This commit is contained in:
@ -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
|
||||
|
@ -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
|
||||
|
@ -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}
|
||||
|
Reference in New Issue
Block a user