module XRBP::NodeStore::STAmount::Conversion
Public Class Methods
included(base)
click to toggle source
# File lib/xrbp/nodestore/sle/st_amount_conversion.rb, line 86 def self.included(base) base.extend(ClassMethods) end
Public Instance Methods
clear()
click to toggle source
# File lib/xrbp/nodestore/sle/st_amount_conversion.rb, line 174 def clear # From rippled docs: # The -100 is used to allow 0 to sort less than a small positive values # which have a negative exponent. @exponent = native? ? 0 : -100 @neg = false @mantissa = 0 end
iou_amount()
click to toggle source
# File lib/xrbp/nodestore/sle/st_amount_conversion.rb, line 197 def iou_amount (neg ? -1 : 1) * mantissa * 10 ** exponent end
negate!()
click to toggle source
# File lib/xrbp/nodestore/sle/st_amount_conversion.rb, line 109 def negate! return if zero? @neg = !@neg end
sn_value()
click to toggle source
# File lib/xrbp/nodestore/sle/st_amount_conversion.rb, line 184 def sn_value neg ? (-mantissa) : mantissa end
to_h()
click to toggle source
# File lib/xrbp/nodestore/sle/st_amount_conversion.rb, line 102 def to_h {:mantissa => mantissa, :exponent => exponent, :neg => neg, :issue => issue.to_h} end
to_wire()
click to toggle source
Encode STAmount
into binary format
# File lib/xrbp/nodestore/sle/st_amount_conversion.rb, line 91 def to_wire xrp_bit = ((native? ? 0 : 1) << 63) neg_bit = (( neg ? 0 : 1) << 62) value_bits = native? ? mantissa : (((exponent+97) << 54) + mantissa) xrp_bit + neg_bit + value_bits end
xrp_amount()
click to toggle source
In drops!
# File lib/xrbp/nodestore/sle/st_amount_conversion.rb, line 191 def xrp_amount neg ? (-value) : value end
Also aliased as: drops
Protected Instance Methods
canonicalize()
click to toggle source
# File lib/xrbp/nodestore/sle/st_amount_conversion.rb, line 118 def canonicalize if native? if @mantissa == 0 @exponent = 0 @neg = false return end while @exponent < 0 @mantissa /= 10 @exponent += 1 end while @exponent > 0 @mantissa *= 10 @exponent -= 1 end raise if @mantissa > MAX_NATIVE return end if @mantissa == 0 @exponent = -100 @negative = false return end while ((@mantissa < MIN_VAL) && (@exponent > MIN_OFFSET)) @mantissa *= 10; @exponent -= 1 end while (@mantissa > MAX_VAL) raise "value overflow" if (@exponent >= MAX_OFFSET) @mantissa /= 10 @exponent += 1 end if @exponent < MIN_OFFSET || @mantissa < MIN_VAL @mantissa = 0; @neg = false; @exponent = -100; return end raise "value overflow" if (@exponent > MAX_OFFSET) raise unless @mantissa == 0 || (@mantissa >= MIN_VAL && @mantissa <= MAX_VAL) raise unless @mantissa == 0 || (@exponent >= MIN_OFFSET && @exponent <= MAX_OFFSET) raise unless @mantissa != 0 || @exponent != -100 end