Sha256: 2e5f54b91ed72160e0541904e8667df2cd7e928d6609b2b041b5544199493282
Contents?: true
Size: 985 Bytes
Versions: 2
Compression:
Stored size: 985 Bytes
Contents
require 'hashmake' require 'spcore' module SPNet class SignalInPort < InPort include Hashmake::HashMakeable DEFAULT_LIMITS = (-Float::MAX..Float::MAX) ARG_SPECS = [ Hashmake::ArgSpec.new(:reqd => false, :key => :limits, :type => Range, :default => DEFAULT_LIMITS) ] attr_reader :limits, :queue def initialize hashed_args = {} hash_make(SignalInPort::ARG_SPECS, hashed_args) @queue = [] @skip_limiting = (@limits == DEFAULT_LIMITS) @limiter = SPCore::Limiters.make_range_limiter @limits hashed_args.merge!(:matching_port_class => SignalOutPort) super(hashed_args) end def enqueue_values values unless @skip_limiting for i in 0...values.count values[i] = @limiter.call(values[i]) end end @queue.concat values end def dequeue_values count = @queue.count raise ArgumentError, "count is greater than @queue.count" if count > @queue.count @queue.slice!(0...count) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
spnet-0.1.4 | lib/spnet/ports/signal_in_port.rb |
spnet-0.1.3 | lib/spnet/ports/signal_in_port.rb |