summaryrefslogtreecommitdiff
path: root/src/kompsos-advanced_reify.ads
diff options
context:
space:
mode:
authorJedidiah Barber <contact@jedbarber.id.au>2025-11-19 16:51:08 +1300
committerJedidiah Barber <contact@jedbarber.id.au>2025-11-19 16:51:08 +1300
commit39a112952e328ce52e5f7b08bf18bbadd3fca03f (patch)
treea3ac33e45e4ca643da28930979d38454bda949ff /src/kompsos-advanced_reify.ads
parent5c077a81964096daf997949da695500c8ab4a7d3 (diff)
Reification, including Term flattening and Treeification
Diffstat (limited to 'src/kompsos-advanced_reify.ads')
-rw-r--r--src/kompsos-advanced_reify.ads69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/kompsos-advanced_reify.ads b/src/kompsos-advanced_reify.ads
new file mode 100644
index 0000000..ecda1c9
--- /dev/null
+++ b/src/kompsos-advanced_reify.ads
@@ -0,0 +1,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;
+
+