sto_subfield
Conceptos
Sección titulada «Conceptos»Comportamiento
Sección titulada «Comportamiento»- Parsea un STObject apuntado por
read_ptr - Encuentra el campo especificado por
field_id - Si el campo se encuentra, y:
-
- Es un array, devuelve el inicio y la longitud del array incluyendo los bytes de cabecera y cierre, o
-
- No es un array, devuelve el inicio y la longitud del PAYLOAD del campo (excluyendo los bytes de cabecera)
- Parsea un STObject en la variable
sto - Encuentra el campo especificado por
field_id
Definición
Sección titulada «Definición»int64_t sto_subfield ( uint32_t read_ptr, uint32_t read_len, uint32_t field_id);function sto_subfield( sto: ByteArray | HexString, field_id: number ): ErrorCode | bigintEjemplo
Sección titulada «Ejemplo»#define SUB_OFFSET(x) ((int32_t)(x >> 32))#define SUB_LENGTH(x) ((int32_t)(x & 0xFFFFFFFFULL))int64_t memos_lookup = sto_subfield(txn_ptr, txn_len, sfMemos);if (memos_lookup < 0){ // sfMemos no fue encontrado en el STObject apuntado por memo_ptr}else{ // sfMemos fue encontrado y su ubicación es la siguiente: uint8_t* memos_ptr = SUB_OFFSET(memos_lookup) + memos_ptr; int64_t memos_len = SUB_LENGTH(memos_lookup);}const SUB_OFFSET = (x) => Number(x >> 32n)const SUB_LENGTH = (x) => Number(x & 0xFFFFFFFFn)const memos_lookup = sto_subfield(txn, sfMemos);if (typeof memos_lookup === 'number'){ // sfMemos no fue encontrado en el STObject}else{ // sfMemos fue encontrado y su ubicación es la siguiente: const memo_start = SUB_OFFSET(memos_lookup) const memo_len = SUB_LENGTH(memos_lookup) const memo = txn.slice(memo_start, memo_len)}Parámetros
Sección titulada «Parámetros»| Nombre | Tipo | Descripción |
|---|---|---|
| read_ptr | uint32_t | Puntero al buffer que contiene el STObject |
| read_len | uint32_t | Longitud del STObject |
| field_id | uint32_t | Código |
| Nombre | Tipo | Descripción |
|---|---|---|
| sto | ByteArray or HexString | Objeto STO (datos del ledger codificados en binario) del que extraer el subcampo |
| field_id | number | Identificador del campo a extraer |
Código de retorno
Sección titulada «Código de retorno»| Tipo | Descripción |
|---|---|
| int64_t | Ubicación del campo dentro del buffer especificado: |
| Tipo | Descripción |
|---|---|
| bigint / ErrorCode | Ubicación del campo dentro del buffer: o un código de error si la extracción falla |