summaryrefslogtreecommitdiff
path: root/src/kompsos-advanced_reify.ads
blob: ecda1c94957ddcb603f2d318818e2b3b50c3df97 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69


--  Programmed by Jedidiah Barber
--  Licensed under the Sunset License v1.0

--  See license.txt for further details


with

    Ada.Containers.Multiway_Trees;


generic
    type Element_Array is array (Positive range <>) of Element_Type;

    Null_Element : Element_Type;

    with function Variable_Convert
           (Item : in Term)
        return Element_Type is <>;

    --  Element_Trees must be passed in rather than instantiated inside the generic
    --  due to an issue with implementation-defined Disable_Controlled aspect in GNAT.
    with package Element_Trees is new Ada.Containers.Multiway_Trees
       (Element_Type => Element_Type,
        "="          => "=");
package Kompsos.Advanced_Reify is


    --  Term->Array Conversion  --

    function Flatten
           (Item : in Term)
        return Element_Array;


    --  Term->Tree Conversion  --

    function To_Tree
          (Item : in Term)
        return Element_Trees.Tree;


    --  Tree Reification  --

    function Treeify
           (Item  : in Term;
            Subst : in State)
        return Element_Trees.Tree;

    function Treeify_First
           (Subst : in State)
        return Element_Trees.Tree;

    function Treeify_First
           (Subst : in State;
            Name  : in String)
        return Element_Trees.Tree;

    function Treeify_First
           (Subst : in State;
            Name  : in Nametag)
        return Element_Trees.Tree;


end Kompsos.Advanced_Reify;