︙ | | |
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
+
|
-- see Natools.S_Expressions.Holders. --
------------------------------------------------------------------------------
with System.Storage_Pools;
with Natools.S_Expressions.Lockable;
with Natools.S_Expressions.Printers;
with Natools.S_Expressions.Replayable;
private with Ada.Finalization;
private with Ada.Unchecked_Deallocation;
private with Natools.References;
generic
Atom_Pool : in out System.Storage_Pools.Root_Storage_Pool'Class;
|
︙ | | |
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
-
+
+
|
(Output : in out Reference; Data : in Atom);
overriding procedure Close_List (Output : in out Reference);
function Duplicate (Cache : Reference) return Reference;
-- Create a new copy of the S-expression held in Cache and return it
type Cursor is new Lockable.Descriptor with private;
type Cursor is new Lockable.Descriptor and Replayable.Descriptor
with private;
pragma Preelaborable_Initialization (Cursor);
overriding function Current_Event (Object : in Cursor) return Events.Event;
overriding function Current_Atom (Object : in Cursor) return Atom;
overriding function Current_Level (Object : in Cursor) return Natural;
overriding procedure Query_Atom
(Object : in Cursor;
|
︙ | | |
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
+
+
|
overriding procedure Lock
(Object : in out Cursor;
State : out Lockable.Lock_State);
overriding procedure Unlock
(Object : in out Cursor;
State : in out Lockable.Lock_State;
Finish : in Boolean := True);
overriding function Duplicate (Object : Cursor) return Cursor;
function First (Cache : Reference'Class) return Cursor;
-- Create a new Cursor pointing at the beginning of Cache
private
type Atom_Access is access Atom;
|
︙ | | |
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
-
+
|
type Reference is new Printers.Printer with record
Exp : Trees.Reference;
end record;
type Cursor is new Lockable.Descriptor with record
type Cursor is new Lockable.Descriptor and Replayable.Descriptor with record
Exp : Trees.Reference;
Position : Node_Access := null;
Opening : Boolean := False;
Stack : Lockable.Lock_Stack;
Locked : Boolean := False;
end record;
function Absolute_Level (Object : Cursor) return Natural;
end Natools.S_Expressions.Generic_Caches;
|