------------------------------------------------------------------------------
--                                                                          --
--                         GNAT RUN-TIME COMPONENTS                         --
--                                                                          --
--               S Y S T E M . D I M . G E N E R I C _ M K S                --
--                                                                          --
--                                  S p e c                                 --
--                                                                          --
--          Copyright (C) 2011-2021, Free Software Foundation, Inc.         --
--                                                                          --
-- GNAT is free software;  you can  redistribute it  and/or modify it under --
-- terms of the  GNU General Public License as published  by the Free Soft- --
-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
--                                                                          --
-- As a special exception under Section 7 of GPL version 3, you are granted --
-- additional permissions described in the GCC Runtime Library Exception,   --
-- version 3.1, as published by the Free Software Foundation.               --
--                                                                          --
-- You should have received a copy of the GNU General Public License and    --
-- a copy of the GCC Runtime Library Exception along with this program;     --
-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
-- <http://www.gnu.org/licenses/>.                                          --
--                                                                          --
-- GNAT was originally developed  by the GNAT team at  New York University. --
-- Extensive contributions were provided by Ada Core Technologies Inc.      --
--                                                                          --
------------------------------------------------------------------------------

--  Defines the MKS dimension system which is the SI system of units

--  Some other prefixes of this system are defined in a child package (see
--  System.Dim.Generic_Mks.Generic_Other_Prefixes) in order to avoid too many
--  constant declarations in this package.

--  The dimension terminology is defined in System.Dim package

with Ada.Numerics;

generic
   type Float_Type is digits <>;

