Class: Shazamio::RingBuffer
- Inherits:
-
Object
- Object
- Shazamio::RingBuffer
- Defined in:
- lib/shazamio/algorithm.rb
Overview
Fixed-size circular buffer, ported from algorithm.py's RingBuffer(list).
Instance Attribute Summary collapse
-
#buffer_size ⇒ Object
readonly
Returns the value of attribute buffer_size.
-
#num_written ⇒ Object
Returns the value of attribute num_written.
-
#position ⇒ Object
Returns the value of attribute position.
Instance Method Summary collapse
- #[](index) ⇒ Object
- #[]=(index, value) ⇒ Object
- #append(value) ⇒ Object
-
#initialize(buffer_size, default_value: nil) ⇒ RingBuffer
constructor
A new instance of RingBuffer.
Constructor Details
#initialize(buffer_size, default_value: nil) ⇒ RingBuffer
Returns a new instance of RingBuffer.
13 14 15 16 17 18 |
# File 'lib/shazamio/algorithm.rb', line 13 def initialize(buffer_size, default_value: nil) @buffer_size = buffer_size @data = Array.new(buffer_size) { default_value.nil? ? nil : default_value.dup } @position = 0 @num_written = 0 end |
Instance Attribute Details
#buffer_size ⇒ Object (readonly)
Returns the value of attribute buffer_size.
10 11 12 |
# File 'lib/shazamio/algorithm.rb', line 10 def buffer_size @buffer_size end |
#num_written ⇒ Object
Returns the value of attribute num_written.
11 12 13 |
# File 'lib/shazamio/algorithm.rb', line 11 def num_written @num_written end |
#position ⇒ Object
Returns the value of attribute position.
11 12 13 |
# File 'lib/shazamio/algorithm.rb', line 11 def position @position end |
Instance Method Details
#[](index) ⇒ Object
20 21 22 |
# File 'lib/shazamio/algorithm.rb', line 20 def [](index) @data[index % @buffer_size] end |
#[]=(index, value) ⇒ Object
24 25 26 |
# File 'lib/shazamio/algorithm.rb', line 24 def []=(index, value) @data[index % @buffer_size] = value end |
#append(value) ⇒ Object
28 29 30 31 32 |
# File 'lib/shazamio/algorithm.rb', line 28 def append(value) @data[@position] = value @position = (@position + 1) % @buffer_size @num_written += 1 end |