File : s-bitops.ads


   1 ------------------------------------------------------------------------------
   2 --                                                                          --
   3 --                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
   4 --                                                                          --
   5 --                       S Y S T E M . B I T _ O P S                        --
   6 --                                                                          --
   7 --                                 S p e c                                  --
   8 --                                                                          --
   9 --          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
  10 --                                                                          --
  11 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  12 -- terms of the  GNU General Public License as published  by the Free Soft- --
  13 -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
  14 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  15 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
  16 -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
  17 --                                                                          --
  18 --                                                                          --
  19 --                                                                          --
  20 --                                                                          --
  21 --                                                                          --
  22 -- You should have received a copy of the GNU General Public License and    --
  23 -- a copy of the GCC Runtime Library Exception along with this program;     --
  24 -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
  25 -- <http://www.gnu.org/licenses/>.                                          --
  26 --                                                                          --
  27 -- GNAT was originally developed  by the GNAT team at  New York University. --
  28 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
  29 --                                                                          --
  30 ------------------------------------------------------------------------------
  31 
  32 --  Operations on packed bit strings
  33 
  34 pragma Compiler_Unit_Warning;
  35 
  36 with System;
  37 
  38 package System.Bit_Ops is
  39 
  40    --  Note: in all the following routines, the System.Address parameters
  41    --  represent the address of the first byte of an array used to represent
  42    --  a packed array (of type System.Unsigned_Types.Packed_Bytes{1,2,4})
  43    --  The length in bits is passed as a separate parameter. Note that all
  44    --  addresses must be of byte aligned arrays.
  45 
  46    procedure Bit_And
  47      (Left   : System.Address;
  48       Llen   : Natural;
  49       Right  : System.Address;
  50       Rlen   : Natural;
  51       Result : System.Address);
  52    --  Bitwise "and" of given bit string with result being placed in Result.
  53    --  The and operation is allowed to destroy unused bits in the last byte,
  54    --  i.e. to leave them set in an undefined manner. Note that Left, Right
  55    --  and Result always have the same length in bits (Len).
  56 
  57    function Bit_Eq
  58      (Left  : System.Address;
  59       Llen  : Natural;
  60       Right : System.Address;
  61       Rlen  : Natural) return Boolean;
  62    --  Left and Right are the addresses of two bit packed arrays with Llen
  63    --  and Rlen being the respective length in bits. The routine compares the
  64    --  two bit strings for equality, being careful not to include the unused
  65    --  bits in the final byte. Note that the result is always False if Rlen
  66    --  is not equal to Llen.
  67 
  68    procedure Bit_Not
  69      (Opnd   : System.Address;
  70       Len    : Natural;
  71       Result : System.Address);
  72    --  Bitwise "not" of given bit string with result being placed in Result.
  73    --  The not operation is allowed to destroy unused bits in the last byte,
  74    --  i.e. to leave them set in an undefined manner. Note that Result and
  75    --  Opnd always have the same length in bits (Len).
  76 
  77    procedure Bit_Or
  78      (Left   : System.Address;
  79       Llen   : Natural;
  80       Right  : System.Address;
  81       Rlen   : Natural;
  82       Result : System.Address);
  83    --  Bitwise "or" of given bit string with result being placed in Result.
  84    --  The or operation is allowed to destroy unused bits in the last byte,
  85    --  i.e. to leave them set in an undefined manner. Note that Left, Right
  86    --  and Result always have the same length in bits (Len).
  87 
  88    procedure Bit_Xor
  89      (Left   : System.Address;
  90       Llen   : Natural;
  91       Right  : System.Address;
  92       Rlen   : Natural;
  93       Result : System.Address);
  94    --  Bitwise "xor" of given bit string with result being placed in Result.
  95    --  The xor operation is allowed to destroy unused bits in the last byte,
  96    --  i.e. to leave them set in an undefined manner. Note that Left, Right
  97    --  and Result always have the same length in bits (Len).
  98 
  99 end System.Bit_Ops;