diff options
Diffstat (limited to 'src/kompsos.ads')
| -rw-r--r-- | src/kompsos.ads | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/src/kompsos.ads b/src/kompsos.ads index 5a6af5f..cf4ba31 100644 --- a/src/kompsos.ads +++ b/src/kompsos.ads @@ -465,27 +465,25 @@ private - type World_Access is access World'Class; + type World_Root is abstract tagged null record; - type World_Holder is new Ada.Finalization.Controlled with record - Ptr : World_Access; - end record; - - overriding procedure Initialize - (This : in out World_Holder); - - overriding procedure Adjust - (This : in out World_Holder); + package World_Holders is new Ada.Containers.Indefinite_Holders (World_Root'Class); - overriding procedure Finalize - (This : in out World_Holder); + type World_Access is access all World; function Hold - (This : in World'Class) - return World_Holder; + (This : in World) + return World_Holders.Holder + with Inline; + + function Ptr + (This : in out World_Holders.Holder) + return World_Access + with Inline; procedure Swap - (Left, Right : in out World_Holder); + (Left, Right : in out World_Holders.Holder) + with Inline; type Generator_Kind is (No_Gen, @@ -503,30 +501,30 @@ private when No_Gen => null; when Fresh_Gen => - Frs_World : World_Holder; + Frs_World : World_Holders.Holder; Frs_Name : SU.Unbounded_String; when Unify_Gen => - Uni_World : World_Holder; + Uni_World : World_Holders.Holder; Uni_Term1 : Term; Uni_Term2 : Term; when Buffer_Gen => - Buff_World : World_Holder; + Buff_World : World_Holders.Holder; when Disjunct_Gen => - Dis_World1 : World_Holder; - Dis_World2 : World_Holder; + Dis_World1 : World_Holders.Holder; + Dis_World2 : World_Holders.Holder; when Conjunct_Zero_Gen => - ConZ_World : World_Holder; + ConZ_World : World_Holders.Holder; ConZ_Func : Conjunct_Zero_Func; when Conjunct_One_Gen => - ConO_World : World_Holder; + ConO_World : World_Holders.Holder; ConO_Func : Conjunct_One_Func; ConO_Input : Term; when Conjunct_Many_Gen => - ConM_World : World_Holder; + ConM_World : World_Holders.Holder; ConM_Func : Conjunct_Many_Func; ConM_Inputs : Term_Array_Holders.Holder; when Recurse_Gen => - Rec_World : World_Holder; + Rec_World : World_Holders.Holder; Rec_Index : Positive; end case; end record; @@ -535,7 +533,7 @@ private (Index_Type => Positive, Element_Type => State); - type World is tagged record + type World is new World_Root with record Possibles : State_Vectors.Vector; Next_Ident : ID_Number; Engine : Generator; |
