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");
|
||||
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<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;
|
||||
void makeFieldPresent(SOE_Field field);
|
||||
void makeFieldAbsent(SOE_Field field);
|
||||
|
||||
@@ -16,7 +16,8 @@ SerializedTransaction::SerializedTransaction(TransactionType type)
|
||||
|
||||
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) )
|
||||
throw(std::runtime_error("Transaction length invalid"));
|
||||
|
||||
|
||||
@@ -3,12 +3,17 @@
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <boost/shared_ptr.hpp>
|
||||
|
||||
#include "uint256.h"
|
||||
#include "SerializedObject.h"
|
||||
#include "TransactionFormats.h"
|
||||
|
||||
class SerializedTransaction : public STObject
|
||||
{
|
||||
public:
|
||||
typedef boost::shared_ptr<SerializedTransaction> pointer;
|
||||
|
||||
protected:
|
||||
TransactionType type;
|
||||
STVariableLength mSignature;
|
||||
@@ -16,7 +21,7 @@ protected:
|
||||
TransactionFormat* mFormat;
|
||||
|
||||
public:
|
||||
SerializedTransaction(SerializerIterator&, int length);
|
||||
SerializedTransaction(SerializerIterator& sit, int length); // -1=all remaining, 0=get from sit
|
||||
SerializedTransaction(TransactionType type);
|
||||
|
||||
// STObject functions
|
||||
@@ -65,7 +70,16 @@ public:
|
||||
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<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
|
||||
bool getITFieldPresent(SOE_Field field) const;
|
||||
|
||||
Reference in New Issue
Block a user