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==