
LCS2016018 

2 

11Jan2017 

Approved 

Patrick Lehmann 



Proposal Examples LCS History 

Adds new attributes for enumerated types. 
This LCS also adds a prefix description to all subsection because the prefix is not properly defined in the current LRM text. It also
splits section 16.2.2 into two parts to distinguish types and objects. This distinction is a) a cleanup and b) needed by other LCS' like
LCS2016018b.
NOTE 1 in subsection 16.2.2 is going to be remove or should be moved to 5.2.1 where it belongs?
[Reviewer note: Extended existing attributes for use with objects.]  
P 
Kind:  Type 
Prefix:  Any prefix P that is appropriate for an object with type or subtype T, or an alias thereof, or that denotes any type or subtype T. 

Result:  The base type of T.  
Restrictions:  This attribute is allowed only as the prefix of the name of another attribute; for example, P'BASE'LEFT. 

P 
Kind:  Value 
Prefix:  Any prefix P that is appropriate for an object with a scalar type or subtype T, or an alias thereof, or that denotes any scalar type or subtype T. 

Result type:  Same type as T.  
Result:  The left bound of T.  
P 
Kind:  Value 
Prefix:  Any prefix P that is appropriate for an object with a scalar type or subtype T, or an alias thereof, or that denotes any scalar type or subtype T. 

Result type:  Same type as T.  
Result:  The right bound of T.  
P 
Kind:  Value 
Prefix:  Any prefix P that is appropriate for an object with a scalar type or subtype T, or an alias thereof, or that denotes any scalar type or subtype T. 

Result type:  Same type as T.  
Result:  The upper bound of T.  
P 
Kind:  Value 
Prefix:  Any prefix P that is appropriate for an object with a scalar type or subtype T, or an alias thereof, or that denotes any scalar type or subtype T. 

Result type:  Same type as T.  
Result:  The lower bound of T.  
P 
Kind:  Value 
Prefix:  Any prefix P that is appropriate for an object with a scalar type or subtype T, or an alias thereof, or that denotes any scalar type or subtype T. 

Result type:  Type BOOLEAN.  
Result:  It is TRUE if T is defined with an ascending range; FALSE otherwise.  
[Reviewer note: New attributes.]  
P'LENGTH  Kind:  Pure function 
Prefix:  Any prefix P that is appropriate for an object with a discrete or physical type or subtype T, or an alias thereof, or that denotes any discrete or physical type or subtype T. 

Result type:  universal_integer  
Result:  T'LENGTH = maximum(0, T'POS(T'HIGH)  T'POS(T'LOW) + 1)  
P'RANGE  Kind:  Range 
Prefix:  Any prefix P that is appropriate for an object with a scalar type or subtype T, or an alias thereof, or that denotes any scalar type or subtype T. 

Result type:  The type of T.  
Result:  The range T'LEFT to T'RIGHT if the range of T is ascending, or the range T'LEFT downto T'RIGHT if the range of T is descending. 

P'REVERSE_RANGE  Kind:  Range 
Prefix:  Any prefix P that is appropriate for an object with a scalar type or subtype T, or an alias thereof, or that denotes any scalar type or subtype T. 

Result type:  The type of T.  
Result:  The range T'RIGHT downto T'LEFT if the range of T is ascending, or the range T'RIGHT to T'LEFT if the range of T is descending. 

T'IMAGE(X)  [Not modified]  
T'VALUE(X)  [Not modified]  
T'POS(X)  [Not modified]  
T'VAL(X)  [Not modified]  
T'SUCC(X)  [Not modified]  
T'PRED(X)  [Not modified]  
T'LEFTOF(X)  [Not modified]  
T'RIGHTOF(X)  [Not modified]  
O'SUBTYPE  [Not modified]  
[Reviewer note: new attributes for objects as a shorthand to existing attributes on types.]  
O'IMAGE  Kind:  Pure function 
Prefix:  Any prefix O that is appropriate for an object with a scalar type or subtype, or an alias thereof.  
Shorthand for:  O'SUBTYPE'IMAGE(O)  
O'POS  Kind:  Pure function 
Prefix:  Any prefix O that is appropriate for an object with a discrete or physical type or subtype, or an alias thereof.  
Shorthand for:  O'SUBTYPE'POS(O)  
O'SUCC  Kind:  Pure function 
Prefix:  Any prefix O that is appropriate for an object with a discrete or physical type or subtype, or an alias thereof.  
Shorthand for:  O'SUBTYPE'SUCC(O)  
O'PRED  Kind:  Pure function 
Prefix:  Any prefix O that is appropriate for an object with a discrete or physical type or subtype, or an alias thereof.  
Shorthand for:  O'SUBTYPE'PRED(O)  
O'LEFTOF  Kind:  Pure function 
Prefix:  Any prefix O that is appropriate for an object with a discrete or physical type or subtype, or an alias thereof.  
Shorthand for:  O'SUBTYPE'LEFTOF(O)  
O'RIGHTOF  Kind:  Pure function 
Prefix:  Any prefix O that is appropriate for an object with a discrete or physical type or subtype, or an alias thereof.  
Shorthand for:  O'SUBTYPE'RIGHTOF(O) 
NOTE 1  The relationship between the values of the LEFT, RIGHT, LOW, and HIGH attributes is expressed as follows:
Ascending range  Descending range  
P 
=  P 
P 
P 
=  P 
P 