lib/bindata/bits.rb in bindata-2.4.9 vs lib/bindata/bits.rb in bindata-2.4.10
- old
+ new
@@ -113,17 +113,17 @@
if nbits == 1 && signed == :signed
raise "signed bitfield must have more than one bit"
end
if signed == :signed
- max = (1 << (nbits - 1)) - 1
- min = -(max + 1)
+ max = "max = (1 << (#{nbits} - 1)) - 1"
+ min = "min = -(max + 1)"
else
- min = 0
- max = (1 << nbits) - 1
+ min = "min = 0"
+ max = "max = (1 << #{nbits}) - 1"
end
- clamp = "(val < #{min}) ? #{min} : (val > #{max}) ? #{max} : val"
+ clamp = "(#{max}; #{min}; val = (val < min) ? min : (val > max) ? max : val)"
if nbits == 1
# allow single bits to be used as booleans
clamp = "(val == true) ? 1 : (not val) ? 0 : #{clamp}"
end