with Ada.Integer_Text_IO;
with Ada.Text_IO;
with Ada.Unchecked_Conversion;
with Interfaces;
 
procedure Main_Test is
 
   use Interfaces;
   use Ada.Text_IO;
   use Ada.Integer_Text_IO;
 
   function One_Bit (Index : Natural) return Unsigned_32 is (Shift_Left (1, Index));
 
   type Bit_Array_32_Index is range 0 .. 31;
   type Bit_Array_17_Index is range 0 .. 16;
   type Bit_Array_32 is array (Bit_Array_32_Index) of Boolean with Component_Size => 1, Size => 32;
   type Bit_Array_17 is array (Bit_Array_17_Index) of Boolean with Component_Size => 1, Size => 17;
 
   -- For every new array type instantiate a convert function.
   function Convert is new Ada.Unchecked_Conversion (Unsigned_32, Bit_Array_32);
   function Convert is new Ada.Unchecked_Conversion (Unsigned_32, Bit_Array_17);
 
   B32 : Bit_Array_32 with Volatile;
   B17 : Bit_Array_17 with Volatile;
 
begin
 
   B17 := Convert (One_Bit (2)) or Convert (One_Bit (5));
   B32 := Convert (One_Bit (2) or One_Bit (5));
 
   for E of B17 loop
      Put (Boolean'Pos (E), 1);
   end loop;
 
   New_Line;
 
   for E of B32 loop
      Put (Boolean'Pos (E), 1);
   end loop;
 
end;
				d2l0aCBBZGEuSW50ZWdlcl9UZXh0X0lPOwp3aXRoIEFkYS5UZXh0X0lPOwp3aXRoIEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbjsKd2l0aCBJbnRlcmZhY2VzOwoKcHJvY2VkdXJlIE1haW5fVGVzdCBpcwoKICAgdXNlIEludGVyZmFjZXM7CiAgIHVzZSBBZGEuVGV4dF9JTzsKICAgdXNlIEFkYS5JbnRlZ2VyX1RleHRfSU87CgogICBmdW5jdGlvbiBPbmVfQml0IChJbmRleCA6IE5hdHVyYWwpIHJldHVybiBVbnNpZ25lZF8zMiBpcyAoU2hpZnRfTGVmdCAoMSwgSW5kZXgpKTsKCiAgIHR5cGUgQml0X0FycmF5XzMyX0luZGV4IGlzIHJhbmdlIDAgLi4gMzE7CiAgIHR5cGUgQml0X0FycmF5XzE3X0luZGV4IGlzIHJhbmdlIDAgLi4gMTY7CiAgIHR5cGUgQml0X0FycmF5XzMyIGlzIGFycmF5IChCaXRfQXJyYXlfMzJfSW5kZXgpIG9mIEJvb2xlYW4gd2l0aCBDb21wb25lbnRfU2l6ZSA9PiAxLCBTaXplID0+IDMyOwogICB0eXBlIEJpdF9BcnJheV8xNyBpcyBhcnJheSAoQml0X0FycmF5XzE3X0luZGV4KSBvZiBCb29sZWFuIHdpdGggQ29tcG9uZW50X1NpemUgPT4gMSwgU2l6ZSA9PiAxNzsKCiAgIC0tIEZvciBldmVyeSBuZXcgYXJyYXkgdHlwZSBpbnN0YW50aWF0ZSBhIGNvbnZlcnQgZnVuY3Rpb24uCiAgIGZ1bmN0aW9uIENvbnZlcnQgaXMgbmV3IEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbiAoVW5zaWduZWRfMzIsIEJpdF9BcnJheV8zMik7CiAgIGZ1bmN0aW9uIENvbnZlcnQgaXMgbmV3IEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbiAoVW5zaWduZWRfMzIsIEJpdF9BcnJheV8xNyk7CgogICBCMzIgOiBCaXRfQXJyYXlfMzIgd2l0aCBWb2xhdGlsZTsKICAgQjE3IDogQml0X0FycmF5XzE3IHdpdGggVm9sYXRpbGU7CgpiZWdpbgoKICAgQjE3IDo9IENvbnZlcnQgKE9uZV9CaXQgKDIpKSBvciBDb252ZXJ0IChPbmVfQml0ICg1KSk7CiAgIEIzMiA6PSBDb252ZXJ0IChPbmVfQml0ICgyKSBvciBPbmVfQml0ICg1KSk7CgogICBmb3IgRSBvZiBCMTcgbG9vcAogICAgICBQdXQgKEJvb2xlYW4nUG9zIChFKSwgMSk7CiAgIGVuZCBsb29wOwoKICAgTmV3X0xpbmU7CgogICBmb3IgRSBvZiBCMzIgbG9vcAogICAgICBQdXQgKEJvb2xlYW4nUG9zIChFKSwgMSk7CiAgIGVuZCBsb29wOwoKZW5kOw==