Differences From Artifact [3cec4789c7]:
- File
src/natools-references__protected.ads
— part of check-in
[610b834d9d]
at
2014-08-24 20:31:35
on branch trunk
— references: add Is_Last primitive
It's almost a break in abstraction, and it's unsafe to use when the reference can be accessed concurrently. However it might have some use in some context, to free the last reference when checked in a protected or thread-local context, to build a crude garbage collection system. (user: nat, size: 6074) [annotate] [blame] [check-ins using]
To Artifact [d99e38b57b]:
- File src/natools-references__protected.ads — part of check-in [3a18c0edc9] at 2014-11-26 20:13:24 on branch trunk — references: add Implicit_Dereference aspects (user: nat, size: 6142) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
31 32 33 34 35 36 37 | Counter_Pool : in out System.Storage_Pools.Root_Storage_Pool'Class; Data_Pool : in out System.Storage_Pools.Root_Storage_Pool'Class; package Natools.References is pragma Preelaborate (References); type Accessor (Data : not null access constant Held_Data) is | | | | 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | Counter_Pool : in out System.Storage_Pools.Root_Storage_Pool'Class; Data_Pool : in out System.Storage_Pools.Root_Storage_Pool'Class; package Natools.References is pragma Preelaborate (References); type Accessor (Data : not null access constant Held_Data) is limited private with Implicit_Dereference => Data; type Mutator (Data : not null access Held_Data) is limited private with Implicit_Dereference => Data; type Data_Access is access Held_Data; for Data_Access'Storage_Pool use Data_Pool; type Immutable_Reference is new Ada.Finalization.Controlled with private; pragma Preelaborable_Initialization (Immutable_Reference); |
︙ | ︙ |