Ada: registro de embalagem com matriz de tamanho variável
Estou procurando criar um registro compactado que possa conter uma matriz com o comprimento varia de 5 a 50 elementos. É possível fazer isso de forma que o registro possa ser compactado sem espaço desperdiçado? Vou saber quantos elementos estarão na matriz quando for criar o registro.
-- the range of the array
type Array_Range_T is Integer range 5 .. 50;
-- the array type
type Array_Type_T is array range (Array_Range_T) of Integer;
-- the record
type My_Record_T (Array_Length : Integer := 5) is
record
-- OTHER DATA HERE
The_Array : Array_Type_T(Array_Length);
end record;
-- Pack the record
for My_Record_T use
record
-- OTHER DATA
The_Array at 10 range 0 .. Array_Length * 16;
end record;
for My_Record_T'Size use 80 + (Array_Length * 16);
Obviamente, isso não será compilado, mas mostra o espírito do que estou tentando fazer. Se possível, eu gostaria de manter o comprimento da matriz fora do registro.
Obrigado!