class IDL::Type::Integer

def self.bits

def self.bits
  self::BITS
end

def self.is_unsigned?

def self.is_unsigned?
  self::Range.first.zero?
end

def in_range?(val)

def in_range?(val)
  val >= self.min && val <= self.max
end

def max

def max
  self.class::Range.last
end

def min

def min
  self.class::Range.first
end

def narrow(obj)

def narrow(obj)
  typeerror(obj) unless ::Integer === obj
  typeerror(obj) unless self.class::Range === obj
  obj
end

def next(val)

def next(val)
  val < self.max ? val + 1 : self.min
end

def range_length

def range_length
  1 + (self.class::Range.last - self.class::Range.first)
end