Ada Programming/Attributes/'Size

Description
R'Size is a representation attribute used to get the number of bits of an object or type:
 * When applied to an object, 'Size yields the actual number of bits allocated to store the object.
 * When applied to a subtype, 'Size yields the smallest n such that all values fit in the range 0 .. 2n-1 for only positive values, else -2n-1 .. 2n-1-1.

The 'Size attribute may also be used in an attribute definition clause to set the size for a first subtype. In special cases, it is even possible to force a biased representation by using a smaller value than the n above.

Examples
This subtype allows a biased representation with only three bits because it comprises only eight values:

T  1000 .. 1007;   T'Size  3;

Without the size clause, T'Size would return 10 because 210-1 = 1023.

; Attributes_Size T_IO Ada.Text_IO; I_IO   Ada.Text_IO.Integer_IO (Integer); A_Boolean : Boolean := True; T_IO.Put ("Size of Boolean type  = "); I_IO.Put (Boolean'Size); T_IO.New_Line; T_IO.Put ("Size of Boolean Object = "); I_IO.Put (A_Boolean'Size); T_IO.New_Line; Attributes_Size;

The output with GNAT 10.2.0 will be:

Size of Boolean type  =           1 Size of Boolean Object =          8

Try it yourself and see how your compiler does.

The value of Size can also be specified using an attribute definition clause. For example, the following declarations specify a C99 compatible bool:

Bool  Boolean; Bool'Size .int'Size;

Wikibook

 * Ada Programming
 * Ada Programming/Attributes
 * Ada Programming/Attributes/'Component Size
 * Ada Programming/Attributes/'Max Size In Storage Elements
 * Ada Programming/Attributes/'Value Size (implementation defined)
 * Ada Programming/Attributes/'Object Size (implementation defined)

Ada 2012 Reference Manual


|Size Size