lib/bindata/int.rb in bindata-1.3.1 vs lib/bindata/int.rb in bindata-1.4.0

- old
+ new

@@ -9,11 +9,10 @@ def define_class(nbits, endian, signed) name = class_name(nbits, endian, signed) unless BinData.const_defined?(name) BinData.module_eval <<-END class #{name} < BinData::BasePrimitive - register_self Int.define_methods(self, #{nbits}, :#{endian}, :#{signed}) end END end @@ -79,13 +78,11 @@ def create_int2uint_code(nbits) "val = val & #{(1 << nbits) - 1}" end def create_uint2int_code(nbits) - mask = (1 << (nbits - 1)) - 1 - - "val = -(((~val) & #{mask}) + 1) if (val >= #{1 << (nbits - 1)})" + "val = val - #{1 << nbits} if (val >= #{1 << (nbits - 1)})" end def create_read_code(nbits, endian) bits_per_word = bytes_per_word(nbits) * 8 nwords = nbits / bits_per_word @@ -149,16 +146,14 @@ end # Unsigned 1 byte integer. class Uint8 < BinData::BasePrimitive - register_self Int.define_methods(self, 8, :little, :unsigned) end # Signed 1 byte integer. class Int8 < BinData::BasePrimitive - register_self Int.define_methods(self, 8, :little, :signed) end # Create classes on demand class << self