Remove a field from an STObject
Concepts
Behaviour
- Parse an STObject pointed to by
read_ptr
- Write a new STObject to
write_ptr
but withoutfield_id
if it was present in the original object.
Definition
int64_t sto_erase (
uint32_t write_ptr,
uint32_t write_len,
uint32_t read_ptr,
uint32_t read_len,
uint32_t field_id
);
Field ID encoding
The
sto_
apis accept afield_id
parameter encoded as follows:(type << 16U) + field
Thus type 1 field 2 would be0x10002U
.
Example
int64_t result =
sto_erase(tx_out, sizeof(tx_out),
tx_in, tx_len, sfSigners);
if (tx_len <= 0)
rollback("Erasing failed.", 15, 1);
Emplace equivalence
sto_erase
is the same assto_emplace
with0,0
forfield_ptr, field_len
parameters.
Parameters
Name | Type | Description |
---|---|---|
write_ptr | uint32_t | The buffer to write the modified STObject to |
write_len | uint32_t | The length of the output buffer |
read_ptr | uint32_t | The buffer to read the source STObject from |
read_len | uint32_t | The Length of the source object |
field_id | uint32_t | The sf code (location) to erase |
Return Code
Type | Description |
---|---|
int64_t | The number of bytes written to write_ptr If negative, an error: OUT_OF_BOUNDS - pointers/lengths specified outside of hook memory. TOO_SMALL - Output buffer must be at least as large as the source object. TOO_BIG - Field you are attempting to erase from is too large PARSE_ERROR - The supplied STObject is malformed or not an STObject. DOESNT_EXIST - The specified field_id isn't present in the STObject. |