25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
+
+
|
-- call. --
------------------------------------------------------------------------------
package Natools.S_Expressions.Lockable is
pragma Pure (Lockable);
type Lock_Stack is private;
pragma Preelaborable_Initialization (Lock_Stack);
type Lock_State is private;
pragma Preelaborable_Initialization (Lock_State);
procedure Push_Level
(Stack : in out Lock_Stack;
Level : in Natural;
State : out Lock_State);
-- Insert Level on top of Stack and return current State
|
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
+
|
is abstract;
-- Undo the effects of previous Lock call, and unwind Object until the
-- end of locked level (unless Finish is False).
type Wrapper (Backend : access S_Expressions.Descriptor'Class)
is new Descriptor with private;
pragma Preelaborable_Initialization (Wrapper);
-- Wrapper layer on top of a non-lockable object, albeit with the
-- performance penalty of an extra layer.
function Current_Event (Object : in Wrapper) return Events.Event;
function Current_Atom (Object : in Wrapper) return Atom;
function Current_Level (Object : in Wrapper) return Natural;
procedure Query_Atom
|