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