lib/bindata/int.rb in bindata-1.8.2 vs lib/bindata/int.rb in bindata-1.8.3
- old
+ new
@@ -4,12 +4,11 @@
# Defines a number of classes that contain an integer. The integer
# is defined by endian, signedness and number of bytes.
module Int #:nodoc: all
class << self
- def define_class(nbits, endian, signed)
- name = class_name(nbits, endian, signed)
+ def define_class(name, nbits, endian, signed)
unless BinData.const_defined?(name)
BinData.module_eval <<-END
class #{name} < BinData::BasePrimitive
Int.define_methods(self, #{nbits}, :#{endian}, :#{signed})
end
@@ -17,17 +16,10 @@
end
BinData.const_get(name)
end
- def class_name(nbits, endian, signed)
- endian_str = (endian == :big) ? "be" : "le"
- base = (signed == :signed) ? "Int" : "Uint"
-
- "#{base}#{nbits}#{endian_str}"
- end
-
def define_methods(int_class, nbits, endian, signed)
raise "nbits must be divisible by 8" unless (nbits % 8).zero?
int_class.module_eval <<-END
def assign(val)
@@ -168,10 +160,10 @@
mappings.each_pair do |regex, args|
if regex =~ name.to_s
nbits = $1.to_i
if (nbits % 8).zero?
- return Int.define_class(nbits, *args)
+ return Int.define_class(name, nbits, *args)
end
end
end
super