class HDLRuby::High::Std::TaskPortSA
Describes an runner and finisher port to a task.
Public Class Methods
new(namespace,runner_proc,finisher_proc,reseter_proc = nil)
click to toggle source
Creates a new task accesser running in namespace
and reading using runner_proc
, writing using finisher_proc
, and reseting using reseter_proc
.
# File lib/HDLRuby/std/task.rb, line 191 def initialize(namespace,runner_proc,finisher_proc,reseter_proc = nil) unless namespace.is_a?(Namespace) raise "Invalid class for a namespace: #{namespace.class}" end @namespace = namespace unless runner_proc || finisher_proc then raise "An accesser must have at least a reading or a writing procedure." end @runner_proc = runner_proc ? runner_proc.to_proc : proc { } @finisher_proc = finisher_proc ? finisher_proc.to_proc : proc { } @reseter_proc = reseter_proc ? reseter_proc.to_proc : proc {} end
Public Instance Methods
finish(*args,&ruby_block)
click to toggle source
Performs a finish on the task using args
and ruby_block
as arguments.
# File lib/HDLRuby/std/task.rb, line 219 def finish(*args,&ruby_block) # Gain access to the accesser as local variable. finisher_proc = @finisher_proc # Execute the code generating the accesser in context. HDLRuby::High.space_push(@namespace) HDLRuby::High.cur_block.open do instance_exec(ruby_block,*args,&finisher_proc) end HDLRuby::High.space_pop end
reset(*args,&ruby_block)
click to toggle source
Performs a reset on the task using args
and ruby_block
as arguments.
# File lib/HDLRuby/std/task.rb, line 232 def reset(*args,&ruby_block) # Gain access to the accesser as local variable. reseter_proc = @reseter_proc # Execute the code generating the accesser in context. HDLRuby::High.space_push(@namespace) HDLRuby::High.cur_block.open do instance_exec(ruby_block,*args,&reseter_proc) end HDLRuby::High.space_pop end
run(*args,&ruby_block)
click to toggle source
Performs a run on the task using args
and ruby_block
as arguments.
# File lib/HDLRuby/std/task.rb, line 206 def run(*args,&ruby_block) # Gain access to the accesser as local variable. runner_proc = @runner_proc # Execute the code generating the accesser in context. HDLRuby::High.space_push(@namespace) HDLRuby::High.cur_block.open do instance_exec(ruby_block,*args,&runner_proc) end HDLRuby::High.space_pop end