Saltearse al contenido

sto_subarray

Objetos Serializados
  • Parsea un STArray apuntado por read_ptr
  • Encuentra el índice del array especificado por array_id
  • Devuelve el desplazamiento en bytes y la longitud del campo serializado dentro del STObject, si se encuentra
int64_t sto_subarray (
uint32_t read_ptr,
uint32_t read_len,
uint32_t array_id
);
#define SUB_OFFSET(x) ((int32_t)(x >> 32))
#define SUB_LENGTH(x) ((int32_t)(x & 0xFFFFFFFFULL))
int64_t memo_lookup =
sto_subarray(memos, memos_len, 0);
if (memo_lookup < 0)
{
// sfMemo no fue encontrado en el STObject apuntado por memo_ptr
}
else
{
// El índice 0 del STArray fue encontrado y su ubicación es la siguiente:
uint8_t* memo_ptr = SUB_OFFSET(memo_lookup) + memos;
uint32_t memo_len = SUB_LENGTH(memo_lookup);
}
NombreTipoDescripción
read_ptruint32_tPuntero al buffer que contiene el STArray
read_lenuint32_tLongitud del STArray
array_iduint32_tÍndice del elemento dentro del STArray que se desea obtener. Comienza en 0.
TipoDescripción
int64_t

Ubicación del campo dentro del buffer especificado:
- Los 32 bits altos son el desplazamiento (offset)
- Los 32 bits bajos son la longitud

Si es negativo, error:
OUT_OF_BOUNDS
- punteros fuera de la memoria del hook

TOO_SMALL
- el buffer es demasiado pequeño para contener un STArray válido

DOESNT_EXIST
- el índice buscado no existe

PARSE_ERROR
- el STArray es inválido o mal formado