package System.Dim.Generic_Mks is

   e  : constant := Ada.Numerics.e;
   Pi : constant := Ada.Numerics.Pi;

   --  Dimensioned type Mks_Type

   type Mks_Type is new Float_Type
     with
      Dimension_System => (
        (Unit_Name => Meter,    Unit_Symbol => 'm',   Dim_Symbol => 'L'),
        (Unit_Name => Kilogram, Unit_Symbol => "kg",  Dim_Symbol => 'M'),
        (Unit_Name => Second,   Unit_Symbol => 's',   Dim_Symbol => 'T'),
        (Unit_Name => Ampere,   Unit_Symbol => 'A',   Dim_Symbol => 'I'),
        (Unit_Name => Kelvin,   Unit_Symbol => 'K',   Dim_Symbol => '@'),
        (Unit_Name => Mole,     Unit_Symbol => "mol", Dim_Symbol => 'N'),
        (Unit_Name => Candela,  Unit_Symbol => "cd",  Dim_Symbol => 'J'));

   --  SI Base dimensioned subtypes

   subtype Length is Mks_Type
     with
      Dimension => (Symbol => 'm',
        Meter  => 1,
        others => 0);

   subtype Mass is Mks_Type
     with
      Dimension => (Symbol => "kg",
        Kilogram => 1,
        others   => 0);

   subtype Time is Mks_Type
     with
      Dimension => (Symbol => 's',
        Second => 1,
        others => 0);

   subtype Electric_Current is Mks_Type
     with
      Dimension => (Symbol => 'A',
        Ampere => 1,
        others => 0);

   subtype Thermodynamic_Temperature is Mks_Type
     with
      Dimension => (Symbol => 'K',
        Kelvin => 1,
        others => 0);

   subtype Amount_Of_Substance is Mks_Type
     with
      Dimension => (Symbol => "mol",
        Mole   => 1,
        others => 0);

   subtype Luminous_Intensity is Mks_Type
     with
      Dimension => (Symbol => "cd",
        Candela => 1,
        others  => 0);

   --  Initialize SI Base unit values

   --  Turn off the all the dimension warnings for these basic assignments
   --  since otherwise we would get complaints about assigning dimensionless
   --  values to dimensioned subtypes (we can't assign 1.0*m to m).

   pragma Warnings (Off, "*assumed to be*");

   m   : constant Length                    := 1.0;
   kg  : constant Mass                      := 1.0;
   s   : constant Time                      := 1.0;
   A   : constant Electric_Current          := 1.0;
   K   : constant Thermodynamic_Temperature := 1.0;
   mol : constant Amount_Of_Substance       := 1.0;
   cd  : constant Luminous_Intensity        := 1.0;

   pragma Warnings (On, "*assumed to be*");

   --  SI Derived dimensioned subtypes

   subtype Absorbed_Dose is Mks_Type
     with
      Dimension => (Symbol => "Gy",
        Meter  =>  2,
        Second => -2,
        others =>  0);

   subtype Angle is Mks_Type
     with
      Dimension => (Symbol => "rad",
        others => 0);

   subtype Area is Mks_Type
     with
      Dimension => (
        Meter  => 2,
        others => 0);

   subtype Catalytic_Activity is Mks_Type
     with
      Dimension => (Symbol => "kat",
        Second => -1,
        Mole   => 1,
        others => 0);

   subtype Celsius_Temperature is Mks_Type
     with
      Dimension => (Symbol => "°C",
        Kelvin => 1,
        others => 0);

   subtype Electric_Capacitance is Mks_Type
     with
      Dimension => (Symbol => 'F',
        Meter    => -2,
        Kilogram => -1,
        Second   =>  4,
        Ampere   =>  2,
        others   =>  0);

   subtype Electric_Charge is Mks_Type
     with
      Dimension => (Symbol => 'C',
        Second => 1,
        Ampere => 1,
        others => 0);

   subtype Electric_Conductance is Mks_Type
     with
      Dimension => (Symbol => 'S',
        Meter    => -2,
        Kilogram => -1,
        Second   =>  3,
        Ampere   =>  2,
        others   =>  0);

   subtype Electric_Potential_Difference is Mks_Type
     with
      Dimension => (Symbol => 'V',
        Meter    =>  2,
        Kilogram =>  1,
        Second   => -3,
        Ampere   => -1,
        others   =>  0);

   --  Note the type punning below. The Symbol is a single "ohm" character
   --  encoded in UTF-8 (ce a9 in hexadecimal), but this file is not compiled
   --  with -gnatW8, so we're treating the string literal as a two-character
   --  String.

   subtype Electric_Resistance is Mks_Type
     with
      Dimension => (Symbol => "Ω",
        Meter    =>  2,
        Kilogram =>  1,
        Second   => -3,
        Ampere   => -2,
        others   =>  0);

   subtype Energy is Mks_Type
     with
      Dimension => (Symbol => 'J',
        Meter    =>  2,
        Kilogram =>  1,
        Second   => -2,
        others   =>  0);

   subtype Equivalent_Dose is Mks_Type
     with
      Dimension => (Symbol => "Sv",
        Meter  =>  2,
        Second => -2,
        others =>  0);

   subtype Force is Mks_Type
     with
      Dimension => (Symbol => 'N',
        Meter    => 1,
        Kilogram => 1,
        Second   => -2,
        others   => 0);

   subtype Frequency is Mks_Type
     with
      Dimension => (Symbol => "Hz",
        Second => -1,
        others =>  0);

   subtype Illuminance is Mks_Type
     with
      Dimension => (Symbol => "lx",
        Meter   => -2,
        Candela =>  1,
        others  =>  0);

   subtype Inductance is Mks_Type
     with
      Dimension => (Symbol => 'H',
        Meter    =>  2,
        Kilogram =>  1,
        Second   => -2,
        Ampere   => -2,
        others   =>  0);

   subtype Luminous_Flux is Mks_Type
     with
      Dimension => (Symbol => "lm",
        Candela => 1,
        others  => 0);

   subtype Magnetic_Flux is Mks_Type
     with
      Dimension => (Symbol => "Wb",
        Meter    =>  2,
        Kilogram =>  1,
        Second   => -2,
        Ampere   => -1,
        others   =>  0);

   subtype Magnetic_Flux_Density is Mks_Type
     with
      Dimension => (Symbol => 'T',
        Kilogram =>  1,
        Second   => -2,
        Ampere   => -1,
        others   =>  0);

   subtype Power is Mks_Type
     with
      Dimension => (Symbol => 'W',
        Meter    =>  2,
        Kilogram =>  1,
        Second   => -3,
        others   =>  0);

   subtype Pressure is Mks_Type
     with
      Dimension => (Symbol => "Pa",
        Meter    => -1,
        Kilogram =>  1,
        Second   => -2,
        others   =>  0);

   subtype Radioactivity is Mks_Type
     with
      Dimension => (Symbol => "Bq",
        Second => -1,
        others =>  0);

   subtype Solid_Angle is Mks_Type
     with
      Dimension => (Symbol => "sr",
        others => 0);

   subtype Speed is Mks_Type
     with
      Dimension => (
        Meter  =>  1,
        Second => -1,
        others =>  0);

   subtype Volume is Mks_Type
     with
      Dimension => (
        Meter  => 3,
        others => 0);

   --  Initialize derived dimension values

   --  Turn off the all the dimension warnings for these basic assignments
   --  since otherwise we would get complaints about assigning dimensionless
   --  values to dimensioned subtypes.

   pragma Warnings (Off, "*assumed to be*");

   rad : constant Angle                         := 1.0;
   sr  : constant Solid_Angle                   := 1.0;
   Hz  : constant Frequency                     := 1.0;
   N   : constant Force                         := 1.0;
   Pa  : constant Pressure                      := 1.0;
   J   : constant Energy                        := 1.0;
   W   : constant Power                         := 1.0;
   C   : constant Electric_Charge               := 1.0;
   V   : constant Electric_Potential_Difference := 1.0;
   F   : constant Electric_Capacitance          := 1.0;
   Ohm : constant Electric_Resistance           := 1.0;
   Si  : constant Electric_Conductance          := 1.0;
   Wb  : constant Magnetic_Flux                 := 1.0;
   T   : constant Magnetic_Flux_Density         := 1.0;
   H   : constant Inductance                    := 1.0;
   dC  : constant Celsius_Temperature           := 273.15;
   lm  : constant Luminous_Flux                 := 1.0;
   lx  : constant Illuminance                   := 1.0;
   Bq  : constant Radioactivity                 := 1.0;
   Gy  : constant Absorbed_Dose                 := 1.0;
   Sv  : constant Equivalent_Dose               := 1.0;
   kat : constant Catalytic_Activity            := 1.0;

   --  SI prefixes for Meter

   um  : constant Length := 1.0E-06;  -- micro (u)
   mm  : constant Length := 1.0E-03;  -- milli
   cm  : constant Length := 1.0E-02;  -- centi
   dm  : constant Length := 1.0E-01;  -- deci
   dam : constant Length := 1.0E+01;  -- deka
   hm  : constant Length := 1.0E+02;  -- hecto
   km  : constant Length := 1.0E+03;  -- kilo
   Mem : constant Length := 1.0E+06;  -- mega

   --  SI prefixes for Kilogram

   ug  : constant Mass := 1.0E-09;  -- micro (u)
   mg  : constant Mass := 1.0E-06;  -- milli
   cg  : constant Mass := 1.0E-05;  -- centi
   dg  : constant Mass := 1.0E-04;  -- deci
   g   : constant Mass := 1.0E-03;  -- gram
   dag : constant Mass := 1.0E-02;  -- deka
   hg  : constant Mass := 1.0E-01;  -- hecto
   Meg : constant Mass := 1.0E+03;  -- mega

   --  SI prefixes for Second

   us  : constant Time := 1.0E-06;  -- micro (u)
   ms  : constant Time := 1.0E-03;  -- milli
   cs  : constant Time := 1.0E-02;  -- centi
   ds  : constant Time := 1.0E-01;  -- deci
   das : constant Time := 1.0E+01;  -- deka
   hs  : constant Time := 1.0E+02;  -- hecto
   ks  : constant Time := 1.0E+03;  -- kilo
   Mes : constant Time := 1.0E+06;  -- mega

   --  Other constants for Second

   min  : constant Time := 60.0 * s;
   hour : constant Time := 60.0 * min;
   day  : constant Time := 24.0 * hour;
   year : constant Time := 365.25 * day;

   --  SI prefixes for Ampere

   mA  : constant Electric_Current := 1.0E-03;  -- milli
   cA  : constant Electric_Current := 1.0E-02;  -- centi
   dA  : constant Electric_Current := 1.0E-01;  -- deci
   daA : constant Electric_Current := 1.0E+01;  -- deka
   hA  : constant Electric_Current := 1.0E+02;  -- hecto
   kA  : constant Electric_Current := 1.0E+03;  -- kilo
   MeA : constant Electric_Current := 1.0E+06;  -- mega

   pragma Warnings (On, "*assumed to be*");
end System.Dim.Generic_Mks;
