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
|
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
|
+
+
|
Counter_Pool : in out System.Storage_Pools.Root_Storage_Pool'Class;
Structure_Pool : in out System.Storage_Pools.Root_Storage_Pool'Class;
package Natools.S_Expressions.Generic_Caches is
pragma Preelaborate (Generic_Caches);
type Reference is new Printers.Printer with private;
pragma Preelaborable_Initialization (Reference);
overriding procedure Open_List (Output : in out Reference);
overriding procedure Append_Atom
(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;
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;
Process : not null access procedure (Data : in Atom));
|
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
-
+
|
type Reference is new Printers.Printer with record
Exp : Trees.Reference;
end record;
type Cursor is new Lockable.Descriptor with record
Exp : Trees.Reference := Trees.Null_Reference;
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;
|