Class: RubyTDMS::ChannelEnumerator

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/ruby_tdms/channel_enumerator.rb

Instance Method Summary collapse

Constructor Details

#initialize(channel) ⇒ 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

#eachObject



16
17
18
# File 'lib/ruby_tdms/channel_enumerator.rb', line 16

def each
  0.upto(size - 1) { |i| yield self[i] }
end

#sizeObject



11
12
13
# File 'lib/ruby_tdms/channel_enumerator.rb', line 11

def size
  @size ||= @channel.value_count
end