1 ------------------------------------------------------------------------------
3 -- GNU ADA RUNTIME LIBRARY (GNARL) COMPONENTS --
5 -- S Y S T E M . B I T _ O P S --
11 -- Copyright (C) 1992-1999, Free Software Foundation, Inc. --
13 -- GNAT is free software; you can redistribute it and/or modify it under --
14 -- terms of the GNU General Public License as published by the Free Soft- --
15 -- ware Foundation; either version 2, or (at your option) any later ver- --
16 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
17 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
18 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
19 -- for more details. You should have received a copy of the GNU General --
20 -- Public License distributed with GNAT; see file COPYING. If not, write --
21 -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
22 -- MA 02111-1307, USA. --
24 -- As a special exception, if other files instantiate generics from this --
25 -- unit, or you link this unit with other files to produce an executable, --
26 -- this unit does not by itself cause the resulting executable to be --
27 -- covered by the GNU General Public License. This exception does not --
28 -- however invalidate any other reasons why the executable file might be --
29 -- covered by the GNU Public License. --
31 -- GNAT was originally developed by the GNAT team at New York University. --
32 -- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
34 ------------------------------------------------------------------------------
36 -- Operations on packed bit strings
40 package System.Bit_Ops is
42 -- Note: in all the following routines, the System.Address parameters
43 -- represent the address of the first byte of an array used to represent
44 -- a packed array (of type System.Unsigned_Types.Packed_Bytes{1,2,4})
45 -- The length in bits is passed as a separate parameter.
48 (Left : System.Address;
52 Result : System.Address);
53 -- Bitwise "and" of given bit string with result being placed in Result.
54 -- The or operation is allowed to destroy unused bits in the last byte,
55 -- i.e. to leave them set in an undefined manner. Note that Left, Right
56 -- and Result always have the same length in bits (Len).
59 (Left : System.Address;
61 Right : System.Address;
64 -- Left and Right are the addresses of two bit packed arrays with Llen
65 -- and Rlen being the respective length in bits. The routine compares the
66 -- two bit strings for equality, being careful not to include the unused
67 -- bits in the final byte. Note that the result is always False if Rlen
68 -- is not equal to Llen.
71 (Opnd : System.Address;
73 Result : System.Address);
74 -- Bitwise "not" of given bit string with result being placed in Result.
75 -- The not operation is allowed to destroy unused bits in the last byte,
76 -- i.e. to leave them set in an undefined manner. Note that Result and
77 -- Opnd always have the same length in bits (Len).
80 (Left : System.Address;
84 Result : System.Address);
85 -- Bitwise "or" of given bit string with result being placed in Result.
86 -- The or operation is allowed to destroy unused bits in the last byte,
87 -- i.e. to leave them set in an undefined manner. Note that Left, Right
88 -- and Result always have the same length in bits (Len).
91 (Left : System.Address;
95 Result : System.Address);
96 -- Bitwise "xor" of given bit string with result being placed in Result.
97 -- The or operation is allowed to destroy unused bits in the last byte,
98 -- i.e. to leave them set in an undefined manner. Note that Left, Right
99 -- and Result always have the same length in bits (Len).