Ada Programming/Attributes/'Simple Storage Pool
Description
edit
For every nonformal, nonderived access-to-object type Acc
, the representation attribute Simple_Storage_Pool
may be specified via an attribute_definition_clause (or by specifying the equivalent aspect):
My_Pool : My_Simple_Storage_Pool_Type;
type Acc is access My_Data_Type;
for Acc'Simple_Storage_Pool use My_Pool;
The name given in an attribute_definition_clause for the Simple_Storage_Pool
attribute shall denote a variable of a ‘simple storage pool type’ (see pragma ).
The use of this attribute is only allowed for a prefix denoting a type for which it has been specified. The type of the attribute is the type of the variable specified as the simple storage pool of the access type, and the attribute denotes that variable.
It is illegal to specify both Storage_Pool
and Simple_Storage_Pool
for the same access type.
If the Simple_Storage_Pool
attribute has been specified for an access type, then applying the Storage_Pool
attribute to the type is flagged with a warning and its evaluation raises the exception Program_Error
.
If the Simple_Storage_Pool attribute has been specified for an access type S
, then the evaluation of the attribute S'Storage_Size
returns the result of calling Storage_Size (S'Simple_Storage_Pool)
, which is intended to indicate the number of storage elements reserved for the simple storage pool. If the Storage_Size function has not been defined for the simple storage pool type, then this attribute returns zero.
If an access type S
has a specified simple storage pool of type SSP
, then the evaluation of an allocator for that access type calls the primitive Allocate
procedure for type SSP
, passing S'Simple_Storage_Pool
as the pool parameter. The detailed semantics of such allocators is the same as those defined for allocators in section 13.11 of the , with the term simple storage pool substituted for storage pool.
If an access type S
has a specified simple storage pool of type SSP
, then a call to an instance of the Ada.Unchecked_Deallocation
for that access type invokes the primitive Deallocate
procedure for type SSP
, passing S'Simple_Storage_Pool
as the pool parameter. The detailed semantics of such unchecked deallocations is the same as defined in section 13.11.2 of the Ada Reference Manual, except that the term simple storage pool is substituted for storage pool.