2 pragma Warnings
(Off
, "unit ""Types.Sequences"" is not referenced");
4 pragma Warnings
(On
, "unit ""Types.Sequences"" is not referenced");
6 package body Types
.Fns
is
8 function Apply
(Item
: in Instance
;
9 Args
: in T_Array
) return T
11 Env
: constant Envs
.Ptr
:= Envs
.New_Env
(Outer
=> Item
.F_Env
);
13 Env
.all.Set_Binds
(Binds
=> Item
.F_Params
.all.Data
,
15 return Eval_Cb
.all (Ast
=> Item
.F_Ast
,
19 function Ast
(Item
: in Instance
) return T
22 function Env
(Item
: in Instance
) return Envs
.Ptr
25 procedure Keep_References
(Object
: in out Instance
) is
28 Object
.F_Params
.all.Keep
;
29 Object
.F_Env
.all.Keep
;
33 function Meta
(Item
: in Instance
) return T
36 function New_Function
(Params
: in Sequence_Ptr
;
39 Metadata
: in T
:= Nil
) return T
41 -- Env and Params are not null and require an immediate
44 := new Instance
'(Garbage_Collected.Instance with
50 Garbage_Collected.Register (Garbage_Collected.Pointer (Ref));
51 Err.Check ((for all P of Params.all.Data => P.Kind = Kind_Symbol),
52 "formal parameters must be symbols");
53 return (Kind_Fn, Ref);
56 function Params (Item : in Instance) return Sequence_Ptr