1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
Новые вопросы - какая функция определяет наличие или отсутствие утечек памяти? Я скачал ВинАДУ, поставил, как подключить пакет, содержащий заголовки виндовых библиотек? with ADA.Windows не рабтает, нет такого пакета.
function To_Vector (A : Key_Arr) return Key_Based_Vectors.Vector is
V : Key_Based_Vectors.Vector; Arr_Index : Integer := A'First;
procedure Update (Item : in out Key_Base) is begin Item := A (Arr_Index); Arr_Index := Arr_Index + 1; end Update;
procedure Copy (C : Key_Based_Vectors.Cursor) is begin V.Update_Element (C, Update'Access); end Copy;
use Key_Based_Vectors; begin Set_Length (V, A'Length); V.Iterate (Copy'Access); return V; end To_Vector;
(почему использован Update_Element - ибо не может привести к реаллокации данных ни при каких условиях, следовательно индексация не собьется. Replace_Element от этого не застрахован).
И
function Copy_Childs (V : Vector) return Vector is
New_Vector : Vector;
procedure Deep_Copy (C : Func_Tree_Vectors.Cursor) is begin New_Vector.Replace_Element (C, Copy_Tree (Element (V, To_Index ( C )))); end Deep_Copy;
begin Set_Length (New_Vector, Length (V)); New_Vector.Iterate (Deep_Copy'Access); return New_Vector; end Copy_Childs;