Saltearse al contenido

sto_emplace

Objetos Serializados
  • Parsea un STObject S (objeto origen) apuntado por sread_ptr
  • Parsea un STObject F (campo a insertar/incrustar) apuntado por fread_ptr
  • Escribe un nuevo STObject en write_ptr que inserta F dentro de S en la posición 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);
NombreTipoDescripción
write_ptruint32_tBuffer donde se escribirá el STObject modificado
write_lenuint32_tLongitud del buffer de salida
sread_ptruint32_tBuffer que contiene el STObject origen
sread_lenuint32_tLongitud del objeto origen
fread_ptruint32_tBuffer que contiene el campo a insertar
fread_lenuint32_tLongitud del campo a insertar
field_iduint32_tCódigo sf donde insertar el campo. Si ya existe, se sobrescribe; si no, se inserta
TipoDescripción
int64_t

Número de bytes escritos en write_ptr

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

TOO_SMALL
- buffer insuficiente (debe cubrir objeto + campo)

TOO_BIG
- el campo es demasiado grande

PARSE_ERROR
- el STObject es inválido o mal formado