class HDLRuby::High::Std::ChannelPortW
Describes a writer port to a channel.
Public Class Methods
new(namespace,writer_proc,reseter_proc = nil)
click to toggle source
Creates a new channel writer running in namespace
and writing using writer_proc
and reseting using reseter_proc
.
# File lib/HDLRuby/std/channel.rb, line 159 def initialize(namespace,writer_proc,reseter_proc = nil) unless namespace.is_a?(Namespace) raise "Invalid class for a namespace: #{namespace.class}" end @namespace = namespace @writer_proc = writer_proc.to_proc @reseter_proc = reseter_proc ? reseter_proc.to_proc : proc {} @scope = HDLRuby::High.cur_scope end
Public Instance Methods
reset(*args,&ruby_block)
click to toggle source
Performs a reset on the channel using args
and ruby_block
as arguments.
# File lib/HDLRuby/std/channel.rb, line 184 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
write(*args,&ruby_block)
click to toggle source
Performs a write on the channel using args
and ruby_block
as arguments.
# File lib/HDLRuby/std/channel.rb, line 171 def write(*args,&ruby_block) # Gain access to the writer as local variable. writer_proc = @writer_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,&writer_proc) end HDLRuby::High.space_pop end