1generic
2
3    type Element_T is private;
4
5package Opt27_Pkg is
6
7    type Node_T is private;
8
9    type List_T is private;
10
11    function Is_Null (Node : in Node_T) return Boolean;
12
13    generic
14
15        type Template_T is private;
16
17        with function Is_Match
18                         (Element : in Element_T;
19                          Template : in Template_T) return Boolean is <>;
20
21    function Find_Elem (Template : Template_T; List : List_T) return Node_T;
22
23private
24
25    type Node_Rec_T;
26    type Node_T is access Node_Rec_T;
27
28    type List_T is record
29        First_Node : Node_T := null;
30        Last_Node : Node_T := null;
31    end record;
32
33end Opt27_Pkg;
34