Commit | Line | Data |
---|---|---|
daffc668 NB |
1 | package body Types.Builtins is |
2 | ||
8185fe14 | 3 | function Builtin (Item : in Instance) return Builtin_Ptr |
5a07bb53 | 4 | is (Item.F_Builtin); |
daffc668 | 5 | |
5a07bb53 | 6 | procedure Keep_References (Object : in out Instance) is |
00c3a3c3 | 7 | begin |
8185fe14 | 8 | Keep (Object.F_Meta); |
5a07bb53 | 9 | end Keep_References; |
00c3a3c3 | 10 | |
8185fe14 | 11 | function Meta (Item : in Instance) return T |
5a07bb53 | 12 | is (Item.F_Meta); |
daffc668 | 13 | |
8185fe14 NB |
14 | function With_Meta (Builtin : in Builtin_Ptr; |
15 | Metadata : in T) return T | |
5a07bb53 | 16 | is |
8185fe14 NB |
17 | -- Builtin is not null and requires an immediate initialization. |
18 | Ref : constant Builtin_With_Meta_Ptr | |
5a07bb53 NB |
19 | := new Instance'(Garbage_Collected.Instance with |
20 | F_Builtin => Builtin, | |
21 | F_Meta => Metadata); | |
00c3a3c3 | 22 | begin |
5a07bb53 NB |
23 | Garbage_Collected.Register (Garbage_Collected.Pointer (Ref)); |
24 | return (Kind_Builtin_With_Meta, Ref); | |
00c3a3c3 | 25 | end With_Meta; |
daffc668 | 26 | |
8185fe14 NB |
27 | function With_Meta (Builtin : in Instance; |
28 | Metadata : in T) return T | |
29 | is (With_Meta (Builtin.F_Builtin, Metadata)); | |
daffc668 NB |
30 | |
31 | end Types.Builtins; |