DocAda(tm) is a productivity tool of KSCE

____ | Up | Next | Back | Forward
About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News

7.1 Package Specifications and Declarations

A package is generally provided in two parts: a package_specification and a package_body. Every package has a package_specification, but not all packages have a package_body.

Syntax

   
       package_declaration ::= package_specification;

       package_specification ::=
           package defining_program_unit_name is
             {basic_declarative_item}
          [private
             {basic_declarative_item}]
           end [[parent_unit_name.]identifier]

Legality Rules

A package_declaration or generic_package_declaration requires a completion (a body) if it contains any declarative_item that requires a completion, but whose completion is not in its package_specification.

Static Semantics

The first list of declarative_items of a package_specification of a package other than a generic formal package is called the visible part of the package. The optional list of declarative_items after the reserved word private (of any package_specification) is called the private part of the package. If the reserved word private does not appear, the package has an implicit empty private part.

An entity declared in the private part of a package is visible only within the declarative region of the package itself (including any child units -- see 10.1.1). In contrast, expanded names denoting entities declared in the visible part can be used even outside the package; furthermore, direct visibility of such entities can be achieved by means of use_clauses (see 4.1.3 and 8.4).

Dynamic Semantics

The elaboration of a package_declaration consists of the elaboration of its basic_declarative_items in the given order.

Examples

Example of a package declaration:

    
       package Rational_Numbers is

          type Rational is
             record
                Numerator   : Integer;
                Denominator : Positive;
             end record;

          function "="(X,Y : Rational) return Boolean;

          function "/"  (X,Y : Integer)  return Rational;  --  to construct a rational number

          function "+"  (X,Y : Rational) return Rational;
          function "-"  (X,Y : Rational) return Rational;
          function "*"  (X,Y : Rational) return Rational;
          function "/"  (X,Y : Rational) return Rational;
       end Rational_Numbers;

There are also many examples of package declarations in the predefined language environment (see Annex A).

About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News
____ | Up | Next | Back | Forward


Copyright © 1994-1997 by Kempe Software Capital Enterprises. All Rights Reserved. For comments on this DocAda(tm) hypertext document, please write to KSCE, at docada@ksce.com