Saltearse al contenido

float_sto

Números de punto flotante (XFL) Objetos serializados
  • Lee un número de punto flotante XFL y opcionalmente un código de campo y código de moneda
  • Escribe una cantidad serializada en write_ptr según los parámetros proporcionados
int64_t float_sto (
uint32_t write_ptr,
uint32_t write_len,
uint32_t cread_ptr,
uint32_t cread_len,
uint32_t iread_ptr,
uint32_t iread_len,
int64_t float1,
uint32_t field_code
);
#define SBUF(str) (uint32_t)(str), sizeof(str)
uint8_t amt_out[48];
if (float_sto(SBUF(amt_out),
SBUF(currency), SBUF(hook_accid), pusd_to_send, -1) < 0)
rollback(SBUF("Peggy: No se pudo serializar la cantidad pusd"), 1);
NombreTipoDescripción
write_ptruint32_tPuntero a un buffer de tamaño adecuado para almacenar el campo serializado. Se recomiendan al menos 48 bytes.
write_lenuint32_tLongitud del buffer de salida.
cread_ptruint32_tPuntero a un buffer que contiene el código de moneda a serializar. Puede ser null.
cread_lenuint32_tLongitud del código de moneda. Debe ser 20, 3 o 0 (null).
iread_ptruint32_tPuntero a un buffer que contiene el Account ID del emisor. Puede ser null.
iread_lenuint32_tLongitud del Account ID del emisor. Debe ser 20 o 0 (null).
float1int64_tNúmero XFL a serializar.
field_codeuint32_t

Código de campo sf para prefijar la cantidad serializada (ej. sfAmount).
Si es 0xFFFFFFFFU (o (uint32_t)(-1)) no se añade código de campo ni moneda/emisor, pero se serializa como flotante.
Si es 0, tampoco se añade código de campo ni moneda/emisor, pero se serializa como cantidad nativa XRP.

TipoDescripción
int64_t

Número de bytes escritos en el buffer.

Si es negativo, error:
INVALID_FLOAT
- el número no es un XFL válido

OUT_OF_BOUNDS
- punteros fuera de memoria del hook

INVALID_ARGUMENT
- parámetros incorrectos para modo XRP o sin field code

TOO_SMALL
- buffer demasiado pequeño

XFL_OVERFLOW
- desbordamiento al normalizar