Pular para o conteúdo

float_sto

Números de Ponto Flutuante (XFL) Objetos Serializados
  • Lê um número de ponto flutuante XFL e, opcionalmente, um código de campo e um código de moeda
  • Escreve um valor (amount) serializado em write_ptr conforme os parâmetros fornecidos
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: Could not dump pusd amount into sto"), 1);
NomeTipoDescrição
write_ptruint32_tPonteiro para um buffer de tamanho adequado para armazenar o campo de valor (amount) serializado. Recomenda-se pelo menos 48 bytes.
write_lenuint32_tO tamanho do buffer de saída.
cread_ptruint32_tPonteiro para um buffer contendo o código de moeda a ser serializado na saída. Pode ser nulo.
cread_lenuint32_tO tamanho do código de moeda. Deve ser 20 ou 3 ou 0 (nulo).
iread_ptruint32_tPonteiro para um buffer contendo o Account ID do emissor a ser serializado na saída. Pode ser nulo.
iread_lenuint32_tO tamanho do Account ID do emissor. Deve ser 20 ou 0 (nulo).
float1int64_tUm número de ponto flutuante de envoltório XFL a ser serializado.
field_codeuint32_t

O código de campo sf a ser usado como prefixo do valor (amount) serializado. Ex.: sfAmount.
Se este campo for 0xFFFFFFFFU (ou seja, (uint32_t)(-1)), então nenhum código de campo é antecedido à saída, e nenhum emissor ou código de moeda é anexado, mas a serialização ocorre como um valor (amount) de ponto flutuante.
Se este campo for 0, nenhum código de campo é antecedido à saída, e nenhum emissor ou código de moeda é anexado, mas a serialização ocorre como se o valor (amount) fosse um valor nativo de XRP em vez de um ponto flutuante.

TipoDescrição
int64_t

O número de bytes escritos no buffer de saída.

Se negativo, um erro:
INVALID_FLOAT
- o float fornecido não era um número de envoltório XFL válido

OUT_OF_BOUNDS
- ponteiros/tamanhos especificados fora da memória do hook.

INVALID_ARGUMENT
- Se instruído a gerar a saída como XRP ou sem field code, então todos os ponteiros e tamanhos que não sejam de escrita devem ser 0 (nulo).

TOO_SMALL
- O buffer de saída era pequeno demais para receber o objeto serializado.

XFL_OVERFLOW
- Expressar a saída causou um overflow durante a normalização.