mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Update to 32-bit flags. A few serialized transaction fixes.
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
LedgerEntryFormat LedgerFormats[]=
|
||||
{
|
||||
{ "AccountRoot", ltACCOUNT_ROOT, {
|
||||
{ S_FIELD(Flags), STI_UINT16, SOE_FLAGS, 0 },
|
||||
{ S_FIELD(Flags), STI_UINT32, SOE_FLAGS, 0 },
|
||||
{ S_FIELD(Account), STI_ACCOUNT, SOE_REQUIRED, 0 },
|
||||
{ S_FIELD(Sequence), STI_UINT32, SOE_REQUIRED, 0 },
|
||||
{ S_FIELD(Balance), STI_AMOUNT, SOE_REQUIRED, 0 },
|
||||
@@ -15,11 +15,11 @@ LedgerEntryFormat LedgerFormats[]=
|
||||
{ S_FIELD(EmailHash), STI_HASH128, SOE_IFFLAG, 1 },
|
||||
{ S_FIELD(WalletLocator),STI_HASH256, SOE_IFFLAG, 2 },
|
||||
{ S_FIELD(MessageKey), STI_VL, SOE_IFFLAG, 4 },
|
||||
{ S_FIELD(Extensions), STI_TL, SOE_IFFLAG, 32768 },
|
||||
{ S_FIELD(Extensions), STI_TL, SOE_IFFLAG, 0x01000000 },
|
||||
{ sfInvalid, NULL, STI_DONE, SOE_NEVER, -1 } }
|
||||
},
|
||||
{ "RippleState", ltRIPPLE_STATE, {
|
||||
{ S_FIELD(Flags), STI_UINT16, SOE_FLAGS, 0 },
|
||||
{ S_FIELD(Flags), STI_UINT32, SOE_FLAGS, 0 },
|
||||
{ S_FIELD(Borrower), STI_ACCOUNT, SOE_REQUIRED, 0 },
|
||||
{ S_FIELD(Lender), STI_ACCOUNT, SOE_REQUIRED, 0 },
|
||||
{ S_FIELD(Currency), STI_HASH160, SOE_IFFLAG, 1 },
|
||||
@@ -30,16 +30,16 @@ LedgerEntryFormat LedgerFormats[]=
|
||||
{ S_FIELD(NextRate), STI_UINT32, SOE_IFFLAG, 8 },
|
||||
{ S_FIELD(NextRateLgr), STI_UINT32, SOE_IFFLAG, 8 },
|
||||
{ S_FIELD(NextRateExp), STI_UINT32, SOE_IFFLAG, 16 },
|
||||
{ S_FIELD(Extensions), STI_TL, SOE_IFFLAG, 32768 },
|
||||
{ S_FIELD(Extensions), STI_TL, SOE_IFFLAG, 0x01000000 },
|
||||
{ sfInvalid, NULL, STI_DONE, SOE_NEVER, -1 } }
|
||||
},
|
||||
{ "Nickname", ltNICKNAME, {
|
||||
{ S_FIELD(Flags), STI_UINT16, SOE_FLAGS, 0 },
|
||||
{ S_FIELD(Flags), STI_UINT32, SOE_FLAGS, 0 },
|
||||
{ S_FIELD(Nickname), STI_HASH256, SOE_REQUIRED, 0 },
|
||||
{ S_FIELD(Account), STI_ACCOUNT, SOE_REQUIRED, 0 },
|
||||
{ S_FIELD(MinimumOffer), STI_AMOUNT, SOE_IFFLAG, 1 },
|
||||
{ S_FIELD(OfferCurrency),STI_HASH160, SOE_IFFLAG, 2 },
|
||||
{ S_FIELD(Extensions), STI_TL, SOE_IFFLAG, 32768 },
|
||||
{ S_FIELD(Extensions), STI_TL, SOE_IFFLAG, 0x01000000 },
|
||||
{ sfInvalid, NULL, STI_DONE, SOE_NEVER, -1 } }
|
||||
},
|
||||
{ NULL, ltINVALID }
|
||||
|
||||
@@ -112,9 +112,9 @@ STObject::STObject(SOElement* elem, SerializerIterator& sit, const char *name) :
|
||||
}
|
||||
else if(elem->e_type==SOE_FLAGS)
|
||||
{
|
||||
assert(elem->e_id==STI_UINT16);
|
||||
flags=sit.get16();
|
||||
mFlagIdx=giveObject(new STUInt16(elem->e_name, flags));
|
||||
assert(elem->e_id==STI_UINT32);
|
||||
flags=sit.get32();
|
||||
mFlagIdx=giveObject(new STUInt32(elem->e_name, flags));
|
||||
done=true;
|
||||
}
|
||||
if(!done)
|
||||
@@ -232,28 +232,28 @@ bool STObject::isFieldPresent(SOE_Field field) const
|
||||
return peekAtIndex(field).getSType()==STI_OBJECT;
|
||||
}
|
||||
|
||||
bool STObject::setFlag(int f)
|
||||
bool STObject::setFlag(uint32 f)
|
||||
{
|
||||
if(mFlagIdx<0) return false;
|
||||
STUInt16* t=dynamic_cast<STUInt16*>(getPIndex(mFlagIdx));
|
||||
STUInt32* t=dynamic_cast<STUInt32*>(getPIndex(mFlagIdx));
|
||||
assert(t);
|
||||
t->setValue(t->getValue() | f);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool STObject::clearFlag(int f)
|
||||
bool STObject::clearFlag(uint32 f)
|
||||
{
|
||||
if(mFlagIdx<0) return false;
|
||||
STUInt16* t=dynamic_cast<STUInt16*>(getPIndex(mFlagIdx));
|
||||
STUInt32* t=dynamic_cast<STUInt32*>(getPIndex(mFlagIdx));
|
||||
assert(t);
|
||||
t->setValue(t->getValue() & ~f);
|
||||
return true;
|
||||
}
|
||||
|
||||
int STObject::getFlag(void) const
|
||||
uint32 STObject::getFlags(void) const
|
||||
{
|
||||
if(mFlagIdx<0) return 0;
|
||||
const STUInt16* t=dynamic_cast<const STUInt16*>(peekAtPIndex(mFlagIdx));
|
||||
const STUInt32* t=dynamic_cast<const STUInt32*>(peekAtPIndex(mFlagIdx));
|
||||
assert(t);
|
||||
return t->getValue();
|
||||
}
|
||||
|
||||
@@ -72,9 +72,9 @@ public:
|
||||
|
||||
int getCount() const { return mData.size(); }
|
||||
|
||||
bool setFlag(int);
|
||||
bool clearFlag(int);
|
||||
int getFlag() const;
|
||||
bool setFlag(uint32);
|
||||
bool clearFlag(uint32);
|
||||
uint32 getFlags() const;
|
||||
|
||||
const SerializedType& peekAtIndex(int offset) const { return mData[offset]; }
|
||||
SerializedType& getIndex(int offset) { return mData[offset]; }
|
||||
|
||||
@@ -52,10 +52,9 @@ public:
|
||||
std::string getTransactionType() const { return mFormat->t_name; }
|
||||
|
||||
// inner transaction functions
|
||||
uint16 getFlags() const;
|
||||
void setFlag(int v);
|
||||
void clearFlag(int v);
|
||||
bool isFlag(int v);
|
||||
uint32 getFlags() const { return mInnerTxn.getFlags(); }
|
||||
void setFlag(uint32 v) { mInnerTxn.setFlag(v); }
|
||||
void clearFlag(uint32 v) { mInnerTxn.clearFlag(v); }
|
||||
|
||||
uint32 getSequence() const;
|
||||
void setSequence(uint32);
|
||||
|
||||
@@ -6,18 +6,18 @@
|
||||
TransactionFormat InnerTxnFormats[]=
|
||||
{
|
||||
{ "MakePayment", ttMAKE_PAYMENT, {
|
||||
{ S_FIELD(Flags), STI_UINT16, SOE_FLAGS, 0 },
|
||||
{ S_FIELD(Flags), STI_UINT32, SOE_FLAGS, 0 },
|
||||
{ S_FIELD(Destination), STI_ACCOUNT, SOE_REQUIRED, 0 },
|
||||
{ S_FIELD(Amount), STI_AMOUNT, SOE_REQUIRED, 0 },
|
||||
{ S_FIELD(Currency), STI_HASH160, SOE_IFFLAG, 1 },
|
||||
{ S_FIELD(SourceTag), STI_UINT32, SOE_IFFLAG, 2 },
|
||||
{ S_FIELD(TargetLedger), STI_UINT32, SOE_IFFLAG, 4 },
|
||||
{ S_FIELD(InvoiceID), STI_HASH256, SOE_IFFLAG, 8 },
|
||||
{ S_FIELD(Extensions), STI_TL, SOE_IFFLAG, 32768 },
|
||||
{ S_FIELD(Extensions), STI_TL, SOE_IFFLAG, 0x01000000 },
|
||||
{ sfInvalid, NULL, STI_DONE, SOE_NEVER, -1 } }
|
||||
},
|
||||
{ "Invoice", ttINVOICE, {
|
||||
{ S_FIELD(Flags), STI_UINT16, SOE_FLAGS, 0 },
|
||||
{ S_FIELD(Flags), STI_UINT32, SOE_FLAGS, 0 },
|
||||
{ S_FIELD(Target), STI_ACCOUNT, SOE_REQUIRED, 0 },
|
||||
{ S_FIELD(Amount), STI_AMOUNT, SOE_REQUIRED, 0 },
|
||||
{ S_FIELD(Currency), STI_HASH160, SOE_IFFLAG, 1 },
|
||||
@@ -25,11 +25,11 @@ TransactionFormat InnerTxnFormats[]=
|
||||
{ S_FIELD(Destination), STI_ACCOUNT, SOE_IFFLAG, 4 },
|
||||
{ S_FIELD(TargetLedger), STI_UINT32, SOE_IFFLAG, 8 },
|
||||
{ S_FIELD(Identifier), STI_VL, SOE_IFFLAG, 16 },
|
||||
{ S_FIELD(Extensions), STI_TL, SOE_IFFLAG, 32768 },
|
||||
{ S_FIELD(Extensions), STI_TL, SOE_IFFLAG, 0x01000000 },
|
||||
{ sfInvalid, NULL, STI_DONE, SOE_NEVER, -1 } }
|
||||
},
|
||||
{ "Offer", ttEXCHANGE_OFFER, {
|
||||
{ S_FIELD(Flags), STI_UINT16, SOE_FLAGS, 0 },
|
||||
{ S_FIELD(Flags), STI_UINT32, SOE_FLAGS, 0 },
|
||||
{ S_FIELD(AmountIn), STI_AMOUNT, SOE_REQUIRED, 0 },
|
||||
{ S_FIELD(CurrencyIn), STI_HASH160, SOE_IFFLAG, 2 },
|
||||
{ S_FIELD(AmountOut), STI_AMOUNT, SOE_REQUIRED, 0 },
|
||||
@@ -39,7 +39,7 @@ TransactionFormat InnerTxnFormats[]=
|
||||
{ S_FIELD(TargetLedger), STI_UINT32, SOE_IFFLAG, 32 },
|
||||
{ S_FIELD(ExpireLedger), STI_UINT32, SOE_IFFLAG, 64 },
|
||||
{ S_FIELD(Identifier), STI_VL, SOE_IFFLAG, 128 },
|
||||
{ S_FIELD(Extensions), STI_TL, SOE_IFFLAG, 32768 },
|
||||
{ S_FIELD(Extensions), STI_TL, SOE_IFFLAG, 0x01000000 },
|
||||
{ sfInvalid, NULL, STI_DONE, SOE_NEVER, -1 } }
|
||||
},
|
||||
{ NULL, ttINVALID }
|
||||
|
||||
Reference in New Issue
Block a user