mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
A simplification.
This commit is contained in:
@@ -15,7 +15,7 @@ void STAmount::canonicalize()
|
|||||||
{
|
{
|
||||||
if (value == 0)
|
if (value == 0)
|
||||||
{
|
{
|
||||||
offset = 0;
|
offset = -100;
|
||||||
value = 0;
|
value = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -34,7 +34,8 @@ void STAmount::canonicalize()
|
|||||||
++offset;
|
++offset;
|
||||||
}
|
}
|
||||||
assert( (value == 0) || ( (value >= cMinValue) && (value <= cMaxValue) ) );
|
assert( (value == 0) || ( (value >= cMinValue) && (value <= cMaxValue) ) );
|
||||||
assert( (offset >= cMinOffset) && (offset <= cMaxOffset) );
|
assert( (value == 0) || (offset >= cMinOffset) && (offset <= cMaxOffset) );
|
||||||
|
assert( (value != 0) || (offset != -100) );
|
||||||
}
|
}
|
||||||
|
|
||||||
STAmount* STAmount::construct(SerializerIterator& sit, const char *name)
|
STAmount* STAmount::construct(SerializerIterator& sit, const char *name)
|
||||||
@@ -60,6 +61,7 @@ STAmount* STAmount::construct(SerializerIterator& sit, const char *name)
|
|||||||
|
|
||||||
std::string STAmount::getRaw() const
|
std::string STAmount::getRaw() const
|
||||||
{ // show raw internal form
|
{ // show raw internal form
|
||||||
|
if (value == 0) return "0";
|
||||||
return boost::lexical_cast<std::string>(value) + "e" + boost::lexical_cast<std::string>(offset);
|
return boost::lexical_cast<std::string>(value) + "e" + boost::lexical_cast<std::string>(offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,8 +118,6 @@ bool STAmount::operator!=(const STAmount& a) const
|
|||||||
|
|
||||||
bool STAmount::operator<(const STAmount& a) const
|
bool STAmount::operator<(const STAmount& a) const
|
||||||
{
|
{
|
||||||
if (a.value == 0) return false;
|
|
||||||
if (value == 0) return true;
|
|
||||||
if (offset < a.offset) return true;
|
if (offset < a.offset) return true;
|
||||||
if (a.offset < offset) return false;
|
if (a.offset < offset) return false;
|
||||||
return value < a.value;
|
return value < a.value;
|
||||||
@@ -125,8 +125,6 @@ bool STAmount::operator<(const STAmount& a) const
|
|||||||
|
|
||||||
bool STAmount::operator>(const STAmount& a) const
|
bool STAmount::operator>(const STAmount& a) const
|
||||||
{
|
{
|
||||||
if (value == 0) return false;
|
|
||||||
if (a.value == 0) return true;
|
|
||||||
if (offset > a.offset) return true;
|
if (offset > a.offset) return true;
|
||||||
if (a.offset > offset) return false;
|
if (a.offset > offset) return false;
|
||||||
return value > a.value;
|
return value > a.value;
|
||||||
@@ -134,8 +132,6 @@ bool STAmount::operator>(const STAmount& a) const
|
|||||||
|
|
||||||
bool STAmount::operator<=(const STAmount& a) const
|
bool STAmount::operator<=(const STAmount& a) const
|
||||||
{
|
{
|
||||||
if (value == 0) return true;
|
|
||||||
if (a.value == 0) return false;
|
|
||||||
if (offset < a.offset) return true;
|
if (offset < a.offset) return true;
|
||||||
if (a.offset < offset) return false;
|
if (a.offset < offset) return false;
|
||||||
return value <= a.value;
|
return value <= a.value;
|
||||||
@@ -143,8 +139,6 @@ bool STAmount::operator<=(const STAmount& a) const
|
|||||||
|
|
||||||
bool STAmount::operator>=(const STAmount& a) const
|
bool STAmount::operator>=(const STAmount& a) const
|
||||||
{
|
{
|
||||||
if (a.value == 0) return true;
|
|
||||||
if (value == 0) return false;
|
|
||||||
if (offset > a.offset) return true;
|
if (offset > a.offset) return true;
|
||||||
if (a.offset > offset) return false;
|
if (a.offset > offset) return false;
|
||||||
return value >= a.value;
|
return value >= a.value;
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ public:
|
|||||||
class STAmount : public SerializedType
|
class STAmount : public SerializedType
|
||||||
{
|
{
|
||||||
// Internal form:
|
// Internal form:
|
||||||
// 1: If amount is zero, then offset and value are both zero.
|
// 1: If amount is zero, then value is zero and offset is -100
|
||||||
// 2: Otherwise:
|
// 2: Otherwise:
|
||||||
// legal offset range is -96 to +80 inclusive
|
// legal offset range is -96 to +80 inclusive
|
||||||
// value range is 10^15 to (10^16 - 1) inclusive
|
// value range is 10^15 to (10^16 - 1) inclusive
|
||||||
@@ -196,7 +196,7 @@ public:
|
|||||||
|
|
||||||
int getOffset() const { return offset; }
|
int getOffset() const { return offset; }
|
||||||
uint64 getValue() const { return value; }
|
uint64 getValue() const { return value; }
|
||||||
void zero() { offset=0; value=0; }
|
void zero() { offset=0; value=-100; }
|
||||||
bool isZero() const { return value==0; }
|
bool isZero() const { return value==0; }
|
||||||
|
|
||||||
virtual bool isEquivalent(const SerializedType& t) const;
|
virtual bool isEquivalent(const SerializedType& t) const;
|
||||||
|
|||||||
Reference in New Issue
Block a user