Pular para o conteúdo

sto_subarray

Objetos Serializados
  • Analisa um STArray apontado por read_ptr
  • Encontra o índice do array especificado por array_id
  • Retorna o deslocamento (offset) em bytes e o tamanho do campo serializado dentro do STObject, se encontrado
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 was not found in the STObject pointed at by memo_ptr
}
else
{
// 0th index of the STArray was found and its location is as follows:
uint8_t* memo_ptr = SUB_OFFSET(memo_lookup) + memos;
uint32_t memo_len = SUB_LENGTH(memo_lookup);
}
NomeTipoDescrição
read_ptruint32_tPonteiro para o buffer contendo o STArray
read_lenuint32_tTamanho do STArray
array_iduint32_tO índice da entrada dentro do STArray que você está buscando. Começa em 0.
TipoDescrição
int64_t

A localização do campo dentro do buffer especificado:
- Os 32 bits superiores são o deslocamento (offset).
- Os 32 bits inferiores são o tamanho.

Se negativo, um erro:
OUT_OF_BOUNDS
- ponteiros/tamanhos especificados fora da memória do hook.

TOO_SMALL
- O buffer de entrada não é grande o suficiente para possivelmente conter um STArray válido.

DOESNT_EXIST
- O índice buscado não está presente no STArray fornecido.

PARSE_ERROR
- O STArray fornecido está malformado ou não é um STArray.