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

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

#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