Pular para o conteúdo

sto_emplace

Objetos Serializados
  • Analisa um STObject S (objeto de origem) apontado por sread_ptr
  • Analisa um STObject F (a ser injetado/inserido) apontado por fread_ptr
  • Escreve um novo STObject em write_ptr que coloca F dentro de S na posição canônica field_id

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
);
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);
NomeTipoDescrição
write_ptruint32_tO buffer onde o STObject modificado será escrito
write_lenuint32_tO tamanho do buffer de saída
sread_ptruint32_tO buffer de onde o STObject de origem será lido
sread_lenuint32_tO tamanho do objeto de origem
fread_ptruint32_tO buffer de onde o campo a ser inserido/injetado será lido
fread_lenuint32_tO tamanho do campo a ser inserido/injetado
field_iduint32_tO código sf (localização) para formar a inserção. Se já existir no objeto de origem, o campo existente é substituído. Se não existir, é inserido.
TipoDescrição
int64_tO número de bytes escritos em write_ptr

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

TOO_SMALL
- O buffer de saída deve ser pelo menos tão grande quanto o objeto de origem + o campo injetado, mesmo que o campo esteja apenas sendo substituído.

TOO_BIG
- O campo que você está tentando inserir é muito grande

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