Ada Programming/Libraries/Standard/GNAT

       package Standard is
       pragma Pure(Standard);
       
         type Boolean is (False, True);
       
         type Integer is range -(2 ** 31) .. +(2 ** 31 - 1);
       
         subtype Natural  is Integer range 0 .. +(2 ** 31 - 1);
         subtype Positive is Integer range 1 .. +(2 ** 31 - 1);
       
         type Short_Short_Integer is range -(2 ** 7) .. +(2 ** 7 - 1);
         type Short_Integer       is range -(2 ** 15) .. +(2 ** 15 - 1);
         type Long_Integer        is range -(2 ** 31) .. +(2 ** 31 - 1);
         type Long_Long_Integer   is range -(2 ** 63) .. +(2 ** 63 - 1);
       
         type Short_Float     is digits 6
           range -16#0.FFFF_FF#E+32 .. 16#0.FFFF_FF#E+32;
           --    -3.40282E+38 ..  3.40282E+38
       
         type Float           is digits 6
           range -16#0.FFFF_FF#E+32 .. 16#0.FFFF_FF#E+32;
           --    -3.40282E+38 ..  3.40282E+38
       
         type Long_Float      is digits 15
           range -16#0.FFFF_FFFF_FFFF_F8#E+256 .. 16#0.FFFF_FFFF_FFFF_F8#E+256;
           --    -1.79769313486232E+308 ..  1.79769313486232E+308
       
         type Long_Long_Float is digits 18
           range -16#0.FFFF_FFFF_FFFF_FFFF#E+4096 .. 16#0.FFFF_FFFF_FFFF_FFFF#E+4096;
           --    -1.18973149535723177E+4932 ..  1.18973149535723177E+4932
       
         --  function "*" (Left : root_integer; Right : root_real)
         --    return root_real;
       
         --  function "*" (Left : root_real;    Right : root_integer)
         --    return root_real;
       
         --  function "/" (Left : root_real;    Right : root_integer)
         --    return root_real;
       
         --  function "*" (Left : universal_fixed; Right : universal_fixed)
         --    return universal_fixed;
       
         --  function "/" (Left : universal_fixed; Right : universal_fixed)
         --    return universal_fixed;
       
         --  The declaration of type Character is based on the standard
         --  ISO 8859-1 character set.
       
         --  There are no character literals corresponding to the positions
         --  for control characters. They are indicated by lower case
         --  identifiers in the following list.
       
         --  Note: this type cannot be represented accurately in Ada
       
         --  type Character is
       
         --    (nul,  soh,  stx,  etx,     eot,  enq,  ack,  bel,
         --     bs,   ht,   lf,   vt,      ff,   cr,   so,   si,
       
         --     dle,  dc1,  dc2,  dc3,     dc4,  nak,  syn,  etb,
         --     can,  em,   sub,  esc,     fs,   gs,   rs,   us,
       
         --     ' ',  '!',  '"', '#',     '$',  '%',  '&',  ''',
         --     '(',  ')',  '*',  '+',     ',',  '-',  '.',  '/',
       
         --     '0',  '1',  '2',  '3',     '4',  '5',  '6',  '7',
         --     '8',  '9',  ':',  ';',     '<',  '=',  '>',  '?',
       
         --     '@',  'A',  'B',  'C',     'D',  'E',  'F',  'G',
         --     'H',  'I',  'J',  'K',     'L',  'M',  'N',  'O',
       
         --     'P',  'Q',  'R',  'S',     'T',  'U',  'V',  'W',
         --     'X',  'Y',  'Z',  '[',     '\',  ']',  '^',  '_',
       
         --     '`',  'a',  'b',  'c',     'd',  'e',  'f',  'g',
         --     'h',  'i',  'j',  'k',     'l',  'm',  'n',  'o',
       
         --     'p',  'q',  'r',  's',     't',  'u',  'v',  'w',
         --     'x',  'y',  'z',  '{',     '|',  '}',  '~',  del,
       
         --     reserved_128,     reserved_129,  bph,  nbh,
         --     reserved_132,     nel,     ssa,  esa,
       
         --     hts,  htj,  vts,  pld,     plu,  ri,   ss2,  ss3,
       
         --     dcs,  pu1,  pu2,  sts,     cch,  mw,   spa,  epa,
       
         --     sos, reserved_153, sci, csi,
         --     st,   osc,  pm,   apc,
       
         --   ... );
       
         --  The declaration of type Wide_Character is based on the standard
         --  ISO 10646 BMP character set.
       
         --  Note: this type cannot be represented accurately in Ada
       
         --  The first 256 positions have the same contents as type Character
       
         --  type Wide_Character is (nul, soh ... FFFE, FFFF);
       
         package ASCII is
       
            --  Control characters:
       
            NUL   : constant Character := Character'Val (16#00#);
            SOH   : constant Character := Character'Val (16#01#);
            STX   : constant Character := Character'Val (16#02#);
            ETX   : constant Character := Character'Val (16#03#);
            EOT   : constant Character := Character'Val (16#04#);
            ENQ   : constant Character := Character'Val (16#05#);
            ACK   : constant Character := Character'Val (16#06#);
            BEL   : constant Character := Character'Val (16#07#);
            BS    : constant Character := Character'Val (16#08#);
            HT    : constant Character := Character'Val (16#09#);
            LF    : constant Character := Character'Val (16#0A#);
            VT    : constant Character := Character'Val (16#0B#);
            FF    : constant Character := Character'Val (16#0C#);
            CR    : constant Character := Character'Val (16#0D#);
            SO    : constant Character := Character'Val (16#0E#);
            SI    : constant Character := Character'Val (16#0F#);
            DLE   : constant Character := Character'Val (16#10#);
            DC1   : constant Character := Character'Val (16#11#);
            DC2   : constant Character := Character'Val (16#12#);
            DC3   : constant Character := Character'Val (16#13#);
            DC4   : constant Character := Character'Val (16#14#);
            NAK   : constant Character := Character'Val (16#15#);
            SYN   : constant Character := Character'Val (16#16#);
            ETB   : constant Character := Character'Val (16#17#);
            CAN   : constant Character := Character'Val (16#18#);
            EM    : constant Character := Character'Val (16#19#);
            SUB   : constant Character := Character'Val (16#1A#);
            ESC   : constant Character := Character'Val (16#1B#);
            FS    : constant Character := Character'Val (16#1C#);
            GS    : constant Character := Character'Val (16#1D#);
            RS    : constant Character := Character'Val (16#1E#);
            US    : constant Character := Character'Val (16#1F#);
            DEL   : constant Character := Character'Val (16#7F#);
       
            -- Other characters:
       
            Exclam     : constant Character := '!';
            Quotation  : constant Character := '"'; --" Ignore this comment! It just fixes a highlighting bug
            Sharp      : constant Character := '#';
            Dollar     : constant Character := '$';
            Percent    : constant Character := '%';
            Ampersand  : constant Character := '&';
            Colon      : constant Character := ':';
            Semicolon  : constant Character := ';';
            Query      : constant Character := '?';
            At_Sign    : constant Character := '@';
            L_Bracket  : constant Character := '[';
            Back_Slash : constant Character := '\';
            R_Bracket  : constant Character := ']';
            Circumflex : constant Character := '^';
            Underline  : constant Character := '_';
            Grave      : constant Character := '`';
            L_Brace    : constant Character := '{';
            Bar        : constant Character := '|';
            R_Brace    : constant Character := '}';
            Tilde      : constant Character := '~';
       
            -- Lower case letters:
       
            LC_A : constant Character := 'a';
            LC_B : constant Character := 'b';
            LC_C : constant Character := 'c';
            LC_D : constant Character := 'd';
            LC_E : constant Character := 'e';
            LC_F : constant Character := 'f';
            LC_G : constant Character := 'g';
            LC_H : constant Character := 'h';
            LC_I : constant Character := 'i';
            LC_J : constant Character := 'j';
            LC_K : constant Character := 'k';
            LC_L : constant Character := 'l';
            LC_M : constant Character := 'm';
            LC_N : constant Character := 'n';
            LC_O : constant Character := 'o';
            LC_P : constant Character := 'p';
            LC_Q : constant Character := 'q';
            LC_R : constant Character := 'r';
            LC_S : constant Character := 's';
            LC_T : constant Character := 't';
            LC_U : constant Character := 'u';
            LC_V : constant Character := 'v';
            LC_W : constant Character := 'w';
            LC_X : constant Character := 'x';
            LC_Y : constant Character := 'y';
            LC_Z : constant Character := 'z';
       
         end ASCII;
       
         type String is array (Positive range <>) of Character;
         pragma Pack (String);
       
         type Wide_String is array (Positive range <>) of Wide_Character;
         pragma Pack (Wide_String);
       
         type Duration is delta 0.000000001
           range -((2 ** 63 - 1) * 0.000000001) ..
                 +((2 ** 63 - 1) * 0.000000001);
         for Duration'Small use 0.000000001;
       
         Constraint_Error : exception;
         Program_Error    : exception;
         Storage_Error    : exception;
         Tasking_Error    : exception;
       
       end Standard;
      
      Last modified on 13 January 2008, at 19:07