-- These are the Ada sources for the predefined language environment -- and the annexes, extracted from the Ada 95 Reference Manual. -- NOTE: These are not compilable as is, since there are ellipses ("...") -- and "implementation-defined" in various places. -- Copyright (C) 1992,1993,1994,1995 Intermetrics, Inc. -- -- This copyright is assigned to the U.S. Government. All rights reserved. -- -- This document may be copied, in whole or in part, in any form or by any -- means, as is or with alterations, provided that (1) alterations are clearly -- marked as alterations and (2) this copyright notice is included unmodified in -- any copy. Compiled copies of standard library units and examples need not -- contain this copyright notice so long as the notice is included in all copies -- of source code and documentation. -- Here is the overall hierarchy of language-defined library units. -- There are three root library units: Ada, Interfaces, and System; -- other library units are children of these: -- -- Standard -- A.1 -- Ada -- A.2 -- Asynchronous_Task_Control -- D.11 -- Calendar -- 9.6 -- Characters -- A.3.1 -- Handling -- A.3.2 -- Latin_1 -- A.3.3 -- Command_Line -- A.15 -- Decimal -- F.2 -- Direct_IO -- A.8.4 -- Dynamic_Priorities -- D.5 -- Exceptions -- 11.4.1 -- Finalization -- 7.6 -- Interrupts -- C.3.2 -- Names -- C.3.2 -- IO_Exceptions -- A.13 -- Numerics -- A.5 -- Complex_Elementary_Functions -- G.1.2 -- Complex_Types -- G.1.1 -- Discrete_Random -- A.5.2 -- Elementary_Functions -- A.5.1 -- Float_Random -- A.5.2 -- Generic_Complex_Elementary_Functions -- G.1.2 -- Generic_Complex_Types -- G.1.1 -- Generic_Elementary_Functions -- A.5.1 -- Real_Time -- D.8 -- Sequential_IO -- A.8.1 -- Storage_IO -- A.9 -- Streams -- 13.13.1 -- Stream_IO -- A.12.1 -- Strings -- A.4.1 -- Bounded -- A.4.4 -- Fixed -- A.4.3 -- Maps -- A.4.2 -- Constants -- A.4.6 -- Unbounded -- A.4.5 -- Wide_Bounded -- A.4.7 -- Wide_Fixed -- A.4.7 -- Wide_Maps -- A.4.7 -- Wide_Constants -- A.4.7 -- Wide_Unbounded -- A.4.7 -- Standard (...continued) -- Ada (...continued) -- Synchronous_Task_Control -- D.10 -- Tags -- 3.9 -- Task_Attributes -- C.7.2 -- Task_Identification -- C.7.1 -- Text_IO -- A.10.1 -- Complex_IO -- G.1.3 -- Editing -- F.3.3 -- Text_Streams -- A.12.2 -- Unchecked_Conversion -- 13.9 -- Unchecked_Deallocation -- 13.11.2 -- Wide_Text_IO -- A.11 -- Complex_IO -- G.1.3 -- Editing -- F.3.4 -- Text_Streams -- A.12.3 -- -- Interfaces -- B.2 -- C -- B.3 -- Pointers -- B.3.2 -- Strings -- B.3.1 -- COBOL -- B.4 -- Fortran -- B.5 -- -- System -- 13.7 -- Address_To_Access_Conversions -- 13.7.2 -- Machine_Code -- 13.8 -- RPC -- E.5 -- Storage_Elements -- 13.7.1 -- Storage_Pools -- 13.11 package Standard is pragma Pure(Standard); type Boolean is (False, True); -- The predefined relational operators for this type are as follows: -- function "=" (Left, Right : Boolean) return Boolean; -- function "/=" (Left, Right : Boolean) return Boolean; -- function "<" (Left, Right : Boolean) return Boolean; -- function "<=" (Left, Right : Boolean) return Boolean; -- function ">" (Left, Right : Boolean) return Boolean; -- function ">=" (Left, Right : Boolean) return Boolean; -- The predefined logical operators and the predefined logical -- negation operator are as follows: -- function "and" (Left, Right : Boolean) return Boolean; -- function "or" (Left, Right : Boolean) return Boolean; -- function "xor" (Left, Right : Boolean) return Boolean; -- function "not" (Right : Boolean) return Boolean; -- The integer type root_integer is predefined. -- The corresponding universal type is universal_integer. type Integer is range implementation-defined; subtype Natural is Integer range 0 .. Integer'Last; subtype Positive is Integer range 1 .. Integer'Last; -- The predefined operators for type Integer are as follows: -- function "=" (Left, Right : Integer'Base) return Boolean; -- function "/=" (Left, Right : Integer'Base) return Boolean; -- function "<" (Left, Right : Integer'Base) return Boolean; -- function "<=" (Left, Right : Integer'Base) return Boolean; -- function ">" (Left, Right : Integer'Base) return Boolean; -- function ">=" (Left, Right : Integer'Base) return Boolean; -- function "+" (Right : Integer'Base) return Integer'Base; -- function "-" (Right : Integer'Base) return Integer'Base; -- function "abs" (Right : Integer'Base) return Integer'Base; -- function "+" (Left, Right : Integer'Base) return Integer'Base; -- function "-" (Left, Right : Integer'Base) return Integer'Base; -- function "*" (Left, Right : Integer'Base) return Integer'Base; -- function "/" (Left, Right : Integer'Base) return Integer'Base; -- function "rem" (Left, Right : Integer'Base) return Integer'Base; -- function "mod" (Left, Right : Integer'Base) return Integer'Base; -- function "**" (Left : Integer'Base; Right : Natural) return Integer'Base; -- The specification of each operator for the type -- root_integer, or for any additional predefined integer -- type, is obtained by replacing Integer by the name of the type -- in the specification of the corresponding operator of the type -- Integer. The right operand of the exponentiation operator -- remains as subtype Natural. -- The floating point type root_real is predefined. -- The corresponding universal type is universal_real. type Float is digits implementation-defined; -- The predefined operators for this type are as follows: -- function "=" (Left, Right : Float) return Boolean; -- function "/=" (Left, Right : Float) return Boolean; -- function "<" (Left, Right : Float) return Boolean; -- function "<=" (Left, Right : Float) return Boolean; -- function ">" (Left, Right : Float) return Boolean; -- function ">=" (Left, Right : Float) return Boolean; -- function "+" (Right : Float) return Float; -- function "-" (Right : Float) return Float; -- function "abs" (Right : Float) return Float; -- function "+" (Left, Right : Float) return Float; -- function "-" (Left, Right : Float) return Float; -- function "*" (Left, Right : Float) return Float; -- function "/" (Left, Right : Float) return Float; -- function "**" (Left : Float; Right : Integer'Base) return Float; -- The specification of each operator for the type root_real, or for -- any additional predefined floating point type, is obtained by -- replacing Float by the name of the type in the specification of the -- corresponding operator of the type Float. -- In addition, the following operators are predefined for the root -- numeric types: 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; -- The type universal_fixed is predefined. -- The only multiplying operators defined between -- fixed point types are 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 in italics in this definition. See 3.5.2. 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 predefined operators for the type Character are the same as for -- any enumeration type. -- The declaration of type Wide_Character is based on the standard ISO 10646 BMP character set. -- The first 256 positions have the same contents as type Character. See 3.5.2. type Wide_Character is (nul, soh ... FFFE, FFFF); package ASCII is ... end ASCII; --Obsolescent; see J.5 -- Predefined string types: type String is array(Positive range <>) of Character; pragma Pack(String); -- The predefined operators for this type are as follows: -- function "=" (Left, Right: String) return Boolean; -- function "/=" (Left, Right: String) return Boolean; -- function "<" (Left, Right: String) return Boolean; -- function "<=" (Left, Right: String) return Boolean; -- function ">" (Left, Right: String) return Boolean; -- function ">=" (Left, Right: String) return Boolean; -- function "&" (Left: String; Right: String) return String; -- function "&" (Left: Character; Right: String) return String; -- function "&" (Left: String; Right: Character) return String; -- function "&" (Left: Character; Right: Character) return String; type Wide_String is array(Positive range <>) of Wide_Character; pragma Pack(Wide_String); -- The predefined operators for this type correspond to those for String type Duration is delta implementation-defined range implementation-defined; -- The predefined operators for the type Duration are the same as for -- any fixed point type. -- The predefined exceptions: Constraint_Error: exception; Program_Error : exception; Storage_Error : exception; Tasking_Error : exception; end Standard; package Ada.Tags is type Tag is private; function Expanded_Name(T : Tag) return String; function External_Tag(T : Tag) return String; function Internal_Tag(External : String) return Tag; Tag_Error : exception; private -- ... -- not specified by the language end Ada.Tags; package Ada.Finalization is pragma Preelaborate(Finalization); type Controlled is abstract tagged private; procedure Initialize(Object : in out Controlled); procedure Adjust (Object : in out Controlled); procedure Finalize (Object : in out Controlled); type Limited_Controlled is abstract tagged limited private; procedure Initialize(Object : in out Limited_Controlled); procedure Finalize (Object : in out Limited_Controlled); private -- ... -- not specified by the language end Ada.Finalization; package Ada.Calendar is type Time is private; subtype Year_Number is Integer range 1901 .. 2099; subtype Month_Number is Integer range 1 .. 12; subtype Day_Number is Integer range 1 .. 31; subtype Day_Duration is Duration range 0.0 .. 86_400.0; function Clock return Time; function Year (Date : Time) return Year_Number; function Month (Date : Time) return Month_Number; function Day (Date : Time) return Day_Number; function Seconds(Date : Time) return Day_Duration; procedure Split (Date : in Time; Year : out Year_Number; Month : out Month_Number; Day : out Day_Number; Seconds : out Day_Duration); function Time_Of(Year : Year_Number; Month : Month_Number; Day : Day_Number; Seconds : Day_Duration := 0.0) return Time; function "+" (Left : Time; Right : Duration) return Time; function "+" (Left : Duration; Right : Time) return Time; function "-" (Left : Time; Right : Duration) return Time; function "-" (Left : Time; Right : Time) return Duration; function "<" (Left, Right : Time) return Boolean; function "<="(Left, Right : Time) return Boolean; function ">" (Left, Right : Time) return Boolean; function ">="(Left, Right : Time) return Boolean; Time_Error : exception; private -- ... -- not specified by the language end Ada.Calendar; package Ada.Exceptions is type Exception_Id is private; Null_Id : constant Exception_Id; function Exception_Name(Id : Exception_Id) return String; type Exception_Occurrence is limited private; type Exception_Occurrence_Access is access all Exception_Occurrence; Null_Occurrence : constant Exception_Occurrence; procedure Raise_Exception(E : in Exception_Id; Message : in String := ""); function Exception_Message(X : Exception_Occurrence) return String; procedure Reraise_Occurrence(X : in Exception_Occurrence); function Exception_Identity(X : Exception_Occurrence) return Exception_Id; function Exception_Name(X : Exception_Occurrence) return String; -- Same as Exception_Name(Exception_Identity(X)). function Exception_Information(X : Exception_Occurrence) return String; procedure Save_Occurrence(Target : out Exception_Occurrence; Source : in Exception_Occurrence); function Save_Occurrence(Source : Exception_Occurrence) return Exception_Occurrence_Access; private -- ... -- not specified by the language end Ada.Exceptions; package System is pragma Preelaborate(System); type Name is implementation-defined-enumeration-type; System_Name : constant Name := implementation-defined; -- System-Dependent Named Numbers: Min_Int : constant := root_integer'First; Max_Int : constant := root_integer'Last; Max_Binary_Modulus : constant := implementation-defined; Max_Nonbinary_Modulus : constant := implementation-defined; Max_Base_Digits : constant := root_real'Digits; Max_Digits : constant := implementation-defined; Max_Mantissa : constant := implementation-defined; Fine_Delta : constant := implementation-defined; Tick : constant := implementation-defined; -- Storage-related Declarations: type Address is implementation-defined; Null_Address : constant Address; Storage_Unit : constant := implementation-defined; Word_Size : constant := implementation-defined * Storage_Unit; Memory_Size : constant := implementation-defined; -- Address Comparison: function "<" (Left, Right : Address) return Boolean; function "<="(Left, Right : Address) return Boolean; function ">" (Left, Right : Address) return Boolean; function ">="(Left, Right : Address) return Boolean; function "=" (Left, Right : Address) return Boolean; -- function "/=" (Left, Right : Address) return Boolean; -- "/=" is implicitly defined pragma Convention(Intrinsic, "<"); -- ... -- and so on for all language-defined subprograms in this package -- Other System-Dependent Declarations: type Bit_Order is (High_Order_First, Low_Order_First); Default_Bit_Order : constant Bit_Order; -- Priority-related declarations (see D.1): subtype Any_Priority is Integer range implementation-defined; subtype Priority is Any_Priority range Any_Priority'First .. implementation-defined; subtype Interrupt_Priority is Any_Priority range Priority'Last+1 .. Any_Priority'Last; Default_Priority : constant Priority := (Priority'First + Priority'Last)/2; private -- ... -- not specified by the language end System; package System.Storage_Elements is pragma Preelaborate(System.Storage_Elements); type Storage_Offset is range implementation-defined; subtype Storage_Count is Storage_Offset range 0..Storage_Offset'Last; type Storage_Element is mod implementation-defined; for Storage_Element'Size use Storage_Unit; type Storage_Array is array (Storage_Offset range <>) of aliased Storage_Element; for Storage_Array'Component_Size use Storage_Unit; -- Address Arithmetic: function "+"(Left : Address; Right : Storage_Offset) return Address; function "+"(Left : Storage_Offset; Right : Address) return Address; function "-"(Left : Address; Right : Storage_Offset) return Address; function "-"(Left, Right : Address) return Storage_Offset; function "mod"(Left : Address; Right : Storage_Offset) return Storage_Offset; -- Conversion to/from integers: type Integer_Address is implementation-defined; function To_Address(Value : Integer_Address) return Address; function To_Integer(Value : Address) return Integer_Address; pragma Convention(Intrinsic, "+"); -- ...and so on for all language-defined subprograms declared in this package. end System.Storage_Elements; generic type Object(<>) is limited private; package System.Address_To_Access_Conversions is pragma Preelaborate(Address_To_Access_Conversions); type Object_Pointer is access all Object; function To_Pointer(Value : Address) return Object_Pointer; function To_Address(Value : Object_Pointer) return Address; pragma Convention(Intrinsic, To_Pointer); pragma Convention(Intrinsic, To_Address); end System.Address_To_Access_Conversions; generic type Source(<>) is limited private; type Target(<>) is limited private; function Ada.Unchecked_Conversion(S : Source) return Target; pragma Convention(Intrinsic, Ada.Unchecked_Conversion); pragma Pure(Ada.Unchecked_Conversion); with Ada.Finalization; with System.Storage_Elements; package System.Storage_Pools is pragma Preelaborate(System.Storage_Pools); type Root_Storage_Pool is abstract new Ada.Finalization.Limited_Controlled with private; procedure Allocate( Pool : in out Root_Storage_Pool; Storage_Address : out Address; Size_In_Storage_Elements : in Storage_Elements.Storage_Count; Alignment : in Storage_Elements.Storage_Count) is abstract; procedure Deallocate( Pool : in out Root_Storage_Pool; Storage_Address : in Address; Size_In_Storage_Elements : in Storage_Elements.Storage_Count; Alignment : in Storage_Elements.Storage_Count) is abstract; function Storage_Size(Pool : Root_Storage_Pool) return Storage_Elements.Storage_Count is abstract; private -- ... -- not specified by the language end System.Storage_Pools; package Ada.Streams is pragma Pure(Streams); type Root_Stream_Type is abstract tagged limited private; type Stream_Element is mod implementation-defined; type Stream_Element_Offset is range implementation-defined; subtype Stream_Element_Count is Stream_Element_Offset range 0..Stream_Element_Offset'Last; type Stream_Element_Array is array(Stream_Element_Offset range <>) of Stream_Element; procedure Read( Stream : in out Root_Stream_Type; Item : out Stream_Element_Array; Last : out Stream_Element_Offset) is abstract; procedure Write( Stream : in out Root_Stream_Type; Item : in Stream_Element_Array) is abstract; private -- ... -- not specified by the language end Ada.Streams; generic type Object(<>) is limited private; type Name is access Object; procedure Ada.Unchecked_Deallocation(X : in out Name); pragma Convention(Intrinsic, Ada.Unchecked_Deallocation); pragma Preelaborate(Ada.Unchecked_Deallocation); package Ada is pragma Pure(Ada); end Ada; package Ada.Characters is pragma Pure(Characters); end Ada.Characters; package Ada.Characters.Handling is pragma Preelaborate(Handling); --Character classification functions function Is_Control (Item : in Character) return Boolean; function Is_Graphic (Item : in Character) return Boolean; function Is_Letter (Item : in Character) return Boolean; function Is_Lower (Item : in Character) return Boolean; function Is_Upper (Item : in Character) return Boolean; function Is_Basic (Item : in Character) return Boolean; function Is_Digit (Item : in Character) return Boolean; function Is_Decimal_Digit (Item : in Character) return Boolean renames Is_Digit; function Is_Hexadecimal_Digit (Item : in Character) return Boolean; function Is_Alphanumeric (Item : in Character) return Boolean; function Is_Special (Item : in Character) return Boolean; --Conversion functions for Character and String function To_Lower (Item : in Character) return Character; function To_Upper (Item : in Character) return Character; function To_Basic (Item : in Character) return Character; function To_Lower (Item : in String) return String; function To_Upper (Item : in String) return String; function To_Basic (Item : in String) return String; --Classifications of and conversions between Character and ISO 646 subtype ISO_646 is Character range Character'Val(0) .. Character'Val(127); function Is_ISO_646 (Item : in Character) return Boolean; function Is_ISO_646 (Item : in String) return Boolean; function To_ISO_646 (Item : in Character; Substitute : in ISO_646 := ' ') return ISO_646; function To_ISO_646 (Item : in String; Substitute : in ISO_646 := ' ') return String; --Classifications of and conversions between Wide_Character and Character. function Is_Character (Item : in Wide_Character) return Boolean; function Is_String (Item : in Wide_String) return Boolean; function To_Character (Item : in Wide_Character; Substitute : in Character := ' ') return Character; function To_String (Item : in Wide_String; Substitute : in Character := ' ') return String; function To_Wide_Character (Item : in Character) return Wide_Character; function To_Wide_String (Item : in String) return Wide_String; end Ada.Characters.Handling; package Ada.Characters.Latin_1 is pragma Pure(Latin_1); -- Control characters: NUL : constant Character := Character'Val(0); SOH : constant Character := Character'Val(1); STX : constant Character := Character'Val(2); ETX : constant Character := Character'Val(3); EOT : constant Character := Character'Val(4); ENQ : constant Character := Character'Val(5); ACK : constant Character := Character'Val(6); BEL : constant Character := Character'Val(7); BS : constant Character := Character'Val(8); HT : constant Character := Character'Val(9); LF : constant Character := Character'Val(10); VT : constant Character := Character'Val(11); FF : constant Character := Character'Val(12); CR : constant Character := Character'Val(13); SO : constant Character := Character'Val(14); SI : constant Character := Character'Val(15); DLE : constant Character := Character'Val(16); DC1 : constant Character := Character'Val(17); DC2 : constant Character := Character'Val(18); DC3 : constant Character := Character'Val(19); DC4 : constant Character := Character'Val(20); NAK : constant Character := Character'Val(21); SYN : constant Character := Character'Val(22); ETB : constant Character := Character'Val(23); CAN : constant Character := Character'Val(24); EM : constant Character := Character'Val(25); SUB : constant Character := Character'Val(26); ESC : constant Character := Character'Val(27); FS : constant Character := Character'Val(28); GS : constant Character := Character'Val(29); RS : constant Character := Character'Val(30); US : constant Character := Character'Val(31); -- ISO 646 graphic characters: Space : constant Character := ' '; -- Character'Val(32) Exclamation : constant Character := '!'; -- Character'Val(33) Quotation : constant Character := '"'; -- Character'Val(34) Number_Sign : constant Character := '#'; -- Character'Val(35) Dollar_Sign : constant Character := '$'; -- Character'Val(36) Percent_Sign : constant Character := '%'; -- Character'Val(37) Ampersand : constant Character := '&'; -- Character'Val(38) Apostrophe : constant Character := '''; -- Character'Val(39) Left_Parenthesis : constant Character := '('; -- Character'Val(40) Right_Parenthesis : constant Character := ')'; -- Character'Val(41) Asterisk : constant Character := '*'; -- Character'Val(42) Plus_Sign : constant Character := '+'; -- Character'Val(43) Comma : constant Character := ','; -- Character'Val(44) Hyphen : constant Character := '-'; -- Character'Val(45) Minus_Sign : Character renames Hyphen; Full_Stop : constant Character := '.'; -- Character'Val(46) Solidus : constant Character := '/'; -- Character'Val(47) -- Decimal digits '0' though '9' are at positions 48 through 57 Colon : constant Character := ':'; -- Character'Val(58) Semicolon : constant Character := ';'; -- Character'Val(59) Less_Than_Sign : constant Character := '<'; -- Character'Val(60) Equals_Sign : constant Character := '='; -- Character'Val(61) Greater_Than_Sign : constant Character := '>'; -- Character'Val(62) Question : constant Character := '?'; -- Character'Val(63) Commercial_At : constant Character := '@'; -- Character'Val(64) -- Letters 'A' through 'Z' are at positions 65 through 90 Left_Square_Bracket : constant Character := '['; -- Character'Val(91) Reverse_Solidus : constant Character := '\'; -- Character'Val(92) Right_Square_Bracket : constant Character := ']'; -- Character'Val(93) Circumflex : constant Character := '^'; -- Character'Val(94) Low_Line : constant Character := '_'; -- Character'Val(95) Grave : constant Character := '`'; -- Character'Val(96) LC_A : constant Character := 'a'; -- Character'Val(97) LC_B : constant Character := 'b'; -- Character'Val(98) LC_C : constant Character := 'c'; -- Character'Val(99) LC_D : constant Character := 'd'; -- Character'Val(100) LC_E : constant Character := 'e'; -- Character'Val(101) LC_F : constant Character := 'f'; -- Character'Val(102) LC_G : constant Character := 'g'; -- Character'Val(103) LC_H : constant Character := 'h'; -- Character'Val(104) LC_I : constant Character := 'i'; -- Character'Val(105) LC_J : constant Character := 'j'; -- Character'Val(106) LC_K : constant Character := 'k'; -- Character'Val(107) LC_L : constant Character := 'l'; -- Character'Val(108) LC_M : constant Character := 'm'; -- Character'Val(109) LC_N : constant Character := 'n'; -- Character'Val(110) LC_O : constant Character := 'o'; -- Character'Val(111) LC_P : constant Character := 'p'; -- Character'Val(112) LC_Q : constant Character := 'q'; -- Character'Val(113) LC_R : constant Character := 'r'; -- Character'Val(114) LC_S : constant Character := 's'; -- Character'Val(115) LC_T : constant Character := 't'; -- Character'Val(116) LC_U : constant Character := 'u'; -- Character'Val(117) LC_V : constant Character := 'v'; -- Character'Val(118) LC_W : constant Character := 'w'; -- Character'Val(119) LC_X : constant Character := 'x'; -- Character'Val(120) LC_Y : constant Character := 'y'; -- Character'Val(121) LC_Z : constant Character := 'z'; -- Character'Val(122) Left_Curly_Bracket : constant Character := '{'; -- Character'Val(123) Vertical_Line : constant Character := '|'; -- Character'Val(124) Right_Curly_Bracket : constant Character := '}'; -- Character'Val(125) Tilde : constant Character := '~'; -- Character'Val(126) DEL : constant Character := Character'Val(127); -- ISO 6429 control characters: IS4 : Character renames FS; IS3 : Character renames GS; IS2 : Character renames RS; IS1 : Character renames US; Reserved_128 : constant Character := Character'Val(128); Reserved_129 : constant Character := Character'Val(129); BPH : constant Character := Character'Val(130); NBH : constant Character := Character'Val(131); Reserved_132 : constant Character := Character'Val(132); NEL : constant Character := Character'Val(133); SSA : constant Character := Character'Val(134); ESA : constant Character := Character'Val(135); HTS : constant Character := Character'Val(136); HTJ : constant Character := Character'Val(137); VTS : constant Character := Character'Val(138); PLD : constant Character := Character'Val(139); PLU : constant Character := Character'Val(140); RI : constant Character := Character'Val(141); SS2 : constant Character := Character'Val(142); SS3 : constant Character := Character'Val(143); DCS : constant Character := Character'Val(144); PU1 : constant Character := Character'Val(145); PU2 : constant Character := Character'Val(146); STS : constant Character := Character'Val(147); CCH : constant Character := Character'Val(148); MW : constant Character := Character'Val(149); SPA : constant Character := Character'Val(150); EPA : constant Character := Character'Val(151); SOS : constant Character := Character'Val(152); Reserved_153 : constant Character := Character'Val(153); SCI : constant Character := Character'Val(154); CSI : constant Character := Character'Val(155); ST : constant Character := Character'Val(156); OSC : constant Character := Character'Val(157); PM : constant Character := Character'Val(158); APC : constant Character := Character'Val(159); -- Other graphic characters: -- Character positions 160 (16#A0#) .. 175 (16#AF#): No_Break_Space : constant Character := Character'Val(160); NBSP : Character renames No_Break_Space; Inverted_Exclamation : constant Character := Character'Val(161); Cent_Sign : constant Character := Character'Val(162); Pound_Sign : constant Character := Character'Val(163); Currency_Sign : constant Character := Character'Val(164); Yen_Sign : constant Character := Character'Val(165); Broken_Bar : constant Character := Character'Val(166); Section_Sign : constant Character := Character'Val(167); Diaeresis : constant Character := Character'Val(168); Copyright_Sign : constant Character := Character'Val(169); Feminine_Ordinal_Indicator : constant Character := Character'Val(170); Left_Angle_Quotation : constant Character := Character'Val(171); Not_Sign : constant Character := Character'Val(172); Soft_Hyphen : constant Character := Character'Val(173); Registered_Trade_Mark_Sign : constant Character := Character'Val(174); Macron : constant Character := Character'Val(175); -- Character positions 176 (16#B0#) .. 191 (16#BF#): Degree_Sign : constant Character := Character'Val(176); Ring_Above : Character renames Degree_Sign; Plus_Minus_Sign : constant Character := Character'Val(177); Superscript_Two : constant Character := Character'Val(178); Superscript_Three : constant Character := Character'Val(179); Acute : constant Character := Character'Val(180); Micro_Sign : constant Character := Character'Val(181); Pilcrow_Sign : constant Character := Character'Val(182); Paragraph_Sign : Character renames Pilcrow_Sign; Middle_Dot : constant Character := Character'Val(183); Cedilla : constant Character := Character'Val(184); Superscript_One : constant Character := Character'Val(185); Masculine_Ordinal_Indicator : constant Character := Character'Val(186); Right_Angle_Quotation : constant Character := Character'Val(187); Fraction_One_Quarter : constant Character := Character'Val(188); Fraction_One_Half : constant Character := Character'Val(189); Fraction_Three_Quarters : constant Character := Character'Val(190); Inverted_Question : constant Character := Character'Val(191); -- Character positions 192 (16#C0#) .. 207 (16#CF#): UC_A_Grave : constant Character := Character'Val(192); UC_A_Acute : constant Character := Character'Val(193); UC_A_Circumflex : constant Character := Character'Val(194); UC_A_Tilde : constant Character := Character'Val(195); UC_A_Diaeresis : constant Character := Character'Val(196); UC_A_Ring : constant Character := Character'Val(197); UC_AE_Diphthong : constant Character := Character'Val(198); UC_C_Cedilla : constant Character := Character'Val(199); UC_E_Grave : constant Character := Character'Val(200); UC_E_Acute : constant Character := Character'Val(201); UC_E_Circumflex : constant Character := Character'Val(202); UC_E_Diaeresis : constant Character := Character'Val(203); UC_I_Grave : constant Character := Character'Val(204); UC_I_Acute : constant Character := Character'Val(205); UC_I_Circumflex : constant Character := Character'Val(206); UC_I_Diaeresis : constant Character := Character'Val(207); -- Character positions 208 (16#D0#) .. 223 (16#DF#): UC_Icelandic_Eth : constant Character := Character'Val(208); UC_N_Tilde : constant Character := Character'Val(209); UC_O_Grave : constant Character := Character'Val(210); UC_O_Acute : constant Character := Character'Val(211); UC_O_Circumflex : constant Character := Character'Val(212); UC_O_Tilde : constant Character := Character'Val(213); UC_O_Diaeresis : constant Character := Character'Val(214); Multiplication_Sign : constant Character := Character'Val(215); UC_O_Oblique_Stroke : constant Character := Character'Val(216); UC_U_Grave : constant Character := Character'Val(217); UC_U_Acute : constant Character := Character'Val(218); UC_U_Circumflex : constant Character := Character'Val(219); UC_U_Diaeresis : constant Character := Character'Val(220); UC_Y_Acute : constant Character := Character'Val(221); UC_Icelandic_Thorn : constant Character := Character'Val(222); LC_German_Sharp_S : constant Character := Character'Val(223); -- Character positions 224 (16#E0#) .. 239 (16#EF#): LC_A_Grave : constant Character := Character'Val(224); LC_A_Acute : constant Character := Character'Val(225); LC_A_Circumflex : constant Character := Character'Val(226); LC_A_Tilde : constant Character := Character'Val(227); LC_A_Diaeresis : constant Character := Character'Val(228); LC_A_Ring : constant Character := Character'Val(229); LC_AE_Diphthong : constant Character := Character'Val(230); LC_C_Cedilla : constant Character := Character'Val(231); LC_E_Grave : constant Character := Character'Val(232); LC_E_Acute : constant Character := Character'Val(233); LC_E_Circumflex : constant Character := Character'Val(234); LC_E_Diaeresis : constant Character := Character'Val(235); LC_I_Grave : constant Character := Character'Val(236); LC_I_Acute : constant Character := Character'Val(237); LC_I_Circumflex : constant Character := Character'Val(238); LC_I_Diaeresis : constant Character := Character'Val(239); -- Character positions 240 (16#F0#) .. 255 (16#FF#): LC_Icelandic_Eth : constant Character := Character'Val(240); LC_N_Tilde : constant Character := Character'Val(241); LC_O_Grave : constant Character := Character'Val(242); LC_O_Acute : constant Character := Character'Val(243); LC_O_Circumflex : constant Character := Character'Val(244); LC_O_Tilde : constant Character := Character'Val(245); LC_O_Diaeresis : constant Character := Character'Val(246); Division_Sign : constant Character := Character'Val(247); LC_O_Oblique_Stroke : constant Character := Character'Val(248); LC_U_Grave : constant Character := Character'Val(249); LC_U_Acute : constant Character := Character'Val(250); LC_U_Circumflex : constant Character := Character'Val(251); LC_U_Diaeresis : constant Character := Character'Val(252); LC_Y_Acute : constant Character := Character'Val(253); LC_Icelandic_Thorn : constant Character := Character'Val(254); LC_Y_Diaeresis : constant Character := Character'Val(255); end Ada.Characters.Latin_1; package Ada.Strings is pragma Pure(Strings); Space : constant Character := ' '; Wide_Space : constant Wide_Character := ' '; Length_Error, Pattern_Error, Index_Error, Translation_Error : exception; type Alignment is (Left, Right, Center); type Truncation is (Left, Right, Error); type Membership is (Inside, Outside); type Direction is (Forward, Backward); type Trim_End is (Left, Right, Both); end Ada.Strings; package Ada.Strings.Maps is pragma Preelaborate(Maps); -- Representation for a set of character values: type Character_Set is private; Null_Set : constant Character_Set; type Character_Range is record Low : Character; High : Character; end record; -- Represents Character range Low..High type Character_Ranges is array (Positive range <>) of Character_Range; function To_Set (Ranges : in Character_Ranges) return Character_Set; function To_Set (Span : in Character_Range) return Character_Set; function To_Ranges (Set : in Character_Set) return Character_Ranges; function "=" (Left, Right : in Character_Set) return Boolean; function "not" (Right : in Character_Set) return Character_Set; function "and" (Left, Right : in Character_Set) return Character_Set; function "or" (Left, Right : in Character_Set) return Character_Set; function "xor" (Left, Right : in Character_Set) return Character_Set; function "-" (Left, Right : in Character_Set) return Character_Set; function Is_In (Element : in Character; Set : in Character_Set) return Boolean; function Is_Subset (Elements : in Character_Set; Set : in Character_Set) return Boolean; function "<=" (Left : in Character_Set; Right : in Character_Set) return Boolean renames Is_Subset; -- Alternative representation for a set of character values: subtype Character_Sequence is String; function To_Set (Sequence : in Character_Sequence) return Character_Set; function To_Set (Singleton : in Character) return Character_Set; function To_Sequence (Set : in Character_Set) return Character_Sequence; -- Representation for a character to character mapping: type Character_Mapping is private; function Value (Map : in Character_Mapping; Element : in Character) return Character; Identity : constant Character_Mapping; function To_Mapping (From, To : in Character_Sequence) return Character_Mapping; function To_Domain (Map : in Character_Mapping) return Character_Sequence; function To_Range (Map : in Character_Mapping) return Character_Sequence; type Character_Mapping_Function is access function (From : in Character) return Character; private -- ... -- not specified by the language end Ada.Strings.Maps; with Ada.Strings.Maps; package Ada.Strings.Fixed is pragma Preelaborate(Fixed); -- "Copy" procedure for strings of possibly different lengths procedure Move (Source : in String; Target : out String; Drop : in Truncation := Error; Justify : in Alignment := Left; Pad : in Character := Space); -- Search subprograms function Index (Source : in String; Pattern : in String; Going : in Direction := Forward; Mapping : in Maps.Character_Mapping := Maps.Identity) return Natural; function Index (Source : in String; Pattern : in String; Going : in Direction := Forward; Mapping : in Maps.Character_Mapping_Function) return Natural; function Index (Source : in String; Set : in Maps.Character_Set; Test : in Membership := Inside; Going : in Direction := Forward) return Natural; function Index_Non_Blank (Source : in String; Going : in Direction := Forward) return Natural; function Count (Source : in String; Pattern : in String; Mapping : in Maps.Character_Mapping := Maps.Identity) return Natural; function Count (Source : in String; Pattern : in String; Mapping : in Maps.Character_Mapping_Function) return Natural; function Count (Source : in String; Set : in Maps.Character_Set) return Natural; procedure Find_Token (Source : in String; Set : in Maps.Character_Set; Test : in Membership; First : out Positive; Last : out Natural); -- String translation subprograms function Translate (Source : in String; Mapping : in Maps.Character_Mapping) return String; procedure Translate (Source : in out String; Mapping : in Maps.Character_Mapping); function Translate (Source : in String; Mapping : in Maps.Character_Mapping_Function) return String; procedure Translate (Source : in out String; Mapping : in Maps.Character_Mapping_Function); -- String transformation subprograms function Replace_Slice (Source : in String; Low : in Positive; High : in Natural; By : in String) return String; procedure Replace_Slice (Source : in out String; Low : in Positive; High : in Natural; By : in String; Drop : in Truncation := Error; Justify : in Alignment := Left; Pad : in Character := Space); function Insert (Source : in String; Before : in Positive; New_Item : in String) return String; procedure Insert (Source : in out String; Before : in Positive; New_Item : in String; Drop : in Truncation := Error); function Overwrite (Source : in String; Position : in Positive; New_Item : in String) return String; procedure Overwrite (Source : in out String; Position : in Positive; New_Item : in String; Drop : in Truncation := Right); function Delete (Source : in String; From : in Positive; Through : in Natural) return String; procedure Delete (Source : in out String; From : in Positive; Through : in Natural; Justify : in Alignment := Left; Pad : in Character := Space); --String selector subprograms function Trim (Source : in String; Side : in Trim_End) return String; procedure Trim (Source : in out String; Side : in Trim_End; Justify : in Alignment := Left; Pad : in Character := Space); function Trim (Source : in String; Left : in Maps.Character_Set; Right : in Maps.Character_Set) return String; procedure Trim (Source : in out String; Left : in Maps.Character_Set; Right : in Maps.Character_Set; Justify : in Alignment := Strings.Left; Pad : in Character := Space); function Head (Source : in String; Count : in Natural; Pad : in Character := Space) return String; procedure Head (Source : in out String; Count : in Natural; Justify : in Alignment := Left; Pad : in Character := Space); function Tail (Source : in String; Count : in Natural; Pad : in Character := Space) return String; procedure Tail (Source : in out String; Count : in Natural; Justify : in Alignment := Left; Pad : in Character := Space); --String constructor functions function "*" (Left : in Natural; Right : in Character) return String; function "*" (Left : in Natural; Right : in String) return String; end Ada.Strings.Fixed; with Ada.Strings.Maps; package Ada.Strings.Bounded is pragma Preelaborate(Bounded); generic Max : Positive; -- Maximum length of a Bounded_String package Generic_Bounded_Length is Max_Length : constant Positive := Max; type Bounded_String is private; Null_Bounded_String : constant Bounded_String; subtype Length_Range is Natural range 0 .. Max_Length; function Length (Source : in Bounded_String) return Length_Range; -- Conversion, Concatenation, and Selection functions function To_Bounded_String (Source : in String; Drop : in Truncation := Error) return Bounded_String; function To_String (Source : in Bounded_String) return String; function Append (Left, Right : in Bounded_String; Drop : in Truncation := Error) return Bounded_String; function Append (Left : in Bounded_String; Right : in String; Drop : in Truncation := Error) return Bounded_String; function Append (Left : in String; Right : in Bounded_String; Drop : in Truncation := Error) return Bounded_String; function Append (Left : in Bounded_String; Right : in Character; Drop : in Truncation := Error) return Bounded_String; function Append (Left : in Character; Right : in Bounded_String; Drop : in Truncation := Error) return Bounded_String; procedure Append (Source : in out Bounded_String; New_Item : in Bounded_String; Drop : in Truncation := Error); procedure Append (Source : in out Bounded_String; New_Item : in String; Drop : in Truncation := Error); procedure Append (Source : in out Bounded_String; New_Item : in Character; Drop : in Truncation := Error); function "&" (Left, Right : in Bounded_String) return Bounded_String; function "&" (Left : in Bounded_String; Right : in String) return Bounded_String; function "&" (Left : in String; Right : in Bounded_String) return Bounded_String; function "&" (Left : in Bounded_String; Right : in Character) return Bounded_String; function "&" (Left : in Character; Right : in Bounded_String) return Bounded_String; function Element (Source : in Bounded_String; Index : in Positive) return Character; procedure Replace_Element (Source : in out Bounded_String; Index : in Positive; By : in Character); function Slice (Source : in Bounded_String; Low : in Positive; High : in Natural) return String; function "=" (Left, Right : in Bounded_String) return Boolean; function "=" (Left : in Bounded_String; Right : in String) return Boolean; function "=" (Left : in String; Right : in Bounded_String) return Boolean; function "<" (Left, Right : in Bounded_String) return Boolean; function "<" (Left : in Bounded_String; Right : in String) return Boolean; function "<" (Left : in String; Right : in Bounded_String) return Boolean; function "<=" (Left, Right : in Bounded_String) return Boolean; function "<=" (Left : in Bounded_String; Right : in String) return Boolean; function "<=" (Left : in String; Right : in Bounded_String) return Boolean; function ">" (Left, Right : in Bounded_String) return Boolean; function ">" (Left : in Bounded_String; Right : in String) return Boolean; function ">" (Left : in String; Right : in Bounded_String) return Boolean; function ">=" (Left, Right : in Bounded_String) return Boolean; function ">=" (Left : in Bounded_String; Right : in String) return Boolean; function ">=" (Left : in String; Right : in Bounded_String) return Boolean; -- Search functions function Index (Source : in Bounded_String; Pattern : in String; Going : in Direction := Forward; Mapping : in Maps.Character_Mapping := Maps.Identity) return Natural; function Index (Source : in Bounded_String; Pattern : in String; Going : in Direction := Forward; Mapping : in Maps.Character_Mapping_Function) return Natural; function Index (Source : in Bounded_String; Set : in Maps.Character_Set; Test : in Membership := Inside; Going : in Direction := Forward) return Natural; function Index_Non_Blank (Source : in Bounded_String; Going : in Direction := Forward) return Natural; function Count (Source : in Bounded_String; Pattern : in String; Mapping : in Maps.Character_Mapping := Maps.Identity) return Natural; function Count (Source : in Bounded_String; Pattern : in String; Mapping : in Maps.Character_Mapping_Function) return Natural; function Count (Source : in Bounded_String; Set : in Maps.Character_Set) return Natural; procedure Find_Token (Source : in Bounded_String; Set : in Maps.Character_Set; Test : in Membership; First : out Positive; Last : out Natural); -- String translation subprograms function Translate (Source : in Bounded_String; Mapping : in Maps.Character_Mapping) return Bounded_String; procedure Translate (Source : in out Bounded_String; Mapping : in Maps.Character_Mapping); function Translate (Source : in Bounded_String; Mapping : in Maps.Character_Mapping_Function) return Bounded_String; procedure Translate (Source : in out Bounded_String; Mapping : in Maps.Character_Mapping_Function); -- String transformation subprograms function Replace_Slice (Source : in Bounded_String; Low : in Positive; High : in Natural; By : in String; Drop : in Truncation := Error) return Bounded_String; procedure Replace_Slice (Source : in out Bounded_String; Low : in Positive; High : in Natural; By : in String; Drop : in Truncation := Error); function Insert (Source : in Bounded_String; Before : in Positive; New_Item : in String; Drop : in Truncation := Error) return Bounded_String; procedure Insert (Source : in out Bounded_String; Before : in Positive; New_Item : in String; Drop : in Truncation := Error); function Overwrite (Source : in Bounded_String; Position : in Positive; New_Item : in String; Drop : in Truncation := Error) return Bounded_String; procedure Overwrite (Source : in out Bounded_String; Position : in Positive; New_Item : in String; Drop : in Truncation := Error); function Delete (Source : in Bounded_String; From : in Positive; Through : in Natural) return Bounded_String; procedure Delete (Source : in out Bounded_String; From : in Positive; Through : in Natural); --String selector subprograms function Trim (Source : in Bounded_String; Side : in Trim_End) return Bounded_String; procedure Trim (Source : in out Bounded_String; Side : in Trim_End); function Trim (Source : in Bounded_String; Left : in Maps.Character_Set; Right : in Maps.Character_Set) return Bounded_String; procedure Trim (Source : in out Bounded_String; Left : in Maps.Character_Set; Right : in Maps.Character_Set); function Head (Source : in Bounded_String; Count : in Natural; Pad : in Character := Space; Drop : in Truncation := Error) return Bounded_String; procedure Head (Source : in out Bounded_String; Count : in Natural; Pad : in Character := Space; Drop : in Truncation := Error); function Tail (Source : in Bounded_String; Count : in Natural; Pad : in Character := Space; Drop : in Truncation := Error) return Bounded_String; procedure Tail (Source : in out Bounded_String; Count : in Natural; Pad : in Character := Space; Drop : in Truncation := Error); --String constructor subprograms function "*" (Left : in Natural; Right : in Character) return Bounded_String; function "*" (Left : in Natural; Right : in String) return Bounded_String; function "*" (Left : in Natural; Right : in Bounded_String) return Bounded_String; function Replicate (Count : in Natural; Item : in Character; Drop : in Truncation := Error) return Bounded_String; function Replicate (Count : in Natural; Item : in String; Drop : in Truncation := Error) return Bounded_String; function Replicate (Count : in Natural; Item : in Bounded_String; Drop : in Truncation := Error) return Bounded_String; private -- ... -- not specified by the language end Generic_Bounded_Length; end Ada.Strings.Bounded; with Ada.Strings.Maps; package Ada.Strings.Unbounded is pragma Preelaborate(Unbounded); type Unbounded_String is private; Null_Unbounded_String : constant Unbounded_String; function Length (Source : in Unbounded_String) return Natural; type String_Access is access all String; procedure Free (X : in out String_Access); -- Conversion, Concatenation, and Selection functions function To_Unbounded_String (Source : in String) return Unbounded_String; function To_Unbounded_String (Length : in Natural) return Unbounded_String; function To_String (Source : in Unbounded_String) return String; procedure Append (Source : in out Unbounded_String; New_Item : in Unbounded_String); procedure Append (Source : in out Unbounded_String; New_Item : in String); procedure Append (Source : in out Unbounded_String; New_Item : in Character); function "&" (Left, Right : in Unbounded_String) return Unbounded_String; function "&" (Left : in Unbounded_String; Right : in String) return Unbounded_String; function "&" (Left : in String; Right : in Unbounded_String) return Unbounded_String; function "&" (Left : in Unbounded_String; Right : in Character) return Unbounded_String; function "&" (Left : in Character; Right : in Unbounded_String) return Unbounded_String; function Element (Source : in Unbounded_String; Index : in Positive) return Character; procedure Replace_Element (Source : in out Unbounded_String; Index : in Positive; By : in Character); function Slice (Source : in Unbounded_String; Low : in Positive; High : in Natural) return String; function "=" (Left, Right : in Unbounded_String) return Boolean; function "=" (Left : in Unbounded_String; Right : in String) return Boolean; function "=" (Left : in String; Right : in Unbounded_String) return Boolean; function "<" (Left, Right : in Unbounded_String) return Boolean; function "<" (Left : in Unbounded_String; Right : in String) return Boolean; function "<" (Left : in String; Right : in Unbounded_String) return Boolean; function "<=" (Left, Right : in Unbounded_String) return Boolean; function "<=" (Left : in Unbounded_String; Right : in String) return Boolean; function "<=" (Left : in String; Right : in Unbounded_String) return Boolean; function ">" (Left, Right : in Unbounded_String) return Boolean; function ">" (Left : in Unbounded_String; Right : in String) return Boolean; function ">" (Left : in String; Right : in Unbounded_String) return Boolean; function ">=" (Left, Right : in Unbounded_String) return Boolean; function ">=" (Left : in Unbounded_String; Right : in String) return Boolean; function ">=" (Left : in String; Right : in Unbounded_String) return Boolean; -- Search subprograms function Index (Source : in Unbounded_String; Pattern : in String; Going : in Direction := Forward; Mapping : in Maps.Character_Mapping := Maps.Identity) return Natural; function Index (Source : in Unbounded_String; Pattern : in String; Going : in Direction := Forward; Mapping : in Maps.Character_Mapping_Function) return Natural; function Index (Source : in Unbounded_String; Set : in Maps.Character_Set; Test : in Membership := Inside; Going : in Direction := Forward) return Natural; function Index_Non_Blank (Source : in Unbounded_String; Going : in Direction := Forward) return Natural; function Count (Source : in Unbounded_String; Pattern : in String; Mapping : in Maps.Character_Mapping := Maps.Identity) return Natural; function Count (Source : in Unbounded_String; Pattern : in String; Mapping : in Maps.Character_Mapping_Function) return Natural; function Count (Source : in Unbounded_String; Set : in Maps.Character_Set) return Natural; procedure Find_Token (Source : in Unbounded_String; Set : in Maps.Character_Set; Test : in Membership; First : out Positive; Last : out Natural); -- String translation subprograms function Translate (Source : in Unbounded_String; Mapping : in Maps.Character_Mapping) return Unbounded_String; procedure Translate (Source : in out Unbounded_String; Mapping : in Maps.Character_Mapping); function Translate (Source : in Unbounded_String; Mapping : in Maps.Character_Mapping_Function) return Unbounded_String; procedure Translate (Source : in out Unbounded_String; Mapping : in Maps.Character_Mapping_Function); -- String transformation subprograms function Replace_Slice (Source : in Unbounded_String; Low : in Positive; High : in Natural; By : in String) return Unbounded_String; procedure Replace_Slice (Source : in out Unbounded_String; Low : in Positive; High : in Natural; By : in String); function Insert (Source : in Unbounded_String; Before : in Positive; New_Item : in String) return Unbounded_String; procedure Insert (Source : in out Unbounded_String; Before : in Positive; New_Item : in String); function Overwrite (Source : in Unbounded_String; Position : in Positive; New_Item : in String) return Unbounded_String; procedure Overwrite (Source : in out Unbounded_String; Position : in Positive; New_Item : in String); function Delete (Source : in Unbounded_String; From : in Positive; Through : in Natural) return Unbounded_String; procedure Delete (Source : in out Unbounded_String; From : in Positive; Through : in Natural); function Trim (Source : in Unbounded_String; Side : in Trim_End) return Unbounded_String; procedure Trim (Source : in out Unbounded_String; Side : in Trim_End); function Trim (Source : in Unbounded_String; Left : in Maps.Character_Set; Right : in Maps.Character_Set) return Unbounded_String; procedure Trim (Source : in out Unbounded_String; Left : in Maps.Character_Set; Right : in Maps.Character_Set); function Head (Source : in Unbounded_String; Count : in Natural; Pad : in Character := Space) return Unbounded_String; procedure Head (Source : in out Unbounded_String; Count : in Natural; Pad : in Character := Space); function Tail (Source : in Unbounded_String; Count : in Natural; Pad : in Character := Space) return Unbounded_String; procedure Tail (Source : in out Unbounded_String; Count : in Natural; Pad : in Character := Space); function "*" (Left : in Natural; Right : in Character) return Unbounded_String; function "*" (Left : in Natural; Right : in String) return Unbounded_String; function "*" (Left : in Natural; Right : in Unbounded_String) return Unbounded_String; private -- ... -- not specified by the language end Ada.Strings.Unbounded; package Ada.Strings.Maps.Constants is pragma Preelaborate(Constants); Control_Set : constant Character_Set; Graphic_Set : constant Character_Set; Letter_Set : constant Character_Set; Lower_Set : constant Character_Set; Upper_Set : constant Character_Set; Basic_Set : constant Character_Set; Decimal_Digit_Set : constant Character_Set; Hexadecimal_Digit_Set : constant Character_Set; Alphanumeric_Set : constant Character_Set; Special_Set : constant Character_Set; ISO_646_Set : constant Character_Set; Lower_Case_Map : constant Character_Mapping; --Maps to lower case for letters, else identity Upper_Case_Map : constant Character_Mapping; --Maps to upper case for letters, else identity Basic_Map : constant Character_Mapping; --Maps to basic letter for letters, else identity private -- ... -- not specified by the language end Ada.Strings.Maps.Constants; package Ada.Strings.Wide_Maps is pragma Preelaborate(Wide_Maps); -- Representation for a set of Wide_Character values: type Wide_Character_Set is private; Null_Set : constant Wide_Character_Set; type Wide_Character_Range is record Low : Wide_Character; High : Wide_Character; end record; -- Represents Wide_Character range Low..High type Wide_Character_Ranges is array (Positive range <>) of Wide_Character_Range; function To_Set (Ranges : in Wide_Character_Ranges) return Wide_Character_Set; function To_Set (Span : in Wide_Character_Range) return Wide_Character_Set; function To_Ranges (Set : in Wide_Character_Set) return Wide_Character_Ranges; function "=" (Left, Right : in Wide_Character_Set) return Boolean; function "not" (Right : in Wide_Character_Set) return Wide_Character_Set; function "and" (Left, Right : in Wide_Character_Set) return Wide_Character_Set; function "or" (Left, Right : in Wide_Character_Set) return Wide_Character_Set; function "xor" (Left, Right : in Wide_Character_Set) return Wide_Character_Set; function "-" (Left, Right : in Wide_Character_Set) return Wide_Character_Set; function Is_In (Element : in Wide_Character; Set : in Wide_Character_Set) return Boolean; function Is_Subset (Elements : in Wide_Character_Set; Set : in Wide_Character_Set) return Boolean; function "<=" (Left : in Wide_Character_Set; Right : in Wide_Character_Set) return Boolean renames Is_Subset; -- Alternative representation for a set of Wide_Character values: subtype Wide_Character_Sequence is Wide_String; function To_Set (Sequence : in Wide_Character_Sequence) return Wide_Character_Set; function To_Set (Singleton : in Wide_Character) return Wide_Character_Set; function To_Sequence (Set : in Wide_Character_Set) return Wide_Character_Sequence; -- Representation for a Wide_Character to Wide_Character mapping: type Wide_Character_Mapping is private; function Value (Map : in Wide_Character_Mapping; Element : in Wide_Character) return Wide_Character; Identity : constant Wide_Character_Mapping; function To_Mapping (From, To : in Wide_Character_Sequence) return Wide_Character_Mapping; function To_Domain (Map : in Wide_Character_Mapping) return Wide_Character_Sequence; function To_Range (Map : in Wide_Character_Mapping) return Wide_Character_Sequence; type Wide_Character_Mapping_Function is access function (From : in Wide_Character) return Wide_Character; private -- ... -- not specified by the language end Ada.Strings.Wide_Maps; -- The context clause for each of the packages Strings.Wide_Fixed, -- Strings.Wide_Bounded, and Strings.Wide_Unbounded identifies Strings.Wide_Maps -- instead of Strings.Maps. -- -- For each of the packages Strings.Fixed, Strings.Bounded, Strings.- -- Unbounded, and Strings.Maps.Constants the corresponding wide string package -- has the same contents except that -- -- 30 Wide_Space replaces Space -- -- 31 Wide_Character replaces Character -- -- 32 Wide_String replaces String -- -- 33 Wide_Character_Set replaces Character_Set -- -- 34 Wide_Character_Mapping replaces Character_Mapping -- -- 35 Wide_Character_Mapping_Function replaces Character_Mapping_Func- -- tion -- -- 36 Wide_Maps replaces Maps -- -- 37 Bounded_Wide_String replaces Bounded_String -- -- 38 Null_Bounded_Wide_String replaces Null_Bounded_String -- -- 39 To_Bounded_Wide_String replaces To_Bounded_String -- -- 40 To_Wide_String replaces To_String -- -- 41 Unbounded_Wide_String replaces Unbounded_String -- -- 42 Null_Unbounded_Wide_String replaces Null_Unbounded_String -- -- 43 Wide_String_Access replaces String_Access -- -- 44 To_Unbounded_Wide_String replaces To_Unbounded_String -- -- The following additional declaration is present in Strings.Wide_ -- Maps.Wide_Constants: -- -- Character_Set : constant Wide_Maps.Wide_Character_Set; -- -- Contains each Wide_Character value WC such that -- -- Characters.Is_Character(WC) is True -- -- -- NOTES -- (12) If a null Wide_Character_Mapping_Function is passed to any of the -- Wide_String handling subprograms, Constraint_Error is propagated. -- -- (13) Each Wide_Character_Set constant in the package Strings.Wide_ -- Maps.Wide_Constants contains no values outside the Character portion of -- Wide_Character. Similarly, each Wide_Character_Mapping constant in this -- package is the identity mapping when applied to any element outside the -- Character portion of Wide_Character. package Ada.Numerics is pragma Pure(Numerics); Argument_Error : exception; Pi : constant := 3.14159_26535_89793_23846_26433_83279_50288_41971_69399_37511; e : constant := 2.71828_18284_59045_23536_02874_71352_66249_77572_47093_69996; end Ada.Numerics; generic type Float_Type is digits <>; package Ada.Numerics.Generic_Elementary_Functions is pragma Pure(Generic_Elementary_Functions); function Sqrt (X : Float_Type'Base) return Float_Type'Base; function Log (X : Float_Type'Base) return Float_Type'Base; function Log (X, Base : Float_Type'Base) return Float_Type'Base; function Exp (X : Float_Type'Base) return Float_Type'Base; function "**" (Left, Right : Float_Type'Base) return Float_Type'Base; function Sin (X : Float_Type'Base) return Float_Type'Base; function Sin (X, Cycle : Float_Type'Base) return Float_Type'Base; function Cos (X : Float_Type'Base) return Float_Type'Base; function Cos (X, Cycle : Float_Type'Base) return Float_Type'Base; function Tan (X : Float_Type'Base) return Float_Type'Base; function Tan (X, Cycle : Float_Type'Base) return Float_Type'Base; function Cot (X : Float_Type'Base) return Float_Type'Base; function Cot (X, Cycle : Float_Type'Base) return Float_Type'Base; function Arcsin (X : Float_Type'Base) return Float_Type'Base; function Arcsin (X, Cycle : Float_Type'Base) return Float_Type'Base; function Arccos (X : Float_Type'Base) return Float_Type'Base; function Arccos (X, Cycle : Float_Type'Base) return Float_Type'Base; function Arctan (Y : Float_Type'Base; X : Float_Type'Base := 1.0) return Float_Type'Base; function Arctan (Y : Float_Type'Base; X : Float_Type'Base := 1.0; Cycle : Float_Type'Base) return Float_Type'Base; function Arccot (X : Float_Type'Base; Y : Float_Type'Base := 1.0) return Float_Type'Base; function Arccot (X : Float_Type'Base; Y : Float_Type'Base := 1.0; Cycle : Float_Type'Base) return Float_Type'Base; function Sinh (X : Float_Type'Base) return Float_Type'Base; function Cosh (X : Float_Type'Base) return Float_Type'Base; function Tanh (X : Float_Type'Base) return Float_Type'Base; function Coth (X : Float_Type'Base) return Float_Type'Base; function Arcsinh (X : Float_Type'Base) return Float_Type'Base; function Arccosh (X : Float_Type'Base) return Float_Type'Base; function Arctanh (X : Float_Type'Base) return Float_Type'Base; function Arccoth (X : Float_Type'Base) return Float_Type'Base; end Ada.Numerics.Generic_Elementary_Functions; -- The library package Numerics.Elementary_Functions defines the same -- subprograms as Numerics.Generic_Elementary_Functions, except that the -- predefined type Float is systematically substituted for Float_Type'Base -- throughout. Nongeneric equivalents of Numerics.Generic_Elementary_Functions -- for each of the other predefined floating point types are defined similarly, -- with the names Numerics.Short_Elementary_Functions, Numerics.Long_Elementary_ -- Functions, etc. package Ada.Numerics.Float_Random is -- Basic facilities type Generator is limited private; subtype Uniformly_Distributed is Float range 0.0 .. 1.0; function Random (Gen : Generator) return Uniformly_Distributed; procedure Reset (Gen : in Generator; Initiator : in Integer); procedure Reset (Gen : in Generator); -- Advanced facilities type State is private; procedure Save (Gen : in Generator; To_State : out State); procedure Reset (Gen : in Generator; From_State : in State); Max_Image_Width : constant := implementation-defined integer value; function Image (Of_State : State) return String; function Value (Coded_State : String) return State; private -- ... -- not specified by the language end Ada.Numerics.Float_Random; generic type Result_Subtype is (<>); package Ada.Numerics.Discrete_Random is -- Basic facilities type Generator is limited private; function Random (Gen : Generator) return Result_Subtype; procedure Reset (Gen : in Generator; Initiator : in Integer); procedure Reset (Gen : in Generator); -- Advanced facilities type State is private; procedure Save (Gen : in Generator; To_State : out State); procedure Reset (Gen : in Generator; From_State : in State); Max_Image_Width : constant := implementation-defined integer value; function Image (Of_State : State) return String; function Value (Coded_State : String) return State; private -- ... -- not specified by the language end Ada.Numerics.Discrete_Random; with Ada.IO_Exceptions; generic type Element_Type(<>) is private; package Ada.Sequential_IO is type File_Type is limited private; type File_Mode is (In_File, Out_File, Append_File); -- File management procedure Create(File : in out File_Type; Mode : in File_Mode := Out_File; Name : in String := ""; Form : in String := ""); procedure Open (File : in out File_Type; Mode : in File_Mode; Name : in String; Form : in String := ""); procedure Close (File : in out File_Type); procedure Delete(File : in out File_Type); procedure Reset (File : in out File_Type; Mode : in File_Mode); procedure Reset (File : in out File_Type); function Mode (File : in File_Type) return File_Mode; function Name (File : in File_Type) return String; function Form (File : in File_Type) return String; function Is_Open(File : in File_Type) return Boolean; -- Input and output operations procedure Read (File : in File_Type; Item : out Element_Type); procedure Write (File : in File_Type; Item : in Element_Type); function End_Of_File(File : in File_Type) return Boolean; -- Exceptions Status_Error : exception renames IO_Exceptions.Status_Error; Mode_Error : exception renames IO_Exceptions.Mode_Error; Name_Error : exception renames IO_Exceptions.Name_Error; Use_Error : exception renames IO_Exceptions.Use_Error; Device_Error : exception renames IO_Exceptions.Device_Error; End_Error : exception renames IO_Exceptions.End_Error; Data_Error : exception renames IO_Exceptions.Data_Error; private -- ... -- not specified by the language end Ada.Sequential_IO; with Ada.IO_Exceptions; generic type Element_Type is private; package Ada.Direct_IO is type File_Type is limited private; type File_Mode is (In_File, Inout_File, Out_File); type Count is range 0 .. implementation-defined; subtype Positive_Count is Count range 1 .. Count'Last; -- File management procedure Create(File : in out File_Type; Mode : in File_Mode := Inout_File; Name : in String := ""; Form : in String := ""); procedure Open (File : in out File_Type; Mode : in File_Mode; Name : in String; Form : in String := ""); procedure Close (File : in out File_Type); procedure Delete(File : in out File_Type); procedure Reset (File : in out File_Type; Mode : in File_Mode); procedure Reset (File : in out File_Type); function Mode (File : in File_Type) return File_Mode; function Name (File : in File_Type) return String; function Form (File : in File_Type) return String; function Is_Open(File : in File_Type) return Boolean; -- Input and output operations procedure Read (File : in File_Type; Item : out Element_Type; From : in Positive_Count); procedure Read (File : in File_Type; Item : out Element_Type); procedure Write(File : in File_Type; Item : in Element_Type; To : in Positive_Count); procedure Write(File : in File_Type; Item : in Element_Type); procedure Set_Index(File : in File_Type; To : in Positive_Count); function Index(File : in File_Type) return Positive_Count; function Size (File : in File_Type) return Count; function End_Of_File(File : in File_Type) return Boolean; -- Exceptions Status_Error : exception renames IO_Exceptions.Status_Error; Mode_Error : exception renames IO_Exceptions.Mode_Error; Name_Error : exception renames IO_Exceptions.Name_Error; Use_Error : exception renames IO_Exceptions.Use_Error; Device_Error : exception renames IO_Exceptions.Device_Error; End_Error : exception renames IO_Exceptions.End_Error; Data_Error : exception renames IO_Exceptions.Data_Error; private -- ... -- not specified by the language end Ada.Direct_IO; with Ada.IO_Exceptions; with System.Storage_Elements; generic type Element_Type is private; package Ada.Storage_IO is pragma Preelaborate(Storage_IO); Buffer_Size : constant System.Storage_Elements.Storage_Count := implementation-defined; subtype Buffer_Type is System.Storage_Elements.Storage_Array(1..Buffer_Size); -- Input and output operations procedure Read (Buffer : in Buffer_Type; Item : out Element_Type); procedure Write(Buffer : out Buffer_Type; Item : in Element_Type); -- Exceptions Data_Error : exception renames IO_Exceptions.Data_Error; end Ada.Storage_IO; with Ada.IO_Exceptions; package Ada.Text_IO is type File_Type is limited private; type File_Mode is (In_File, Out_File, Append_File); type Count is range 0 .. implementation-defined; subtype Positive_Count is Count range 1 .. Count'Last; Unbounded : constant Count := 0; -- line and page length subtype Field is Integer range 0 .. implementation-defined; subtype Number_Base is Integer range 2 .. 16; type Type_Set is (Lower_Case, Upper_Case); -- File Management procedure Create (File : in out File_Type; Mode : in File_Mode := Out_File; Name : in String := ""; Form : in String := ""); procedure Open (File : in out File_Type; Mode : in File_Mode; Name : in String; Form : in String := ""); procedure Close (File : in out File_Type); procedure Delete (File : in out File_Type); procedure Reset (File : in out File_Type; Mode : in File_Mode); procedure Reset (File : in out File_Type); function Mode (File : in File_Type) return File_Mode; function Name (File : in File_Type) return String; function Form (File : in File_Type) return String; function Is_Open(File : in File_Type) return Boolean; -- Control of default input and output files procedure Set_Input (File : in File_Type); procedure Set_Output(File : in File_Type); procedure Set_Error (File : in File_Type); function Standard_Input return File_Type; function Standard_Output return File_Type; function Standard_Error return File_Type; function Current_Input return File_Type; function Current_Output return File_Type; function Current_Error return File_Type; type File_Access is access constant File_Type; function Standard_Input return File_Access; function Standard_Output return File_Access; function Standard_Error return File_Access; function Current_Input return File_Access; function Current_Output return File_Access; function Current_Error return File_Access; --Buffer control procedure Flush (File : in out File_Type); procedure Flush; -- Specification of line and page lengths procedure Set_Line_Length(File : in File_Type; To : in Count); procedure Set_Line_Length(To : in Count); procedure Set_Page_Length(File : in File_Type; To : in Count); procedure Set_Page_Length(To : in Count); function Line_Length(File : in File_Type) return Count; function Line_Length return Count; function Page_Length(File : in File_Type) return Count; function Page_Length return Count; -- Column, Line, and Page Control procedure New_Line (File : in File_Type; Spacing : in Positive_Count := 1); procedure New_Line (Spacing : in Positive_Count := 1); procedure Skip_Line (File : in File_Type; Spacing : in Positive_Count := 1); procedure Skip_Line (Spacing : in Positive_Count := 1); function End_Of_Line(File : in File_Type) return Boolean; function End_Of_Line return Boolean; procedure New_Page (File : in File_Type); procedure New_Page; procedure Skip_Page (File : in File_Type); procedure Skip_Page; function End_Of_Page(File : in File_Type) return Boolean; function End_Of_Page return Boolean; function End_Of_File(File : in File_Type) return Boolean; function End_Of_File return Boolean; procedure Set_Col (File : in File_Type; To : in Positive_Count); procedure Set_Col (To : in Positive_Count); procedure Set_Line(File : in File_Type; To : in Positive_Count); procedure Set_Line(To : in Positive_Count); function Col (File : in File_Type) return Positive_Count; function Col return Positive_Count; function Line(File : in File_Type) return Positive_Count; function Line return Positive_Count; function Page(File : in File_Type) return Positive_Count; function Page return Positive_Count; -- Character Input-Output procedure Get(File : in File_Type; Item : out Character); procedure Get(Item : out Character); procedure Put(File : in File_Type; Item : in Character); procedure Put(Item : in Character); procedure Look_Ahead (File : in File_Type; Item : out Character; End_Of_Line : out Boolean); procedure Look_Ahead (Item : out Character; End_Of_Line : out Boolean); procedure Get_Immediate(File : in File_Type; Item : out Character); procedure Get_Immediate(Item : out Character); procedure Get_Immediate(File : in File_Type; Item : out Character; Available : out Boolean); procedure Get_Immediate(Item : out Character; Available : out Boolean); -- String Input-Output procedure Get(File : in File_Type; Item : out String); procedure Get(Item : out String); procedure Put(File : in File_Type; Item : in String); procedure Put(Item : in String); procedure Get_Line(File : in File_Type; Item : out String; Last : out Natural); procedure Get_Line(Item : out String; Last : out Natural); procedure Put_Line(File : in File_Type; Item : in String); procedure Put_Line(Item : in String); -- Generic packages for Input-Output of Integer Types generic type Num is range <>; package Integer_IO is Default_Width : Field := Num'Width; Default_Base : Number_Base := 10; procedure Get(File : in File_Type; Item : out Num; Width : in Field := 0); procedure Get(Item : out Num; Width : in Field := 0); procedure Put(File : in File_Type; Item : in Num; Width : in Field := Default_Width; Base : in Number_Base := Default_Base); procedure Put(Item : in Num; Width : in Field := Default_Width; Base : in Number_Base := Default_Base); procedure Get(From : in String; Item : out Num; Last : out Positive); procedure Put(To : out String; Item : in Num; Base : in Number_Base := Default_Base); end Integer_IO; generic type Num is mod <>; package Modular_IO is Default_Width : Field := Num'Width; Default_Base : Number_Base := 10; procedure Get(File : in File_Type; Item : out Num; Width : in Field := 0); procedure Get(Item : out Num; Width : in Field := 0); procedure Put(File : in File_Type; Item : in Num; Width : in Field := Default_Width; Base : in Number_Base := Default_Base); procedure Put(Item : in Num; Width : in Field := Default_Width; Base : in Number_Base := Default_Base); procedure Get(From : in String; Item : out Num; Last : out Positive); procedure Put(To : out String; Item : in Num; Base : in Number_Base := Default_Base); end Modular_IO; -- Generic packages for Input-Output of Real Types generic type Num is digits <>; package Float_IO is Default_Fore : Field := 2; Default_Aft : Field := Num'Digits-1; Default_Exp : Field := 3; procedure Get(File : in File_Type; Item : out Num; Width : in Field := 0); procedure Get(Item : out Num; Width : in Field := 0); procedure Put(File : in File_Type; Item : in Num; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); procedure Put(Item : in Num; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); procedure Get(From : in String; Item : out Num; Last : out Positive); procedure Put(To : out String; Item : in Num; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); end Float_IO; generic type Num is delta <>; package Fixed_IO is Default_Fore : Field := Num'Fore; Default_Aft : Field := Num'Aft; Default_Exp : Field := 0; procedure Get(File : in File_Type; Item : out Num; Width : in Field := 0); procedure Get(Item : out Num; Width : in Field := 0); procedure Put(File : in File_Type; Item : in Num; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); procedure Put(Item : in Num; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); procedure Get(From : in String; Item : out Num; Last : out Positive); procedure Put(To : out String; Item : in Num; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); end Fixed_IO; generic type Num is delta <> digits <>; package Decimal_IO is Default_Fore : Field := Num'Fore; Default_Aft : Field := Num'Aft; Default_Exp : Field := 0; procedure Get(File : in File_Type; Item : out Num; Width : in Field := 0); procedure Get(Item : out Num; Width : in Field := 0); procedure Put(File : in File_Type; Item : in Num; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); procedure Put(Item : in Num; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); procedure Get(From : in String; Item : out Num; Last : out Positive); procedure Put(To : out String; Item : in Num; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); end Decimal_IO; -- Generic package for Input-Output of Enumeration Types generic type Enum is (<>); package Enumeration_IO is Default_Width : Field := 0; Default_Setting : Type_Set := Upper_Case; procedure Get(File : in File_Type; Item : out Enum); procedure Get(Item : out Enum); procedure Put(File : in File_Type; Item : in Enum; Width : in Field := Default_Width; Set : in Type_Set := Default_Setting); procedure Put(Item : in Enum; Width : in Field := Default_Width; Set : in Type_Set := Default_Setting); procedure Get(From : in String; Item : out Enum; Last : out Positive); procedure Put(To : out String; Item : in Enum; Set : in Type_Set := Default_Setting); end Enumeration_IO; -- Exceptions Status_Error : exception renames IO_Exceptions.Status_Error; Mode_Error : exception renames IO_Exceptions.Mode_Error; Name_Error : exception renames IO_Exceptions.Name_Error; Use_Error : exception renames IO_Exceptions.Use_Error; Device_Error : exception renames IO_Exceptions.Device_Error; End_Error : exception renames IO_Exceptions.End_Error; Data_Error : exception renames IO_Exceptions.Data_Error; Layout_Error : exception renames IO_Exceptions.Layout_Error; private -- ... -- not specified by the language end Ada.Text_IO; with Ada.Text_IO; package Ada.Integer_Text_IO is new Ada.Text_IO.Integer_IO(Integer); -- For each predefined signed integer type, a nongeneric equivalent to -- Text_IO.Integer_IO is provided, with names such as Ada.Long_Integer_Text_IO. with Ada.Text_IO; package Ada.Float_Text_IO is new Ada.Text_IO.Float_IO(Float); -- For each predefined floating point type, a nongeneric equivalent to -- Text_IO.Float_IO is provided, with names such as Ada.Long_Float_Text_IO. -- The specification of package Wide_Text_IO is the same as that for -- Text_IO, except that in each Get, Look_Ahead, Get_Immediate, Get_Line, Put, -- and Put_Line procedure, any occurrence of Character is replaced by Wide_ -- Character, and any occurrence of String is replaced by Wide_String. -- -- Nongeneric equivalents of Wide_Text_IO.Integer_IO and Wide_Text_IO.- -- Float_IO are provided (as for Text_IO) for each predefined numeric type, with -- names such as Ada.Integer_Wide_Text_IO, Ada.Long_Integer_Wide_Text_IO, -- Ada.Float_Wide_Text_IO, Ada.Long_Float_Wide_Text_IO. with Ada.IO_Exceptions; package Ada.Streams.Stream_IO is type Stream_Access is access all Root_Stream_Type'Class; type File_Type is limited private; type File_Mode is (In_File, Out_File, Append_File); type Count is range 0 .. implementation-defined; subtype Positive_Count is Count range 1 .. Count'Last; -- Index into file, in stream elements. procedure Create (File : in out File_Type; Mode : in File_Mode := Out_File; Name : in String := ""; Form : in String := ""); procedure Open (File : in out File_Type; Mode : in File_Mode; Name : in String; Form : in String := ""); procedure Close (File : in out File_Type); procedure Delete (File : in out File_Type); procedure Reset (File : in out File_Type; Mode : in File_Mode); procedure Reset (File : in out File_Type); function Mode (File : in File_Type) return File_Mode; function Name (File : in File_Type) return String; function Form (File : in File_Type) return String; function Is_Open (File : in File_Type) return Boolean; function End_Of_File (File : in File_Type) return Boolean; function Stream (File : in File_Type) return Stream_Access; -- Return stream access for use with T'Input and T'Output -- Read array of stream elements from file procedure Read (File : in File_Type; Item : out Stream_Element_Array; Last : out Stream_Element_Offset; From : in Positive_Count); procedure Read (File : in File_Type; Item : out Stream_Element_Array; Last : out Stream_Element_Offset); -- Write array of stream elements into file procedure Write (File : in File_Type; Item : in Stream_Element_Array; To : in Positive_Count); procedure Write (File : in File_Type; Item : in Stream_Element_Array); -- Operations on position within file procedure Set_Index(File : in File_Type; To : in Positive_Count); function Index(File : in File_Type) return Positive_Count; function Size (File : in File_Type) return Count; procedure Set_Mode(File : in out File_Type; Mode : in File_Mode); procedure Flush(File : in out File_Type); -- exceptions Status_Error : exception renames IO_Exceptions.Status_Error; Mode_Error : exception renames IO_Exceptions.Mode_Error; Name_Error : exception renames IO_Exceptions.Name_Error; Use_Error : exception renames IO_Exceptions.Use_Error; Device_Error : exception renames IO_Exceptions.Device_Error; End_Error : exception renames IO_Exceptions.End_Error; Data_Error : exception renames IO_Exceptions.Data_Error; private -- ... -- not specified by the language end Ada.Streams.Stream_IO; with Ada.Streams; package Ada.Text_IO.Text_Streams is type Stream_Access is access all Streams.Root_Stream_Type'Class; function Stream (File : in File_Type) return Stream_Access; end Ada.Text_IO.Text_Streams; with Ada.Streams; package Ada.Wide_Text_IO.Text_Streams is type Stream_Access is access all Streams.Root_Stream_Type'Class; function Stream (File : in File_Type) return Stream_Access; end Ada.Wide_Text_IO.Text_Streams; package Ada.IO_Exceptions is pragma Pure(IO_Exceptions); Status_Error : exception; Mode_Error : exception; Name_Error : exception; Use_Error : exception; Device_Error : exception; End_Error : exception; Data_Error : exception; Layout_Error : exception; end Ada.IO_Exceptions; package Ada.Command_Line is pragma Preelaborate(Command_Line); function Argument_Count return Natural; function Argument (Number : in Positive) return String; function Command_Name return String; type Exit_Status is implementation-defined integer type; Success : constant Exit_Status; Failure : constant Exit_Status; procedure Set_Exit_Status (Code : in Exit_Status); private -- ... -- not specified by the language end Ada.Command_Line; package Interfaces is pragma Pure(Interfaces); type Integer_n is range -2**(n-1) .. 2**(n-1) - 1; --2's complement type Unsigned_n is mod 2**n; function Shift_Left (Value : Unsigned_n; Amount : Natural) return Unsigned_n; function Shift_Right (Value : Unsigned_n; Amount : Natural) return Unsigned_n; function Shift_Right_Arithmetic (Value : Unsigned_n; Amount : Natural) return Unsigned_n; function Rotate_Left (Value : Unsigned_n; Amount : Natural) return Unsigned_n; function Rotate_Right (Value : Unsigned_n; Amount : Natural) return Unsigned_n; -- ... end Interfaces; package Interfaces.C is pragma Pure(C); -- Declarations based on C's CHAR_BIT : constant := implementation-defined; -- typically 8 SCHAR_MIN : constant := implementation-defined; -- typically -128 SCHAR_MAX : constant := implementation-defined; -- typically 127 UCHAR_MAX : constant := implementation-defined; -- typically 255 -- Signed and Unsigned Integers type int is range implementation-defined; type short is range implementation-defined; type long is range implementation-defined; type signed_char is range SCHAR_MIN .. SCHAR_MAX; for signed_char'Size use CHAR_BIT; type unsigned is mod implementation-defined; type unsigned_short is mod implementation-defined; type unsigned_long is mod implementation-defined; type unsigned_char is mod (UCHAR_MAX+1); for unsigned_char'Size use CHAR_BIT; subtype plain_char is implementation-defined; type ptrdiff_t is range implementation-defined; type size_t is mod implementation-defined; -- Floating Point type C_float is digits implementation-defined; type double is digits implementation-defined; type long_double is digits implementation-defined; -- Characters and Strings type char is ; nul : constant char := char'First; function To_C (Item : in Character) return char; function To_Ada (Item : in char) return Character; type char_array is array (size_t range <>) of aliased char; pragma Pack(char_array); for char_array'Component_Size use CHAR_BIT; function Is_Nul_Terminated (Item : in char_array) return Boolean; function To_C (Item : in String; Append_Nul : in Boolean := True) return char_array; function To_Ada (Item : in char_array; Trim_Nul : in Boolean := True) return String; procedure To_C (Item : in String; Target : out char_array; Count : out size_t; Append_Nul : in Boolean := True); procedure To_Ada (Item : in char_array; Target : out String; Count : out Natural; Trim_Nul : in Boolean := True); -- Wide Character and Wide String type wchar_t is implementation-defined; wide_nul : constant wchar_t := wchar_t'First; function To_C (Item : in Wide_Character) return wchar_t; function To_Ada (Item : in wchar_t ) return Wide_Character; type wchar_array is array (size_t range <>) of aliased wchar_t; pragma Pack(wchar_array); function Is_Nul_Terminated (Item : in wchar_array) return Boolean; function To_C (Item : in Wide_String; Append_Nul : in Boolean := True) return wchar_array; function To_Ada (Item : in wchar_array; Trim_Nul : in Boolean := True) return Wide_String; procedure To_C (Item : in Wide_String; Target : out wchar_array; Count : out size_t; Append_Nul : in Boolean := True); procedure To_Ada (Item : in wchar_array; Target : out Wide_String; Count : out Natural; Trim_Nul : in Boolean := True); Terminator_Error : exception; end Interfaces.C; package Interfaces.C.Strings is pragma Preelaborate(Strings); type char_array_access is access all char_array; type chars_ptr is private; type chars_ptr_array is array (size_t range <>) of chars_ptr; Null_Ptr : constant chars_ptr; function To_Chars_Ptr (Item : in char_array_access; Nul_Check : in Boolean := False) return chars_ptr; function New_Char_Array (Chars : in char_array) return chars_ptr; function New_String (Str : in String) return chars_ptr; procedure Free (Item : in out chars_ptr); Dereference_Error : exception; function Value (Item : in chars_ptr) return char_array; function Value (Item : in chars_ptr; Length : in size_t) return char_array; function Value (Item : in chars_ptr) return String; function Value (Item : in chars_ptr; Length : in size_t) return String; function Strlen (Item : in chars_ptr) return size_t; procedure Update (Item : in chars_ptr; Offset : in size_t; Chars : in char_array; Check : in Boolean := True); procedure Update (Item : in chars_ptr; Offset : in size_t; Str : in String; Check : in Boolean := True); Update_Error : exception; private -- ... -- not specified by the language end Interfaces.C.Strings; generic type Index is (<>); type Element is private; type Element_Array is array (Index range <>) of aliased Element; Default_Terminator : Element; package Interfaces.C.Pointers is pragma Preelaborate(Pointers); type Pointer is access all Element; function Value(Ref : in Pointer; Terminator : in Element := Default_Terminator) return Element_Array; function Value(Ref : in Pointer; Length : in ptrdiff_t) return Element_Array; Pointer_Error : exception; -- C-style Pointer arithmetic function "+" (Left : in Pointer; Right : in ptrdiff_t) return Pointer; function "+" (Left : in ptrdiff_t; Right : in Pointer) return Pointer; function "-" (Left : in Pointer; Right : in ptrdiff_t) return Pointer; function "-" (Left : in Pointer; Right : in Pointer) return ptrdiff_t; procedure Increment (Ref : in out Pointer); procedure Decrement (Ref : in out Pointer); pragma Convention (Intrinsic, "+"); pragma Convention (Intrinsic, "-"); pragma Convention (Intrinsic, Increment); pragma Convention (Intrinsic, Decrement); function Virtual_Length (Ref : in Pointer; Terminator : in Element := Default_Terminator) return ptrdiff_t; procedure Copy_Terminated_Array (Source : in Pointer; Target : in Pointer; Limit : in ptrdiff_t := ptrdiff_t'Last; Terminator : in Element := Default_Terminator); procedure Copy_Array (Source : in Pointer; Target : in Pointer; Length : in ptrdiff_t); end Interfaces.C.Pointers; package Interfaces.COBOL is pragma Preelaborate(COBOL); -- Types and operations for internal data representations type Floating is digits implementation-defined; type Long_Floating is digits implementation-defined; type Binary is range implementation-defined; type Long_Binary is range implementation-defined; Max_Digits_Binary : constant := implementation-defined; Max_Digits_Long_Binary : constant := implementation-defined; type Decimal_Element is mod implementation-defined; type Packed_Decimal is array (Positive range <>) of Decimal_Element; pragma Pack(Packed_Decimal); type COBOL_Character is implementation-defined character type; Ada_To_COBOL : array (Character) of COBOL_Character := implementation-defined; COBOL_To_Ada : array (COBOL_Character) of Character := implementation-defined; type Alphanumeric is array (Positive range <>) of COBOL_Character; pragma Pack(Alphanumeric); function To_COBOL (Item : in String) return Alphanumeric; function To_Ada (Item : in Alphanumeric) return String; procedure To_COBOL (Item : in String; Target : out Alphanumeric; Last : out Natural); procedure To_Ada (Item : in Alphanumeric; Target : out String; Last : out Natural); type Numeric is array (Positive range <>) of COBOL_Character; pragma Pack(Numeric); -- Formats for COBOL data representations type Display_Format is private; Unsigned : constant Display_Format; Leading_Separate : constant Display_Format; Trailing_Separate : constant Display_Format; Leading_Nonseparate : constant Display_Format; Trailing_Nonseparate : constant Display_Format; type Binary_Format is private; High_Order_First : constant Binary_Format; Low_Order_First : constant Binary_Format; Native_Binary : constant Binary_Format; type Packed_Format is private; Packed_Unsigned : constant Packed_Format; Packed_Signed : constant Packed_Format; -- Types for external representation of COBOL binary data type Byte is mod 2**COBOL_Character'Size; type Byte_Array is array (Positive range <>) of Byte; pragma Pack (Byte_Array); Conversion_Error : exception; generic type Num is delta <> digits <>; package Decimal_Conversions is -- Display Formats: data values are represented as Numeric function Valid (Item : in Numeric; Format : in Display_Format) return Boolean; function Length (Format : in Display_Format) return Natural; function To_Decimal (Item : in Numeric; Format : in Display_Format) return Num; function To_Display (Item : in Num; Format : in Display_Format) return Numeric; -- Packed Formats: data values are represented as Packed_Decimal function Valid (Item : in Packed_Decimal; Format : in Packed_Format) return Boolean; function Length (Format : in Packed_Format) return Natural; function To_Decimal (Item : in Packed_Decimal; Format : in Packed_Format) return Num; function To_Packed (Item : in Num; Format : in Packed_Format) return Packed_Decimal; -- Binary Formats: external data values are represented as Byte_Array function Valid (Item : in Byte_Array; Format : in Binary_Format) return Boolean; function Length (Format : in Binary_Format) return Natural; function To_Decimal (Item : in Byte_Array; Format : in Binary_Format) return Num; function To_Binary (Item : in Num; Format : in Binary_Format) return Byte_Array; -- Internal Binary formats: data values are of type Binary or Long_Binary function To_Decimal (Item : in Binary) return Num; function To_Decimal (Item : in Long_Binary) return Num; function To_Binary (Item : in Num) return Binary; function To_Long_Binary (Item : in Num) return Long_Binary; end Decimal_Conversions; private -- ... -- not specified by the language end Interfaces.COBOL; with Ada.Numerics.Generic_Complex_Types; -- see G.1.1 pragma Elaborate_All(Ada.Numerics.Generic_Complex_Types); package Interfaces.Fortran is pragma Pure(Fortran); type Fortran_Integer is range implementation-defined; type Real is digits implementation-defined; type Double_Precision is digits implementation-defined; type Logical is new Boolean; package Single_Precision_Complex_Types is new Ada.Numerics.Generic_Complex_Types (Real); type Complex is new Single_Precision_Complex_Types.Complex; subtype Imaginary is Single_Precision_Complex_Types.Imaginary; i : Imaginary renames Single_Precision_Complex_Types.i; j : Imaginary renames Single_Precision_Complex_Types.j; type Character_Set is implementation-defined character type; type Fortran_Character is array (Positive range <>) of Character_Set; pragma Pack (Fortran_Character); function To_Fortran (Item : in Character) return Character_Set; function To_Ada (Item : in Character_Set) return Character; function To_Fortran (Item : in String) return Fortran_Character; function To_Ada (Item : in Fortran_Character) return String; procedure To_Fortran (Item : in String; Target : out Fortran_Character; Last : out Natural); procedure To_Ada (Item : in Fortran_Character; Target : out String; Last : out Natural); end Interfaces.Fortran; with System; package Ada.Interrupts is type Interrupt_ID is implementation-defined; type Parameterless_Handler is access protected procedure; function Is_Reserved (Interrupt : Interrupt_ID) return Boolean; function Is_Attached (Interrupt : Interrupt_ID) return Boolean; function Current_Handler (Interrupt : Interrupt_ID) return Parameterless_Handler; procedure Attach_Handler (New_Handler : in Parameterless_Handler; Interrupt : in Interrupt_ID); procedure Exchange_Handler (Old_Handler : out Parameterless_Handler; New_Handler : in Parameterless_Handler; Interrupt : in Interrupt_ID); procedure Detach_Handler (Interrupt : in Interrupt_ID); function Reference(Interrupt : Interrupt_ID) return System.Address; private -- ... -- not specified by the language end Ada.Interrupts; package Ada.Interrupts.Names is implementation-defined : constant Interrupt_ID := implementation-defined; -- . . . implementation-defined : constant Interrupt_ID := implementation-defined; end Ada.Interrupts.Names; package Ada.Task_Identification is type Task_ID is private; Null_Task_ID : constant Task_ID; function "=" (Left, Right : Task_ID) return Boolean; function Image (T : Task_ID) return String; function Current_Task return Task_ID; procedure Abort_Task (T : in out Task_ID); function Is_Terminated(T : Task_ID) return Boolean; function Is_Callable (T : Task_ID) return Boolean; private -- ... -- not specified by the language end Ada.Task_Identification; with Ada.Task_Identification; use Ada.Task_Identification; generic type Attribute is private; Initial_Value : in Attribute; package Ada.Task_Attributes is type Attribute_Handle is access all Attribute; function Value(T : Task_ID := Current_Task) return Attribute; function Reference(T : Task_ID := Current_Task) return Attribute_Handle; procedure Set_Value(Val : in Attribute; T : in Task_ID := Current_Task); procedure Reinitialize(T : in Task_ID := Current_Task); end Ada.Task_Attributes; with System; with Ada.Task_Identification; -- See C.7.1 package Ada.Dynamic_Priorities is procedure Set_Priority(Priority : in System.Any_Priority; T : in Ada.Task_Identification.Task_ID := Ada.Task_Identification.Current_Task); function Get_Priority (T : Ada.Task_Identification.Task_ID := Ada.Task_Identification.Current_Task) return System.Any_Priority; end Ada.Dynamic_Priorities; package Ada.Real_Time is type Time is private; Time_First : constant Time; Time_Last : constant Time; Time_Unit : constant := implementation-defined-real-number; type Time_Span is private; Time_Span_First : constant Time_Span; Time_Span_Last : constant Time_Span; Time_Span_Zero : constant Time_Span; Time_Span_Unit : constant Time_Span; Tick : constant Time_Span; function Clock return Time; function "+" (Left : Time; Right : Time_Span) return Time; function "+" (Left : Time_Span; Right : Time) return Time; function "-" (Left : Time; Right : Time_Span) return Time; function "-" (Left : Time; Right : Time) return Time_Span; function "<" (Left, Right : Time) return Boolean; function "<="(Left, Right : Time) return Boolean; function ">" (Left, Right : Time) return Boolean; function ">="(Left, Right : Time) return Boolean; function "+" (Left, Right : Time_Span) return Time_Span; function "-" (Left, Right : Time_Span) return Time_Span; function "-" (Right : Time_Span) return Time_Span; function "*" (Left : Time_Span; Right : Integer) return Time_Span; function "*" (Left : Integer; Right : Time_Span) return Time_Span; function "/" (Left, Right : Time_Span) return Integer; function "/" (Left : Time_Span; Right : Integer) return Time_Span; function "abs"(Right : Time_Span) return Time_Span; function "<" (Left, Right : Time_Span) return Boolean; function "<="(Left, Right : Time_Span) return Boolean; function ">" (Left, Right : Time_Span) return Boolean; function ">="(Left, Right : Time_Span) return Boolean; function To_Duration (TS : Time_Span) return Duration; function To_Time_Span (D : Duration) return Time_Span; function Nanoseconds (NS : Integer) return Time_Span; function Microseconds (US : Integer) return Time_Span; function Milliseconds (MS : Integer) return Time_Span; type Seconds_Count is range implementation-defined; procedure Split(T : in Time; SC : out Seconds_Count; TS : out Time_Span); function Time_Of(SC : Seconds_Count; TS : Time_Span) return Time; private -- ... -- not specified by the language end Ada.Real_Time; package Ada.Synchronous_Task_Control is type Suspension_Object is limited private; procedure Set_True(S : in out Suspension_Object); procedure Set_False(S : in out Suspension_Object); function Current_State(S : Suspension_Object) return Boolean; procedure Suspend_Until_True(S : in out Suspension_Object); private -- ... -- not specified by the language end Ada.Synchronous_Task_Control; with Ada.Task_Identification; package Ada.Asynchronous_Task_Control is procedure Hold(T : in Ada.Task_Identification.Task_ID); procedure Continue(T : in Ada.Task_Identification.Task_ID); function Is_Held(T : Ada.Task_Identification.Task_ID) return Boolean; end Ada.Asynchronous_Task_Control; with Ada.Streams; -- see 13.13.1 package System.RPC is type Partition_ID is range 0 .. implementation-defined; Communication_Error : exception; type Params_Stream_Type( Initial_Size : Ada.Streams.Stream_Element_Count) is new Ada.Streams.Root_Stream_Type with private; procedure Read( Stream : in out Params_Stream_Type; Item : out Ada.Streams.Stream_Element_Array; Last : out Ada.Streams.Stream_Element_Offset); procedure Write( Stream : in out Params_Stream_Type; Item : in Ada.Streams.Stream_Element_Array); -- Synchronous call procedure Do_RPC( Partition : in Partition_ID; Params : access Params_Stream_Type; Result : access Params_Stream_Type); -- Asynchronous call procedure Do_APC( Partition : in Partition_ID; Params : access Params_Stream_Type); -- The handler for incoming RPCs type RPC_Receiver is access procedure( Params : access Params_Stream_Type; Result : access Params_Stream_Type); procedure Establish_RPC_Receiver( Partition : in Partition_ID; Receiver : in RPC_Receiver); private -- ... -- not specified by the language end System.RPC; package Ada.Decimal is pragma Pure(Decimal); Max_Scale : constant := implementation-defined; Min_Scale : constant := implementation-defined; Min_Delta : constant := 10.0**(-Max_Scale); Max_Delta : constant := 10.0**(-Min_Scale); Max_Decimal_Digits : constant := implementation-defined; generic type Dividend_Type is delta <> digits <>; type Divisor_Type is delta <> digits <>; type Quotient_Type is delta <> digits <>; type Remainder_Type is delta <> digits <>; procedure Divide (Dividend : in Dividend_Type; Divisor : in Divisor_Type; Quotient : out Quotient_Type; Remainder : out Remainder_Type); pragma Convention(Intrinsic, Divide); end Ada.Decimal; package Ada.Text_IO.Editing is type Picture is private; function Valid (Pic_String : in String; Blank_When_Zero : in Boolean := False) return Boolean; function To_Picture (Pic_String : in String; Blank_When_Zero : in Boolean := False) return Picture; function Pic_String (Pic : in Picture) return String; function Blank_When_Zero (Pic : in Picture) return Boolean; Max_Picture_Length : constant := implementation_defined; Picture_Error : exception; Default_Currency : constant String := "$"; Default_Fill : constant Character := '*'; Default_Separator : constant Character := ','; Default_Radix_Mark : constant Character := '.'; generic type Num is delta <> digits <>; Default_Currency : in String := Text_IO.Editing.Default_Currency; Default_Fill : in Character := Text_IO.Editing.Default_Fill; Default_Separator : in Character := Text_IO.Editing.Default_Separator; Default_Radix_Mark : in Character := Text_IO.Editing.Default_Radix_Mark; package Decimal_Output is function Length (Pic : in Picture; Currency : in String := Default_Currency) return Natural; function Valid (Item : in Num; Pic : in Picture; Currency : in String := Default_Currency) return Boolean; function Image (Item : in Num; Pic : in Picture; Currency : in String := Default_Currency; Fill : in Character := Default_Fill; Separator : in Character := Default_Separator; Radix_Mark : in Character := Default_Radix_Mark) return String; procedure Put (File : in File_Type; Item : in Num; Pic : in Picture; Currency : in String := Default_Currency; Fill : in Character := Default_Fill; Separator : in Character := Default_Separator; Radix_Mark : in Character := Default_Radix_Mark); procedure Put (Item : in Num; Pic : in Picture; Currency : in String := Default_Currency; Fill : in Character := Default_Fill; Separator : in Character := Default_Separator; Radix_Mark : in Character := Default_Radix_Mark); procedure Put (To : out String; Item : in Num; Pic : in Picture; Currency : in String := Default_Currency; Fill : in Character := Default_Fill; Separator : in Character := Default_Separator; Radix_Mark : in Character := Default_Radix_Mark); end Decimal_Output; private -- ... -- not specified by the language end Ada.Text_IO.Editing; -- The child package Wide_Text_IO.Editing has the same contents as -- Text_IO.Editing, except that: -- -- each occurrence of Character is replaced by Wide_Character, -- -- each occurrence of Text_IO is replaced by Wide_Text_IO, -- -- the subtype of Default_Currency is Wide_String rather than -- String, and -- -- each occurrence of String in the generic package Decimal_Output -- is replaced by Wide_String. -- -- -- NOTES -- (5) Each of the functions Wide_Text_IO.Editing.Valid, To_Picture, and -- Pic_String has String (versus Wide_String) as its parameter or result -- subtype, since a picture String is not localizable. generic type Real is digits <>; package Ada.Numerics.Generic_Complex_Types is pragma Pure(Generic_Complex_Types); type Complex is record Re, Im : Real'Base; end record; type Imaginary is private; i : constant Imaginary; j : constant Imaginary; function Re (X : Complex) return Real'Base; function Im (X : Complex) return Real'Base; function Im (X : Imaginary) return Real'Base; procedure Set_Re (X : in out Complex; Re : in Real'Base); procedure Set_Im (X : in out Complex; Im : in Real'Base); procedure Set_Im (X : out Imaginary; Im : in Real'Base); function Compose_From_Cartesian (Re, Im : Real'Base) return Complex; function Compose_From_Cartesian (Re : Real'Base) return Complex; function Compose_From_Cartesian (Im : Imaginary) return Complex; function Modulus (X : Complex) return Real'Base; function "abs" (Right : Complex) return Real'Base renames Modulus; function Argument (X : Complex) return Real'Base; function Argument (X : Complex; Cycle : Real'Base) return Real'Base; function Compose_From_Polar (Modulus, Argument : Real'Base) return Complex; function Compose_From_Polar (Modulus, Argument, Cycle : Real'Base) return Complex; function "+" (Right : Complex) return Complex; function "-" (Right : Complex) return Complex; function Conjugate (X : Complex) return Complex; function "+" (Left, Right : Complex) return Complex; function "-" (Left, Right : Complex) return Complex; function "*" (Left, Right : Complex) return Complex; function "/" (Left, Right : Complex) return Complex; function "**" (Left : Complex; Right : Integer) return Complex; function "+" (Right : Imaginary) return Imaginary; function "-" (Right : Imaginary) return Imaginary; function Conjugate (X : Imaginary) return Imaginary renames "-"; function "abs" (Right : Imaginary) return Real'Base; function "+" (Left, Right : Imaginary) return Imaginary; function "-" (Left, Right : Imaginary) return Imaginary; function "*" (Left, Right : Imaginary) return Real'Base; function "/" (Left, Right : Imaginary) return Real'Base; function "**" (Left : Imaginary; Right : Integer) return Complex; function "<" (Left, Right : Imaginary) return Boolean; function "<=" (Left, Right : Imaginary) return Boolean; function ">" (Left, Right : Imaginary) return Boolean; function ">=" (Left, Right : Imaginary) return Boolean; function "+" (Left : Complex; Right : Real'Base) return Complex; function "+" (Left : Real'Base; Right : Complex) return Complex; function "-" (Left : Complex; Right : Real'Base) return Complex; function "-" (Left : Real'Base; Right : Complex) return Complex; function "*" (Left : Complex; Right : Real'Base) return Complex; function "*" (Left : Real'Base; Right : Complex) return Complex; function "/" (Left : Complex; Right : Real'Base) return Complex; function "/" (Left : Real'Base; Right : Complex) return Complex; function "+" (Left : Complex; Right : Imaginary) return Complex; function "+" (Left : Imaginary; Right : Complex) return Complex; function "-" (Left : Complex; Right : Imaginary) return Complex; function "-" (Left : Imaginary; Right : Complex) return Complex; function "*" (Left : Complex; Right : Imaginary) return Complex; function "*" (Left : Imaginary; Right : Complex) return Complex; function "/" (Left : Complex; Right : Imaginary) return Complex; function "/" (Left : Imaginary; Right : Complex) return Complex; function "+" (Left : Imaginary; Right : Real'Base) return Complex; function "+" (Left : Real'Base; Right : Imaginary) return Complex; function "-" (Left : Imaginary; Right : Real'Base) return Complex; function "-" (Left : Real'Base; Right : Imaginary) return Complex; function "*" (Left : Imaginary; Right : Real'Base) return Imaginary; function "*" (Left : Real'Base; Right : Imaginary) return Imaginary; function "/" (Left : Imaginary; Right : Real'Base) return Imaginary; function "/" (Left : Real'Base; Right : Imaginary) return Imaginary; private type Imaginary is new Real'Base; i : constant Imaginary := 1.0; j : constant Imaginary := 1.0; end Ada.Numerics.Generic_Complex_Types; with Ada.Numerics.Generic_Complex_Types; generic with package Complex_Types is new Ada.Numerics.Generic_Complex_Types (<>\); use Complex_Types; package Ada.Numerics.Generic_Complex_Elementary_Functions is pragma Pure(Generic_Complex_Elementary_Functions); function Sqrt (X : Complex) return Complex; function Log (X : Complex) return Complex; function Exp (X : Complex) return Complex; function Exp (X : Imaginary) return Complex; function "**" (Left : Complex; Right : Complex) return Complex; function "**" (Left : Complex; Right : Real'Base) return Complex; function "**" (Left : Real'Base; Right : Complex) return Complex; function Sin (X : Complex) return Complex; function Cos (X : Complex) return Complex; function Tan (X : Complex) return Complex; function Cot (X : Complex) return Complex; function Arcsin (X : Complex) return Complex; function Arccos (X : Complex) return Complex; function Arctan (X : Complex) return Complex; function Arccot (X : Complex) return Complex; function Sinh (X : Complex) return Complex; function Cosh (X : Complex) return Complex; function Tanh (X : Complex) return Complex; function Coth (X : Complex) return Complex; function Arcsinh (X : Complex) return Complex; function Arccosh (X : Complex) return Complex; function Arctanh (X : Complex) return Complex; function Arccoth (X : Complex) return Complex; end Ada.Numerics.Generic_Complex_Elementary_Functions; -- The library package Numerics.Complex_Elementary_Functions defines the -- same subprograms as Numerics.Generic_Complex_Elementary_Functions, except -- that the predefined type Float is systematically substituted for Real'Base, -- and the Complex and Imaginary types exported by Numerics.Complex_Types are -- systematically substituted for Complex and Imaginary, throughout. Nongeneric -- equivalents of Numerics.Generic_Complex_Elementary_Functions corresponding to -- each of the other predefined floating point types are defined similarly, with -- the names Numerics.Short_Complex_Elementary_Functions, Numerics.Long_Complex_ -- Elementary_Functions, etc. with Ada.Numerics.Generic_Complex_Types; generic with package Complex_Types is new Ada.Numerics.Generic_Complex_Types (<>\); package Ada.Text_IO.Complex_IO is use Complex_Types; Default_Fore : Field := 2; Default_Aft : Field := Real'Digits - 1; Default_Exp : Field := 3; procedure Get (File : in File_Type; Item : out Complex; Width : in Field := 0); procedure Get (Item : out Complex; Width : in Field := 0); procedure Put (File : in File_Type; Item : in Complex; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); procedure Put (Item : in Complex; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); procedure Get (From : in String; Item : out Complex; Last : out Positive); procedure Put (To : out String; Item : in Complex; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); end Ada.Text_IO.Complex_IO; with Ada.Unchecked_Conversion; generic function Unchecked_Conversion renames Ada.Unchecked_Conversion; with Ada.Unchecked_Deallocation; generic procedure Unchecked_Deallocation renames Ada.Unchecked_Deallocation; with Ada.Sequential_IO; generic package Sequential_IO renames Ada.Sequential_IO; with Ada.Direct_IO; generic package Direct_IO renames Ada.Direct_IO; with Ada.Text_IO; package Text_IO renames Ada.Text_IO; with Ada.IO_Exceptions; package IO_Exceptions renames Ada.IO_Exceptions; with Ada.Calendar; package Calendar renames Ada.Calendar; with System.Machine_Code; package Machine_Code renames System.Machine_Code; -- If supported.