Module: DSP::Prepared

Included in:
Dct::Two, Decimator, Lpc::Envelope, Window
Defined in:
lib/dsprb/prepared.rb,
sig/dsprb.rbs

Overview

Shares one instance per parameter set. What a stage precomputes depends on nothing but its own sizes, so framing a signal need not rebuild it per frame.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(base) ⇒ void

This method returns an undefined value.

Parameters:

  • (Object)


7
8
9
10
# File 'lib/dsprb/prepared.rb', line 7

def self.extended(base)
  base.instance_variable_set(:@prepared, {})
  base.instance_variable_set(:@prepared_mutex, Mutex.new)
end

Instance Method Details

#prepared(key) ⇒ void

This method returns an undefined value.



12
13
14
15
16
17
# File 'lib/dsprb/prepared.rb', line 12

def prepared(key)
  found = @prepared[key]
  return found unless found.nil?

  @prepared_mutex.synchronize { @prepared[key] ||= yield }
end

#prepared_count::Integer

Returns:

  • (::Integer)


19
# File 'lib/dsprb/prepared.rb', line 19

def prepared_count = @prepared.size