Central Docs
Catálogo Inicio

Calificadores de tipo

Bagron tiene dos calificadores de tipo principales: const y unique. Ambos se escriben dentro de la forma del tipo y cambian qué operaciones son válidas.

const

const protege el valor almacenado:

limit: const int32 = 10
text: const char[6] = "Hola"

Una asignación posterior a limit o a un elemento de text se rechaza. La constancia del dato y la del puntero son independientes:

fixed *: const int32          # el dato apuntado no se modifica mediante fixed
const fixed_address *: int32  # la dirección guardada no cambia
const both *: const int32     # ambas propiedades

const no hace que el dato sea privado ni impide que otro acceso mutable válido lo modifique. Solo controla el acceso descrito por esa declaración.

chain ya es constante y no puede declararse const chain. Los metadatos Len_t, Size_t, Signed_t y Region_t tampoco aceptan const: el compilador los suministra o controla internamente.

unique

unique solo se permite en parámetros de arrays y buffer:

func normalize(
    values: unique int32[],
    length: Len_t,
    size: Size_t,
    region: Region_t
) void:
    if length > 0:
        values[0] = 0
    return

La llamada visible es normalize(values). Bagron debe demostrar que el argumento tiene una región de almacenamiento concreta y que no se solapa con otra región unique. Region_t acompaña al parámetro y no se escribe en la llamada.

No uses unique en escalares, punteros crudos, chain o metadatos. No transfiere por sí solo ownership y no convierte una dirección obtenida con $ en una región exclusiva.