260 Ada 95 QUALITY AND STYLE APPENDIX A 259 APPENDIX A Map From Ada 95 Reference Manual to Guidelines 1. General 1.1 Scope 1.1.1 Extent 1.1.2 Structure7.1.7 1.1.3 Conformity of an Implementation With the Standard7.1.6, 7.6.5 1.1.4 Method of Description and Syntax Notation2.1.2, 2.1.8 1.1.5 Classification of Errors 5.9 1.2 Normative References 1.3 Definitions 2. Lexical Elements 2.1 Character Set 2.2 Lexical Elements, Separators, and Delimiters 2.1.1 2.3 Identifiers 3.1.1, 3.1.3, 3.1.4, 3.2, 5.2.1, 5.5.4, 8.1.1, 8.1.2 2.4 Numeric Literals 3.1.2, 3.2.6 2.4.1 Decimal Literals 2.4.2 Based Literals3.1.2 2.5 Character Literals 3.2.6 2.6 String Literals 2.1.1, 2.1.2, 2.1.4, 3.2.6 2.7 Comments 2.1.4, 2.1.7, 3.3, 5.2.1, 5.6.7,5.6.8, 7.1.3, 7.1.5, 7.2.5, 8.2.3, 8.3.6 2.8 Pragmas 8.4.3, 10.7 2.9 Reserved Words 3.1.3 3. Declarations and Types 2.1.4, 2.1.6, 2.1.8, 4.1.5, 5.3 3.1 Declarations 2.1.4, 3.2.1 3.2 Types and Subtypes 3.2.2, 3.4.1, 4.1.7, 7.2.1, 7.2.6, 8.1, 8.2.3, 8.2.4 3.2.1 Type Declarations2.1.4, 3.3.5, 5.3.2 3.2.2 Subtype Declarations2.1.4, 3.3.5, 5.3.1, 5.4.1, 5.5.1, 5.6.3, 5.7.2, 7.2.6, 10.5.4, 10.6.6 3.2.3 Classification of Operations 3.3 Objects and Named Numbers 3.2.3, 3.2.6, 4.1.7, 8.2.1 3.3.1 Object Declarations2.1.4, 3.3.5, 4.1.8, 5.9.6, 6.1.1, 6.1.4 3.3.2 Number Declarations2.1.4, 3.3.4 3.4 Derived Types and Classes 3.4.1, 5.3.1, 7.2.6 3.4.1 Derivation Classes9.3.2 3.5 Scalar Types 3.4.1, 5.3.1, 5.5.1, 8.2.4 3.5.1 Enumeration Types 2.1.4, 3.4.2, 5.6.3, 5.7.1 3.5.2 Character Types 3.5.3 Boolean Types2.1.3, 3.2.3 3.5.4 Integer Types 5.4.8, 7.1.2, 7.2.1, 7.2.4, 7.2.5, 10.6.3 3.5.5 Operations of Discrete Types 3.5.6 Real Types 7.1.2, 5.5.6, 7.2.4, 7.2.5 3.5.7 Floating Point Types 7.2.1, 7.2.2, 7.2.3, 7.2.4 3.5.8 Operations of Floating Point Types 3.5.9 Fixed Point Types 7.1.2, 7.2.1, 7.2.4 3.5.10 Operations of Fixed Point Types 3.6 Array Types 5.3.2, 5.5.1, 5.5.2, 8.2.2, 8.3.5, 10.4.1, 10.4.2, 10.4.4, 10.5.5 3.6.1 Index Constraints and Discrete Ranges 5.5.2, 10.4.1, 10.4.2, 10.4.4 3.6.2 Operations of Array Types5.5.1, 5.5.2, 5.6.2 3.6.3 String Types2.1.1 3.7 Discriminants 5.3.2, 5.4.1, 5.4.7, 6.1.3 3.7.1 Discriminant Constraints5.4.1 3.7.2 Operations of Discriminated Types 3.8 Record Types2.1.2, 5.4.2, 5.4.3, 5.4.4, 5.4.5, 10.4.3, 10.4.4 3.8.1 Variant Parts and Discrete Choices5.4.3, 9.3.5 3.9 Tagged Types and Type Extensions5.4.3, 6.1.8, 8.3.8, 8.4.8, 9 3.9.1 Type Extensions5.3.1, 5.4.4, 9.2.1, 10.6.1 3.9.2 Dispatching Operations of Tagged Types5.3.4, 9.2.2, 9.3.1, 9.3.2, 9.3.4, 9.3.5, 10.5.8 3.9.3 Abstract Types and Subprograms9.2.4, 9.3.1, 9.3.3 3.10 Access Types5.3.4, 5.4.6, 5.4.5, 5.9.2, 5.9.3, 5.9.6, 6.1.5, 7.6.6, 7.7.3, 8.4.6 3.10.1 Incomplete Type Declarations5.4.5 3.10.2 Operations of Access Types7.3.2 3.11 Declarative Parts 2.1.4, 5.9.6 3.11.1 Completions of Declarations 4. Names and Expressions 4.1 Names 3.2, 8.1.1, 8.1.2 4.1.1 Indexed Components 4.1.2 Slices5.6.2 4.1.3 Selected Components 4.1.4 Attributes8.2.4 4.2 Literals 8.2.4 4.3 Aggregates 4.3.1 Record Aggregates5.6.10, 10.4.5 4.3.2 Extension Aggregates10.4.5 4.3.3 Array Aggregates 4.4 Expressions2.1.1, 2.1.3, 2.1.5, 5.5, 5.5.3, 7.2.6, 7.2.7, 10.5.1 4.5 Operators and Expression Evaluation 2.1.1, 2.1.3, 5.5.3, 5.7.1, 5.7.2, 5.7.4, 7.2.6 4.5.1 Logical Operators and Short-Circuit Control Forms5.4.8, 5.5.4, 5.5.5, 10.5.2, 10.5.7, 10.6.3 4.5.2 Relational Operators and Membership Tests 2.1.1, 5.5.6, 5.7.5, 7.2.7, 7.3.2 4.5.3 Binary Adding Operators 2.1.3, 5.7.4 4.5.4 Unary Adding Operators 4.5.5 Multiplying Operators2.1.3 4.5.6 Highest Precedence Operators5.5.3 4.6 Type Conversions 5.9.1 4.7 Qualified Expressions 4.8 Allocators 5.4.5, 6.1.5, 7.6.6 4.9 Static Expressions and Static Subtypes 3.2.6, 8.2.1 4.9.1 Statically Matching Constraints and Subtypes 5. Statements 2.1.2, 2.1.6, 2.1.8, 3.3.6, 5.6 5.1 Simple and Compound Statements—Sequences of Statements2.1.2, 2.1.8, 5.6.1 5.2 Assignment Statements 2.1.3, 5.6.2, 10.5.6 5.3 If Statements 2.1.2, 2.1.5, 3.3.7, 5.6.1, 5.6.3, 5.6.5, 10.5.2, 10.5.3, 10.5.6, 10.5.8 5.4 Case Statements 2.1.2, 3.3.7, 5.6.1, 5.6.3, 10.5.3 5.5 Loop Statements2.1.2, 5.1.1, 5.5.1, 5.6.1, 5.6.2, 5.6.4, 5.6.6, 7.4.2 5.6 Block Statements 3.3.7, 5.1.2, 5.6.1, 5.6.9, 5.8.4, 10.3.1 5.7 Exit Statements 5.1.1, 5.1.3, 5.6.4, 5.6.5 5.8 Goto Statements 5.6.7, 5.8.1 6. Subprograms 2.1.1, 3.2.5, 4.1.3, 4.1.4, 4.1.7, 4.3.1, 5.9.6 6.1 Subprogram Declarations 2.1.2, 3.2.5, 3.3.3, 4.1.1, 4.1.5, 4.1.7, 4.2.1, 4.3.1, 5.2.1, 5.2.3, 5.3.2, 5.6.6, 7.1.3, 7.1.4 6.2 Formal Parameter Modes 2.1.5, 5.2.4, 7.1.8 6.3 Subprogram Bodies 2.1.2, 2.1.7, 3.3.4, 3.3.7, 5.1.4, 10.7.1 6.3.1 Conformance Rules 6.3.2 Inline Expansion of Subprograms10.7.1 6.4 Subprogram Calls 2.1.1, 4.1.4, 5.2.2, 5.6.6, 7.1.9 6.4.1 Parameter Associations 5.2.2, 5.2.3 6.5 Return Statements 5.6.8 6.6 Overloading of Operators 4.2.1, 5.7.3, 5.7.5, 8.2.5 7. Packages 2.1.2, 4.1.5, 4.1.7, 4.2.1, 4.3, 7.1.5 7.1 Package Specifications and Declarations 2.1.7, 3.2.5, 3.3.3, 4.1.1, 4.1.8, 4.2.1, 4.2.2, 4.2.3 4.2.4, 4.3.1,5.1.4, 6.1.1, 7.1.3, 7.1.5, 8.1, 8.2.6, 8.3.1 7.2 Package Bodies 2.1.7, 3.3.4, 4.1.1, 4.2.1, 4.2.3, 4.3.1 5.1.4, 5.9.1, 6.1.1 7.3 Private Types and Private Extensions 5.3.3 7.3.1 Private Operations 7.4 Deferred Constants 7.5 Limited Types 5.3.3, 5.7.5, 8.3.5 7.6 User-Defined Assignment and Finalization5.3.3, 5.4.5, 8.3.1, 9.2.3 7.6.1 Completion and Finalization5.9.8, 5.9.10 8. Visibility Rules 4.2, 5.7 8.1 Declarative Region 4.2.3 8.2 Scope of Declarations 4.1.8, 4.2.3, 7.6.6 8.3 Visibility 4.1.4, 4.1.5, 4.2.1, 4.2.3, 5.7.1, 5.7.3, 5.7.4, 5.7.5 8.4 Use Clauses 5.6.9, 5.7.1, 5.7.2 8.5 Renaming Declarations 3.4.1 8.5.1 Object Renaming Declarations5.6.9, 5.7.2 8.5.2 Exception Renaming Declarations 5.7.2 8.5.3 Package Renaming Declarations5.7.1 8.5.4 Subprogram Renaming Declarations5.7.2 8.5.5 Generic Renaming Declarations 8.6 The Context of Overload Resolution5.7.3, 5.7.4, 5.7.5, 8.2.5, 9.3.4 9. Tasks and Synchronization 4.1.9, 4.2.4, 6, 6.1, 7.4 9.1 Task Units and Task Objects2.1.7, 3.2.5, 3.3.7, 5.1.4, 6.1.2, 6.1.4, 6.1.5, 6.1.6 6.2.1, 6.3.4, 7.1.3, 8.4.3 9.2 Task Execution-Task Activation6.1.2, 6.1.5, 6.1.6, 6.1.7, 6.3.2, 7.4.1, 7.4.2, 7.4.5, 8.2.6 9.3 Task Dependence-Termination of Tasks 6.1.2, 6.2.3, 6.3 9.4 Protected Units and Protected Objects4.1.10, 5.9.9, 6.1.1, 6.1.2, 6.1.4, 6.1.5, 6.1.6, 6.1.8, 6.2.1, 10.6.2 9.5 Intertask Communication 4.1.10, 6.1.1, 6.1.2, 6.2 9.5.1 Protected Subprograms and Protected Actions4.1.10, 5.9.9, 6.1.1, 6.2 9.5.2 Entries and Accept Statements3.2.5, 4.3.1, 5.1.4, 5.2.1, 5.2.4, 5.6.1, 5.9.4, 6.1.2, 6.1.3, 6.1.6, 6.2, 6.2.1, 6.3.1, 6.3.2, 6.3.4, 7.4.5, 7.4.7 9.5.3 Entry Calls3.2.5, 4.3.1, 5.1.4, 5.2.1, 5.2.4, 5.6.1, 5.9.4, 6.1.1, 6.1.2, 6.1.6, 6.2, 6.3.1, 6.3.2, 6.3.5, 7.4.5, 7.4.7 9.5.4 Requeue Statements 9.6 Delay Statements, Duration, and Time6.1.7, 6.2.5, 7.1.2, 7.4.2, 7.4.3 9.7 Select Statements 2.1.2, 5.6.1, 6.2.1, 6.2.6, 6.3.4 9.7.1 Selective Accept 5.9.10, 6.2.1, 6.2.2, 6.2.4, 6.2.5, 6.3.2, 6.3.4, 7.4.4 9.7.2 Timed Entry Calls 4.2.4, 6.1.7, 6.2.5 9.7.3 Conditional Entry Calls 4.2.4, 6.2.5 9.7.4 Asynchronous Transfer of Control 9.8 Abort of a Task—Abort of a Sequence of Statements 5.9.10, 6.3.3, 7.4.6 9.9 Task and Entry Attributes 6.2.3 9.10 Shared Variables 6.1.1, 6.2.4, 7.4.7 9.11 Example of Tasking and Synchronization 4.1.10, 6.1.1, 6.1.2 10. Program Structure and Compilation Issues 4.1.1, 8.4.1 10.1 Separate Compilation 10.1.1 Compilation Units—Library Units 3.3.2, 3.3.3, 3.3.4, 4.1.1, 4.1.6, 4.2.2, 4.2.3, 7.1.4, 8.4 10.1.2 Context Clauses—With Clauses 2.1.2, 4.2.1, 4.2.3, 8.2.6, 8.4.2, 8.4.3 10.1.3 Subunits of Compilation Units 4.1.1, 4.2.3 10.1.4 The Compilation Process 10.1.5 Pragmas and Program Units4.1.2 10.1.6 Environment-Level Visibility Rules 10.2 Program Execution 7.1.4 10.2.1 Elaboration Control 8.4.3 11. Exceptions 4.3, 5.8, 7.5 11.1 Exception Declarations 3.3.5, 4.3.1, 5.4.5, 7.5.2 11.2 Exception Handlers 2.1.2, 4.3.1, 5.6.9, 5.8.1, 5.8.2, 5.8.3, 5.8.4, 6.2.2, 6.3.1, 6.3.4, 7.5.2, 8.2.7, 10.5.4 11.3 Raise Statements 4.3.1, 7.5.2, 8.2.3, 8.2.7 11.4 Exception Handling 4.3.1, 5.8.1, 5.8.2, 5.8.3, 5.8.4, 6.2.2, 6.3.4, 7.5, 8.2.7 11.4.1 The Package Exceptions5.8.4 11.4.2 Example of Exception Handling4.3.1 11.5 Suppressing Checks 5.9.5 11.6 Exceptions and Optimization 12. Generic Units 12.1 Generic Declarations 2.1.2, 3.2.5, 4.2.2, 8.1.1, 8.1.2, 8.1.3, 8.3.1, 8.3.2, 8.3.4, 8.3.5, 8.3.6, 8.4.2, 8.4.4 12.2 Generic Bodies 8.2.7 12.3 Generic Instantiation 2.1.2, 3.2.5, 5.2.2, 8.1.1, 8.2.4, 8.2.5, 8.3.2, 8.3.7, 8.4.2, 8.4.3, 8.4.5, 9.5 12.4 Formal Objects 8.2.4, 8.2.6 12.5 Formal Types 8.2.2, 8.3.4, 8.3.5 12.5.1 Formal Private and Derived Types 5.3.3, 8.3.5 12.5.2 Formal Scalar Types 12.5.3 Formal Array Types 8.2.2 12.5.4 Formal Access Types 12.6 Formal Subprograms 12.7 Formal Packages 8.4.2 12.8 Example of a Generic Package 13. Representation Issues 4.1.5, 7.6 13.1 Representation Items 5.4.5, 5.9.4, 7.6.1 13.2 Pragma Pack 10.5.7 13.3 Representation Attributes 5.9.4, 7.2.3, 7.3.1 13.4 Enumeration Representation Clauses 3.4.2, 7.6.1 13.5 Record Layout 13.5.1 Record Representation Clauses 2.1.2, 7.6.1 13.5.2 Storage Place Attributes 13.5.3 Bit Ordering 13.6 Change of Representation 7.6.1 13.7 The Package System 5.9.4, 7.4.3, 7.6.2 13.7.1 The Package System.Storage_Elements 13.7.2 The Package System.Address_To_Access_Conversions 13.8 Machine Code Insertions 7.1.5, 7.6.3 13.9 Unchecked Type Conversions 5.9.1, 7.6.8 13.9.1 Data Validity 13.9.2 The Valid Attribute 13.10 Unchecked Access Value Creation 5.9.3, 7.6.7 13.11 Storage Management 13.11.1 The Max_Size_In_Storage_Elements Attribute 13.11.2 Unchecked Storage Deallocation 5.4.5, 5.9.2, 7.3.3, 7.6.6 13.11.3 Pragma Controlled 13.12 Pragma Restrictions 13.13 Streams 13.13.1 The Package Streams 13.13.2 Stream-Oriented Attributes 13.14 Freezing Rules Annexes A. Predefined Language Environment 3.4.1, 5.7.1, 6.1.7, 7.1.2, 7.1.6, 7.2.1, 7.5.1, 7.6.3 A.1 The Package Standard 3.2.2, 3.4.1, 7.2.1, 7.4.3 A.2 The Package Ada A.3 Character Handling A.4 String Handling 8.4.7, 10.6.4, 10.6.5 A.5 The Numerics Packages A.6 Input-Output 7.7 A.7 External Files and File Objects 7.7.1, 7.7.2 A.8 Sequential and Direct Files 5.9.7, 7.7.1, 7.7.3 A.9 The Generic Package Storage_IO A.10 Text Input-Output 3.2.2, 4.2.2 A.11 Wide Text Input-Output A.12 Stream Input-Output 7.7.4 A.13 Exceptions in Input-Output A.14 File Sharing A.15 The Package Command_Line 7.1.4, 7.6.9 B. Interface to Other Languages 7.1.5, 7.6.4, 7.6.8 B.1 Interfacing Pragmas B.2 The Package Interfaces B.3 Interfacing With C B.4 Interfacing With COBOL B.5 Interfacing With FORTRAN C. Systems Programming 7.1.7, 7.6.3 C.1 Access to Machine Operations C.2 Required Representation Support C.3 Interrupt Support 4.1.9, 5.9.4, 6.1.1, 6.1.3 C.4 Preelaboration Requirements C.5 Pragma Discard_Names C.6 Shared Variable Control C.7 Task Identification and Attributes D. Real-Time Systems 7.1.7, 10.6.7 D.1 Task Priorities 6.1.6, 7.4.5, 8.4.3 D.2 Priority Scheduling 4.1.2, 6.1.6 D.3 Priority Ceiling Locking 4.1.2, 6.1.6 D.4 Entry Queuing Policies 4.1.2 D.5 Dynamic Priorities 6.1.6 D.6 Preemptive Abort D.7 Tasking Restrictions D.8 Monotonic Time 6.1.7 D.9 Delay Accuracy 6.1.8 D.10 Synchronous Task Control 6.1.2 D.11 Asynchronous Task Control 6.1.2 D.12 Other Optimizations and Determinism Rules E. Distributed Systems 7.1.7 E.1 Partitions E.2 Categorization of Library Units E.3 Consistency of a Distributed System E.4 Remote Subprogram Calls E.5 Partition Communication Subsystem F. Information Systems 7.1.7 F.1 Machine_Radix Attribute Definition Clause F.2 The Package Decimal 7.2.8 F.3 Edited Output for Decimal Types 8.3.7 G. Numerics 7.1.7, 7.2.2, 7.2.3 G.1 Complex Arithmetic G.2 Numeric Performance Requirements H. Safety and Security 7.1.7 H.1 Pragma Normalize_Scalars 4.1.2 H.2 Documentation of Implementation Decisions H.3 Reviewable Object Code H.4 Safety and Security Restrictions J. Obsolescent Features 7.1.1 J.1 Renamings of Ada 83 Library Units J.2 Allowed Replacements of Characters J.3 Reduced Accuracy Subtypes J.4 The Constrained Attribute J.5 ASCII J.6 Numeric_Error J.7 At Clauses 5.9.4 J.8 Mod Clauses J.9 The Storage_Size Attribute K. Language-Defined Attributes 3.2.6, 3.4.2, 5.3.3, 5.5.1, 5.5.2, 6.2.3, 8.2.4 L. Language-Defined Pragmas 4.1.5, 5.9.5, 6.1.6, 6.2.4, 7.4.5, 7.4.7, 7.6.4, 10.7.1, 10.7.2, 10.7.3, 10.7.4, 10.7.5, 10.7.6, 10.7.7 M. Implementation-Defined Characteristics 4.1.5, 5.4.2, 7.1.2, 7.1.3, 7.1.5, 7.1.6, 7.2.1, 7.2.4, 7.4.3, 7.6.2, 7.6.3, 7.6.5, 7.6.9 N. Glossary O. Syntax Summary