Class: XRBP::NodeStore::STAmount
- Inherits:
-
Object
- Object
- XRBP::NodeStore::STAmount
- Includes:
- Arithmatic, Comparison, Conversion
- Defined in:
- lib/xrbp/nodestore/sle/st_amount.rb,
lib/xrbp/nodestore/sle/st_amount_arithmatic.rb,
lib/xrbp/nodestore/sle/st_amount_comparison.rb,
lib/xrbp/nodestore/sle/st_amount_conversion.rb
Overview
Serialized Amount Representation.
From rippled docs:
Internal form:
1: If amount is zero, then value is zero and offset is -100
2: Otherwise:
legal offset range is -96 to +80 inclusive
value range is 10^15 to (10^16 - 1) inclusive
amount = value * [10 ^ offset]
Wire form:
High 8 bits are (offset+142), legal range is, 80 to 22 inclusive
Low 56 bits are value, legal range is 10^15 to (10^16 - 1) inclusive
Defined Under Namespace
Modules: Arithmatic, Comparison, Conversion
Constant Summary collapse
- MIN_OFFSET =
DEFINES FROM STAmount.h
-96
- MAX_OFFSET =
80
- MIN_VAL =
1000000000000000
- MAX_VAL =
9999999999999999
- NOT_NATIVE =
0x8000000000000000
- POS_NATIVE =
0x4000000000000000
- MAX_NATIVE =
100000000000000000
Instance Attribute Summary collapse
-
#exponent ⇒ Object
(also: #offset)
readonly
Returns the value of attribute exponent.
-
#issue ⇒ Object
Returns the value of attribute issue.
-
#mantissa ⇒ Object
(also: #value)
readonly
Returns the value of attribute mantissa.
-
#neg ⇒ Object
readonly
Returns the value of attribute neg.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(args = {}) ⇒ STAmount
constructor
A new instance of STAmount.
- #inspect ⇒ Object
- #native? ⇒ Boolean
- #to_s ⇒ Object
- #zero? ⇒ Boolean
Methods included from Conversion
#clear, #iou_amount, #negate!, #sn_value, #to_h, #to_wire, #xrp_amount
Methods included from Comparison
Methods included from Arithmatic
Constructor Details
#initialize(args = {}) ⇒ STAmount
Returns a new instance of STAmount.
58 59 60 61 62 63 64 65 |
# File 'lib/xrbp/nodestore/sle/st_amount.rb', line 58 def initialize(args={}) @issue = args[:issue] @mantissa = args[:mantissa] || 0 @exponent = args[:exponent] || 0 @neg = !!args[:neg] canonicalize end |
Instance Attribute Details
#exponent ⇒ Object (readonly) Also known as: offset
Returns the value of attribute exponent.
36 37 38 |
# File 'lib/xrbp/nodestore/sle/st_amount.rb', line 36 def exponent @exponent end |
#issue ⇒ Object
Returns the value of attribute issue.
37 38 39 |
# File 'lib/xrbp/nodestore/sle/st_amount.rb', line 37 def issue @issue end |
#mantissa ⇒ Object (readonly) Also known as: value
Returns the value of attribute mantissa.
36 37 38 |
# File 'lib/xrbp/nodestore/sle/st_amount.rb', line 36 def mantissa @mantissa end |
#neg ⇒ Object (readonly)
Returns the value of attribute neg.
36 37 38 |
# File 'lib/xrbp/nodestore/sle/st_amount.rb', line 36 def neg @neg end |
Class Method Details
.from_quality(rate) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/xrbp/nodestore/sle/st_amount.rb', line 46 def self.from_quality(rate) return STAmount.new(:issue => NodeStore.no_issue) if rate == 0 mantissa = rate & ~(255 << (64 - 8)) exponent = (rate >> (64 - 8)).to_int32 - 100 return STAmount.new(:issue => NodeStore.no_issue, :mantissa => mantissa, :exponent => exponent) end |
Instance Method Details
#inspect ⇒ Object
77 78 79 80 81 82 83 84 |
# File 'lib/xrbp/nodestore/sle/st_amount.rb', line 77 def inspect return "0" if zero? i = issue.inspect i = i == '' ? '' : "(#{i})" (native? ? xrp_amount : iou_amount.to_f).to_s + (native? ? "" : i) end |
#native? ⇒ Boolean
69 70 71 |
# File 'lib/xrbp/nodestore/sle/st_amount.rb', line 69 def native? @issue && @issue.xrp? end |
#to_s ⇒ Object
86 87 88 |
# File 'lib/xrbp/nodestore/sle/st_amount.rb', line 86 def to_s inspect end |
#zero? ⇒ Boolean
73 74 75 |
# File 'lib/xrbp/nodestore/sle/st_amount.rb', line 73 def zero? @mantissa == 0 end |