mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Final non-breaking changes to serializer classes. Extra set helper functions.
This commit is contained in:
@@ -343,3 +343,115 @@ std::vector<TaggedListItem> STObject::getValueFieldTL(SOE_Field field) const
|
|||||||
if(!cf) throw std::runtime_error("Wrong field type");
|
if(!cf) throw std::runtime_error("Wrong field type");
|
||||||
return cf->getValue();
|
return cf->getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void STObject::setValueFieldU8(SOE_Field field, unsigned char v)
|
||||||
|
{
|
||||||
|
SerializedType* rf=getPField(field);
|
||||||
|
if(!rf) throw std::runtime_error("Field not found");
|
||||||
|
SerializedTypeID id=rf->getType();
|
||||||
|
if(id==STI_OBJECT)
|
||||||
|
{
|
||||||
|
makeFieldPresent(field);
|
||||||
|
rf=getPField(field);
|
||||||
|
id=rf->getType();
|
||||||
|
}
|
||||||
|
STUInt8* cf=dynamic_cast<STUInt8*>(rf);
|
||||||
|
if(!cf) throw(std::runtime_error("Wrong field type"));
|
||||||
|
cf->setValue(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
void STObject::setValueFieldU16(SOE_Field field, uint16 v)
|
||||||
|
{
|
||||||
|
SerializedType* rf=getPField(field);
|
||||||
|
if(!rf) throw std::runtime_error("Field not found");
|
||||||
|
SerializedTypeID id=rf->getType();
|
||||||
|
if(id==STI_OBJECT)
|
||||||
|
{
|
||||||
|
makeFieldPresent(field);
|
||||||
|
rf=getPField(field);
|
||||||
|
id=rf->getType();
|
||||||
|
}
|
||||||
|
STUInt16* cf=dynamic_cast<STUInt16*>(rf);
|
||||||
|
if(!cf) throw(std::runtime_error("Wrong field type"));
|
||||||
|
cf->setValue(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
void STObject::setValueFieldU32(SOE_Field field, uint32 v)
|
||||||
|
{
|
||||||
|
SerializedType* rf=getPField(field);
|
||||||
|
if(!rf) throw std::runtime_error("Field not found");
|
||||||
|
SerializedTypeID id=rf->getType();
|
||||||
|
if(id==STI_OBJECT)
|
||||||
|
{
|
||||||
|
makeFieldPresent(field);
|
||||||
|
rf=getPField(field);
|
||||||
|
id=rf->getType();
|
||||||
|
}
|
||||||
|
STUInt32* cf=dynamic_cast<STUInt32*>(rf);
|
||||||
|
if(!cf) throw(std::runtime_error("Wrong field type"));
|
||||||
|
cf->setValue(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
void STObject::setValueFieldU64(SOE_Field field, uint64 v)
|
||||||
|
{
|
||||||
|
SerializedType* rf=getPField(field);
|
||||||
|
if(!rf) throw std::runtime_error("Field not found");
|
||||||
|
SerializedTypeID id=rf->getType();
|
||||||
|
if(id==STI_OBJECT)
|
||||||
|
{
|
||||||
|
makeFieldPresent(field);
|
||||||
|
rf=getPField(field);
|
||||||
|
id=rf->getType();
|
||||||
|
}
|
||||||
|
STUInt64* cf=dynamic_cast<STUInt64*>(rf);
|
||||||
|
if(!cf) throw(std::runtime_error("Wrong field type"));
|
||||||
|
cf->setValue(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
void STObject::setValueFieldH160(SOE_Field field, const uint160& v)
|
||||||
|
{
|
||||||
|
SerializedType* rf=getPField(field);
|
||||||
|
if(!rf) throw std::runtime_error("Field not found");
|
||||||
|
SerializedTypeID id=rf->getType();
|
||||||
|
if(id==STI_OBJECT)
|
||||||
|
{
|
||||||
|
makeFieldPresent(field);
|
||||||
|
rf=getPField(field);
|
||||||
|
id=rf->getType();
|
||||||
|
}
|
||||||
|
STHash160* cf=dynamic_cast<STHash160*>(rf);
|
||||||
|
if(!cf) throw(std::runtime_error("Wrong field type"));
|
||||||
|
cf->setValue(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
void STObject::setValueFieldVL(SOE_Field field, const std::vector<unsigned char>& v)
|
||||||
|
{
|
||||||
|
SerializedType* rf=getPField(field);
|
||||||
|
if(!rf) throw std::runtime_error("Field not found");
|
||||||
|
SerializedTypeID id=rf->getType();
|
||||||
|
if(id==STI_OBJECT)
|
||||||
|
{
|
||||||
|
makeFieldPresent(field);
|
||||||
|
rf=getPField(field);
|
||||||
|
id=rf->getType();
|
||||||
|
}
|
||||||
|
STVariableLength* cf=dynamic_cast<STVariableLength*>(rf);
|
||||||
|
if(!cf) throw(std::runtime_error("Wrong field type"));
|
||||||
|
cf->setValue(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
void STObject::setValueFieldTL(SOE_Field field, const std::vector<TaggedListItem>& v)
|
||||||
|
{
|
||||||
|
SerializedType* rf=getPField(field);
|
||||||
|
if(!rf) throw std::runtime_error("Field not found");
|
||||||
|
SerializedTypeID id=rf->getType();
|
||||||
|
if(id==STI_OBJECT)
|
||||||
|
{
|
||||||
|
makeFieldPresent(field);
|
||||||
|
rf=getPField(field);
|
||||||
|
id=rf->getType();
|
||||||
|
}
|
||||||
|
STTaggedList* cf=dynamic_cast<STTaggedList*>(rf);
|
||||||
|
if(!cf) throw(std::runtime_error("Wrong field type"));
|
||||||
|
cf->setValue(v);
|
||||||
|
}
|
||||||
|
|||||||
@@ -93,6 +93,15 @@ public:
|
|||||||
std::vector<unsigned char> getValueFieldVL(SOE_Field field) const;
|
std::vector<unsigned char> getValueFieldVL(SOE_Field field) const;
|
||||||
std::vector<TaggedListItem> getValueFieldTL(SOE_Field field) const;
|
std::vector<TaggedListItem> getValueFieldTL(SOE_Field field) const;
|
||||||
|
|
||||||
|
void setValueFieldU8(SOE_Field field, unsigned char);
|
||||||
|
void setValueFieldU16(SOE_Field field, uint16);
|
||||||
|
void setValueFieldU32(SOE_Field field, uint32);
|
||||||
|
void setValueFieldU64(SOE_Field field, uint64);
|
||||||
|
void setValueFieldH160(SOE_Field field, const uint160&);
|
||||||
|
void setValueFieldH256(SOE_Field field, const uint256&);
|
||||||
|
void setValueFieldVL(SOE_Field field, const std::vector<unsigned char>&);
|
||||||
|
void setValueFieldTL(SOE_Field field, const std::vector<TaggedListItem>&);
|
||||||
|
|
||||||
bool isFieldPresent(SOE_Field field) const;
|
bool isFieldPresent(SOE_Field field) const;
|
||||||
void makeFieldPresent(SOE_Field field);
|
void makeFieldPresent(SOE_Field field);
|
||||||
void makeFieldAbsent(SOE_Field field);
|
void makeFieldAbsent(SOE_Field field);
|
||||||
|
|||||||
@@ -16,7 +16,8 @@ SerializedTransaction::SerializedTransaction(TransactionType type)
|
|||||||
|
|
||||||
SerializedTransaction::SerializedTransaction(SerializerIterator& sit, int length)
|
SerializedTransaction::SerializedTransaction(SerializerIterator& sit, int length)
|
||||||
{
|
{
|
||||||
if(length==0) length=sit.get32();
|
if(length==-1) length=sit.getBytesLeft();
|
||||||
|
else if(length==0) length=sit.get32();
|
||||||
if( (length<TransactionMinLen) || (length>TransactionMaxLen) )
|
if( (length<TransactionMinLen) || (length>TransactionMaxLen) )
|
||||||
throw(std::runtime_error("Transaction length invalid"));
|
throw(std::runtime_error("Transaction length invalid"));
|
||||||
|
|
||||||
|
|||||||
@@ -3,12 +3,17 @@
|
|||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include <boost/shared_ptr.hpp>
|
||||||
|
|
||||||
#include "uint256.h"
|
#include "uint256.h"
|
||||||
#include "SerializedObject.h"
|
#include "SerializedObject.h"
|
||||||
#include "TransactionFormats.h"
|
#include "TransactionFormats.h"
|
||||||
|
|
||||||
class SerializedTransaction : public STObject
|
class SerializedTransaction : public STObject
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
typedef boost::shared_ptr<SerializedTransaction> pointer;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
TransactionType type;
|
TransactionType type;
|
||||||
STVariableLength mSignature;
|
STVariableLength mSignature;
|
||||||
@@ -16,7 +21,7 @@ protected:
|
|||||||
TransactionFormat* mFormat;
|
TransactionFormat* mFormat;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SerializedTransaction(SerializerIterator&, int length);
|
SerializedTransaction(SerializerIterator& sit, int length); // -1=all remaining, 0=get from sit
|
||||||
SerializedTransaction(TransactionType type);
|
SerializedTransaction(TransactionType type);
|
||||||
|
|
||||||
// STObject functions
|
// STObject functions
|
||||||
@@ -65,7 +70,16 @@ public:
|
|||||||
uint256 getITFieldH256(SOE_Field field) const { return mInnerTxn.getValueFieldH256(field); }
|
uint256 getITFieldH256(SOE_Field field) const { return mInnerTxn.getValueFieldH256(field); }
|
||||||
std::vector<unsigned char> getITFieldVL(SOE_Field field) const { return mInnerTxn.getValueFieldVL(field); }
|
std::vector<unsigned char> getITFieldVL(SOE_Field field) const { return mInnerTxn.getValueFieldVL(field); }
|
||||||
std::vector<TaggedListItem> getITFieldTL(SOE_Field field) const { return mInnerTxn.getValueFieldTL(field); }
|
std::vector<TaggedListItem> getITFieldTL(SOE_Field field) const { return mInnerTxn.getValueFieldTL(field); }
|
||||||
|
void SetITFieldU8(SOE_Field field, unsigned char v) { return mInnerTxn.setValueFieldU8(field, v); }
|
||||||
|
void SetITFieldU16(SOE_Field field, uint16 v) { return mInnerTxn.setValueFieldU16(field, v); }
|
||||||
|
void SetITFieldU32(SOE_Field field, uint32 v) { return mInnerTxn.setValueFieldU32(field, v); }
|
||||||
|
void SetITFieldU64(SOE_Field field, uint32 v) { return mInnerTxn.setValueFieldU64(field, v); }
|
||||||
|
void SetITFieldH160(SOE_Field field, const uint160& v) { return mInnerTxn.setValueFieldH160(field, v); }
|
||||||
|
void SetITFieldH256(SOE_Field field, const uint256& v) { return mInnerTxn.setValueFieldH256(field, v); }
|
||||||
|
void SetITFieldVL(SOE_Field field, const std::vector<unsigned char>& v)
|
||||||
|
{ return mInnerTxn.setValueFieldVL(field, v); }
|
||||||
|
void SetITFieldTL(SOE_Field field, const std::vector<TaggedListItem>& v)
|
||||||
|
{ return mInnerTxn.setValueFieldTL(field, v); }
|
||||||
|
|
||||||
// optional field functions
|
// optional field functions
|
||||||
bool getITFieldPresent(SOE_Field field) const;
|
bool getITFieldPresent(SOE_Field field) const;
|
||||||
|
|||||||
Reference in New Issue
Block a user