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!

questionAnswers(2)

yourAnswerToTheQuestion