sto_emplace
Concepts
Section titled “Concepts”Behaviour
Section titled “Behaviour”- Parse an STObject
S(source object) pointed to bysread_ptr - Parse an STObject
F(to inject/emplace) pointed to byfread_ptr - Write a new STObject to
write_ptrwhich placesFintoSat the canonical positionfield_id
- Ask for the STO object by the param
sto - Ask for the bytes representing the field to be added by the param
field_bytes - Ask for the ID of the field to be added by the param
field_id - Return the updated STO object in binary encoded ledger data format, or an error code if the operation fails.
Definition
Section titled “Definition”C
int64_t sto_emplace ( uint32_t write_ptr, uint32_t write_len, uint32_t sread_ptr, uint32_t sread_len, uint32_t fread_ptr, uint32_t fread_len, uint32_t field_id);function sto_emplace( sto: ByteArray | HexString, field_bytes: ByteArray | HexString, field_id: number ): ErrorCode | ByteArrayExample
Section titled “Example”uint8_t tx_out[1024];
int64_t tx_len = sto_emplace(tx_out, sizeof(tx_out), tx_in, tx_len, sequence_field, 5, sfSequence);
if (tx_len <= 0) rollback("Emplacing failed.", 17, 1);const tx_out = sto_emplace(tx_in, sequence_field, sfSequence)if (typeof tx_out === 'number') rollback("Emplacing failed.", 1)Parameters
Section titled “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 |
| sread_ptr | uint32_t | The buffer to read the source STObject from |
| sread_len | uint32_t | The Length of the source object |
| fread_ptr | uint32_t | The buffer to read the field to be emplaced/injected from |
| fread_len | uint32_t | The length of the field to be emplaced/injected |
| field_id | uint32_t | The sf code (location) to form the emplacement. If this already exists in the source object then the existing field is overriden. If it doesn’t exist it is inserted. |
| Name | Type | Description |
|---|---|---|
| sto | ByteArray | HexString | The STO object (binary encoded ledger data) to which the field will be added. |
| field_bytes | ByteArray | HexString | The bytes representing the field to be added. |
| field_id | number | The ID of the field to be added. |
Return Code
Section titled “Return Code”| Type | Description |
|---|---|
| int64_t | The number of bytes written to write_ptrIf 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 + the injected field, even if the field is only being overriden. TOO_BIG- Field you are attempting to emplace is too large PARSE_ERROR- The supplied STObject is malformed or not an STObject. |
| Type | Description |
|---|---|
| ErrorCode | ByteArray | The updated STO object in binary encoded ledger data format, or an error code if the operation fails. |