.. role:: switch(samp)
+.. role:: ada(code)
+ :language: ada
+
.. _Representation_Clauses_and_Pragmas:
**********************************
To get a feel for the difference, consider the following examples (note
that in each case the base is ``Short_Short_Integer`` with a size of 8):
-+---------------------------------------------+-------------+-------------+
-|Type or subtype declaration | Object_Size | Value_Size|
-+=============================================+=============+=============+
-|``type x1 is range 0 .. 5;`` | 8 | 3 |
-+---------------------------------------------+-------------+-------------+
-|``type x2 is range 0 .. 5;`` | 16 | 12 |
-|``for x2'size use 12;`` | | |
-+---------------------------------------------+-------------+-------------+
-|``subtype x3 is x2 range 0 .. 3;`` | 16 | 2 |
-+---------------------------------------------+-------------+-------------+
-|``subtype x4 is x2'base range 0 .. 10;`` | 8 | 4 |
-+---------------------------------------------+-------------+-------------+
-|``dynamic : x2'Base range -64 .. +63;`` | | |
-+---------------------------------------------+-------------+-------------+
-|``subtype x5 is x2 range 0 .. dynamic;`` | 16 | 3* |
-+---------------------------------------------+-------------+-------------+
-|``subtype x6 is x2'base range 0 .. dynamic;``| 8 | 7* |
-+---------------------------------------------+-------------+-------------+
++------------------------------------------------+-------------+-------------+
+|Type or subtype declaration | Object_Size | Value_Size|
++================================================+=============+=============+
+|:ada:`type X1 is range 0 .. 5;` | 8 | 3 |
++------------------------------------------------+-------------+-------------+
+|:ada:`type X2 is range 0 .. 5; | 16 | 12 |
+|for X2'Size use 12;` | | |
++------------------------------------------------+-------------+-------------+
+|:ada:`subtype X3 is X2 range 0 .. 3;` | 16 | 2 |
++------------------------------------------------+-------------+-------------+
+|:ada:`subtype X4 is X2'Base range 0 .. 10;` | 8 | 4 |
++------------------------------------------------+-------------+-------------+
+|:ada:`Dynamic : X2'Base range -64 .. +63;` | | |
++------------------------------------------------+-------------+-------------+
+|:ada:`subtype X5 is X2 range 0 .. Dynamic;` | 16 | 3* |
++------------------------------------------------+-------------+-------------+
+|:ada:`subtype X6 is X2'Base range 0 .. Dynamic;`| 8 | 7* |
++------------------------------------------------+-------------+-------------+
Note: the entries marked '*' are not actually specified by the Ada
Reference Manual, which has nothing to say about size in the dynamic
@copying
@quotation
-GNAT Reference Manual , Nov 18, 2025
+GNAT Reference Manual , Dec 05, 2025
AdaCore
that in each case the base is @code{Short_Short_Integer} with a size of 8):
-@multitable {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxx}
+@multitable {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxx}
@headitem
Type or subtype declaration
@item
-@code{type x1 is range 0 .. 5;}
+@code{type X1 is range 0 .. 5;}
@tab
@item
-@code{type x2 is range 0 .. 5;}
-@code{for x2'size use 12;}
+@code{type X2 is range 0 .. 5;
+for X2'Size use 12;}
@tab
@item
-@code{subtype x3 is x2 range 0 .. 3;}
+@code{subtype X3 is X2 range 0 .. 3;}
@tab
@item
-@code{subtype x4 is x2'base range 0 .. 10;}
+@code{subtype X4 is X2'Base range 0 .. 10;}
@tab
@item
-@code{dynamic : x2'Base range -64 .. +63;}
+@code{Dynamic : X2'Base range -64 .. +63;}
@tab
@item
-@code{subtype x5 is x2 range 0 .. dynamic;}
+@code{subtype X5 is X2 range 0 .. Dynamic;}
@tab
@item
-@code{subtype x6 is x2'base range 0 .. dynamic;}
+@code{subtype X6 is X2'Base range 0 .. Dynamic;}
@tab