Class: RubyTDMS::ChannelEnumerator
- Inherits:
-
Object
- Object
- RubyTDMS::ChannelEnumerator
- Includes:
- Enumerable
- Defined in:
- lib/ruby_tdms/channel_enumerator.rb
Instance Method Summary collapse
- #[](i) ⇒ Object
- #each ⇒ Object
-
#initialize(channel) ⇒ ChannelEnumerator
constructor
A new instance of ChannelEnumerator.
- #size ⇒ Object
Constructor Details
#initialize(channel) ⇒ ChannelEnumerator
Returns a new instance of ChannelEnumerator.
6 7 8 |
# File 'lib/ruby_tdms/channel_enumerator.rb', line 6 def initialize(channel) @channel = channel end |
Instance Method Details
#[](i) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/ruby_tdms/channel_enumerator.rb', line 21 def [](i) if (i < 0) || (i >= size) raise RangeError, 'Channel %s has a range of 0 to %d, got invalid index: %d' % [@channel.path, size - 1, i] end chunk_index = i / @channel.chunk_value_count offset = (@channel.raw_data_offset + (@channel.chunk_length * chunk_index)) + (i * @channel.value_offset) @channel.stream.seek offset @channel.data_type.read_from_stream(@channel.stream, @channel.segment.big_endian?).value end |
#each ⇒ Object
16 17 18 |
# File 'lib/ruby_tdms/channel_enumerator.rb', line 16 def each 0.upto(size - 1) { |i| yield self[i] } end |
#size ⇒ Object
11 12 13 |
# File 'lib/ruby_tdms/channel_enumerator.rb', line 11 def size @size ||= @channel.value_count end |