aboutsummaryrefslogtreecommitdiff
path: root/src/kompsos-collector.ads
diff options
context:
space:
mode:
Diffstat (limited to 'src/kompsos-collector.ads')
-rw-r--r--src/kompsos-collector.ads31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/kompsos-collector.ads b/src/kompsos-collector.ads
index b58721a..d352fa3 100644
--- a/src/kompsos-collector.ads
+++ b/src/kompsos-collector.ads
@@ -46,6 +46,8 @@ private
type State_Access is access State;
+
+
type Eval_Kind is
(Unify_Data,
Disjunct_Data,
@@ -79,23 +81,36 @@ private
(Key_Type => Graph_Component_Access,
Element_Type => Eval_Data);
- type Managed_Map is new Ada.Finalization.Controlled with record
- Actual : Eval_Maps.Map;
- end record;
- overriding procedure Finalize
- (This : in out Managed_Map);
+ subtype Short_Positive is Short_Integer range 1 .. Short_Integer'Last;
+ type Cached_State is record
+ Used : Short_Positive;
+ Data : State_Access;
+ end record;
package State_Vectors is new Ada.Containers.Vectors
(Index_Type => Long_Positive,
- Element_Type => State);
+ Element_Type => Cached_State);
+
+ type Cache_Entry is record
+ Keep : Boolean;
+ Data : State_Vectors.Vector;
+ end record;
package Cache_Maps is new Ada.Containers.Ordered_Maps
(Key_Type => Graph_Component_Access,
- Element_Type => State_Vectors.Vector,
- "=" => State_Vectors."=");
+ Element_Type => Cache_Entry);
+
+
+
+ type Collector_Final_Controller is new Ada.Finalization.Limited_Controlled with null record;
+
+ overriding procedure Finalize
+ (This : in out Collector_Final_Controller);
+
+ Cleanup : Collector_Final_Controller;
end Kompsos.Collector;