Central Docs
Catálogo Inicio

Datos expansivos de compilación

Índice

Len_t, Size_t, Signed_t y Region_t aparecen en firmas, pero el usuario no escribe sus argumentos en la llamada. Bagron los calcula y los añade al ABI.

func inspect(
    data: int32[],
    length: Len_t,
    element_size: Size_t,
    signed: Signed_t
) void:
    return

func main() int32:
    values: int32[3] = {1, 2, 3}
    inspect(values)
    return 0

La llamada visible inspect(values) recibe internamente 3, 4 y 0:

  • Len_t: elementos de la primera dimensión;
  • Size_t: bytes de una unidad exterior (int32[2][3] produce 2 y 12);
  • Signed_t: 0 para signed y 1 para unsigned o byte.

Para cada array, Len_t y Size_t deben aparecer inmediatamente después del parámetro y en ese orden. Signed_t, si existe, va detrás.

chain puede pedir Len_t e incluye el NUL; buffer[] también usa solo Len_t, tomado del descriptor:

func inspect_buffer(data: buffer[], length: Len_t) usize:
    return length

Region_t acompaña a un parámetro unique y representa la región exclusiva demostrada por el compilador. No se escribe nunca en la llamada.