DocAda(tm) is a productivity tool of KSCE

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

3.5.5 Operations of Discrete Types

Static Semantics

For every discrete subtype S, the following attributes are defined:

S'Pos

   
           function S'Pos(Arg : S'Base)
             return universal_integer

S'Val

   
           function S'Val(Arg : universal_integer)
             return S'Base

Implementation Advice

For the evaluation of a call on S'Pos for an enumeration subtype, if the value of the operand does not correspond to the internal code for any enumeration literal of its type (perhaps due to an uninitialized variable), then the implementation should raise Program_Error. This is particularly important for enumeration types with noncontiguous internal codes specified by an enumeration_representation_clause.

    
          S'Val(S'Pos(X)) = X
          S'Pos(S'Val(N)) = N

Examples

Examples of attributes of discrete subtypes:

    
       --  For the types and subtypes declared in subclause 3.5.1 the following hold:

       --  Color'First   = White,   Color'Last   = Black
       --  Rainbow'First = Red,     Rainbow'Last = Blue

       --  Color'Succ(Blue) = Rainbow'Succ(Blue) = Brown
       --  Color'Pos(Blue)  = Rainbow'Pos(Blue)  = 4
       --  Color'Val(0)     = Rainbow'Val(0)     = White

About DocAda Light: Preface / Preliminary / Help / TOC / Copyright
DocAda Online at the Ada Home: Complete RM95 / Updates / News
Prev | 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