src/bit_struct/byte_data.rb in BitStructEx-0.0.86 vs src/bit_struct/byte_data.rb in BitStructEx-0.0.91

- old
+ new

@@ -5,66 +5,19 @@ class ByteData include Endianess - def initialize( data, endianess = nil ) + def self.endianize( data, endianess = nil ) raise "Bad input" unless data.respond_to? "[]".to_sym raise "Unknown endianess" unless valid endianess - @data = data - @endianess = endianess || BIG_ENDIAN + data = data.reverse if ( endianess || BIG_ENDIAN ) == LITTLE_ENDIAN + data end - def size - @data.size - end - - def length - @data.length - end - - def each - 0.upto( size - 1 ) { |idx| yield self[ idx ] } - end - - def to_s - str = '' - each { |b| str << b } - str - end - - def []( idx ) - @data[ endianized( idx ) ] - end - - def []=( idx, val ) - @data[ endianized( idx ) ] = val - end - - def reverse - ReversedByteData.new self, BIG_ENDIAN - end - - private - - def valid( endianess ) + def self.valid( endianess ) endianess == nil || endianess == LITTLE_ENDIAN || endianess == BIG_ENDIAN end - def endianized( idx ) - return idx if @endianess == BIG_ENDIAN - return @data.length - idx - 1 if @endianess == LITTLE_ENDIAN - end - - end - - class ReversedByteData < ByteData - - alias super_endianized endianized - - def endianized( idx ) - res = super_endianized( idx ) - @data.length - res - 1 - end end end