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