-------------------------------------------------------------------------------
-- (C) Altran Praxis Limited
-------------------------------------------------------------------------------
--
-- The SPARK toolset is free software; you can redistribute it and/or modify it
-- under terms of the GNU General Public License as published by the Free
-- Software Foundation; either version 3, or (at your option) any later
-- version. The SPARK toolset is distributed in the hope that it will be
-- useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-- Public License for more details. You should have received a copy of the GNU
-- General Public License distributed with the SPARK toolset; see file
-- COPYING3. If not, go to http://www.gnu.org/licenses for a complete copy of
-- the license.
--
--=============================================================================

-------------------------------------------------------------------------------
--                                                                           --
-- Interfaces                                                                --
--                                                                           --
-- Description                                                               --
--   This is a SHADOW specification of the predefined package Interfaces.    --
--   It presents a subset of the facilities of the standard Ada package,     --
--   but is SPARK compatible.                                                --
--                                                                           --
-- Language                                                                  --
--   Specification : SPARK                                                   --
--   Private Part  : N/A                                                     --
--   Body          : N/A                                                     --
--                                                                           --
-- Runtime Requirements and Dependencies                                     --
--   No Ada Runtime                                                          --
--                                                                           --
-- Verification                                                              --
--   N/A                                                                     --
--                                                                           --
-- Exceptions                                                                --
--   None                                                                    --
--                                                                           --
-------------------------------------------------------------------------------

package Interfaces
is

   type Integer_8  is range -2 **  7 .. 2 **  7 - 1;
   for Integer_8'Size use 8;

   type Integer_16 is range -2 ** 15 .. 2 ** 15 - 1;
   for Integer_16'Size use 16;

   type Integer_32 is range -2 ** 31 .. 2 ** 31 - 1;
   for Integer_32'Size use 32;

   type Integer_64 is range -2 ** 63 .. 2 ** 63 - 1;
   for Integer_64'Size use 64;

   type Unsigned_8  is mod 2**8;
   for Unsigned_8'Size use 8;

   type Unsigned_16 is mod 2**16;
   for Unsigned_16'Size use 16;

   type Unsigned_32 is mod 2**32;
   for Unsigned_32'Size use 32;

   type Unsigned_64 is mod 2**64;
   for Unsigned_64'Size use 64;

   -------------------------------------------------------------------------
   -- For SPARK, the various Shift_ and Rotate_ functions are declared in
   -- a distinct package SPARK.Unsigned.  These offer a SPARK-friendly
   -- non-overloaded view of these functions, but having the efficiency
   -- of the Intrinsic operations supplied by most Ada compilers.
   -------------------------------------------------------------------------

end Interfaces;
