Module: Erlang::ETF::Extensions::Integer
- Defined in:
- lib/erlang/etf/extensions/integer.rb
Constant Summary collapse
- UINT8_MIN =
0.freeze
- UINT8_MAX =
(+(1 << 8) - 1).freeze
- INT32_MIN =
(-(1 << 31) + 1).freeze
- INT32_MAX =
(+(1 << 31) - 1).freeze
- SMALL_BIG_N_MAX =
255.freeze
Instance Method Summary collapse
Instance Method Details
#__erlang_evolve__ ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/erlang/etf/extensions/integer.rb', line 30 def __erlang_evolve__ case __erlang_type__ when :small_integer ETF::SmallInteger.new(self) when :integer ETF::Integer.new(self) when :small_big ETF::SmallBig.new(self) when :large_big ETF::LargeBig.new(self) end end |
#__erlang_type__ ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/erlang/etf/extensions/integer.rb', line 15 def __erlang_type__ if self >= UINT8_MIN and self <= UINT8_MAX :small_integer elsif self >= INT32_MIN and self <= INT32_MAX :integer else n = (abs.to_s(2).bytesize / 8.0).ceil if n <= SMALL_BIG_N_MAX :small_big else :large_big end end end |