TWiki
>
P1076 Web
>
VHDL_2017
>
LCS2016_018
(revision 11) (raw view)
Edit
Attach
---+ Language Change Specification for Attributes for Enumerated Types <noautolink> <sticky> ---++ | <sticky><b>LCS Number:</b></sticky> | LCS-2016-018 | | <sticky><b>Version:</b> </sticky> | 2 | | <sticky><b>Date:</b> </sticky> | 11-Jan-2017 | | <sticky><b>Status:</b> </sticky> | Approved | | <sticky><b>Author:</b> </sticky> | [[Main.PatrickLehmann][Patrick Lehmann]] | | <sticky><b>%RED%<del>Source Doc:</del>%ENDCOLOR%</b></sticky> | <del> [[EnumAttributes][Attributes for Enumerated Types]] </del> | | <sticky><b>More:</b></sticky> | [[LCS2016_018.Proposal][Proposal]] %BR% [[LCS2016_018_Examples][Examples]] %BR% [[LCS2016_018_History][LCS History]] | | <sticky><b>Summary:</b> </sticky> | Adds new attributes for enumerated types. | %TOC% ---++ Style Notes Changes are shown in %RED%red font%ENDCOLOR%.%BR% Deletions are %RED%<del>crossed out</del>%ENDCOLOR%.%BR% Editing or reviewing notes in %GREEN%green font%ENDCOLOR%. ---++ Reviewing Notes The original proposal requested special attributes for enumerated types. This LCS lifts the demand and adds the demanded attributes %BR% for scalar types in general. See also the related LCS' LCS-2016-018a and LCS-2016-018b for further related improvements, but not covered %BR% by the original proposal. This LCS also adds a prefix description to all sub-section because the prefix is not properly defined in the current LRM text. It also %BR% splits section 16.2.2 into two parts to distinguish types and objects. This distinction is a) a clean-up and b) needed by other LCS' like %BR% LCS-2016-018b. NOTE 1 in sub-section 16.2.2 is going to be remove or should be moved to 5.2.1 where it belongs? ---++ Details of Language Change ---+++ 16.2.2 Predefined attributes of types and objects | %GREEN%[Reviewer note: Extended existing attributes for use with objects.]%ENDCOLOR% ||| | %RED%P<del>T</del>%ENDCOLOR%'BASE \ | Kind: | Type | | | Prefix: | %RED%<del>Any type or subtype T.</del> %BR% \ Any prefix P that is appropriate for an object with type or subtype T, or an alias thereof, or that %BR% \ denotes any type or subtype T.%ENDCOLOR% | | | Result: | The base type of T. | | | Restrictions: | This attribute is allowed only as the prefix of the name of another attribute; %BR% \ for example, P'BASE'LEFT. | | ||| | %RED%P<del>T</del>%ENDCOLOR%'LEFT \ | Kind: | Value | | | Prefix: | %RED%<del>Any scalar type or subtype T.</del> %BR% \ Any prefix P that is appropriate for an object with a scalar type or subtype T, or an alias thereof, %BR% \ or that denotes any scalar type or subtype T.%ENDCOLOR% | | | Result type: | Same type as T. | | | Result: | The left bound of T. | | ||| | %RED%P<del>T</del>%ENDCOLOR%'RIGHT \ | Kind: | Value | | | Prefix: | %RED%<del>Any scalar type or subtype T.</del> %BR% \ Any prefix P that is appropriate for an object with a scalar type or subtype T, or an alias thereof, %BR% \ or that denotes any scalar type or subtype T.%ENDCOLOR% | | | Result type: | Same type as T. | | | Result: | The right bound of T. | | ||| | %RED%P<del>T</del>%ENDCOLOR%'HIGH \ | Kind: | Value | | | Prefix: | %RED%<del>Any scalar type or subtype T.</del> %BR% \ Any prefix P that is appropriate for an object with a scalar type or subtype T, or an alias thereof, %BR% \ or that denotes any scalar type or subtype T.%ENDCOLOR% | | | Result type: | Same type as T. | | | Result: | The upper bound of T. | | ||| | %RED%P<del>T</del>%ENDCOLOR%'LOW \ | Kind: | Value | | | Prefix: | %RED%<del>Any scalar type or subtype T.</del> %BR% \ Any prefix P that is appropriate for an object with a scalar type or subtype T, or an alias thereof, %BR% \ or that denotes any scalar type or subtype T.%ENDCOLOR% | | | Result type: | Same type as T. | | | Result: | The lower bound of T. | | ||| | %RED%P<del>T</del>%ENDCOLOR%'ASCENDING \ | Kind: | Value | | | Prefix: | %RED%<del>Any scalar type or subtype T.</del> %BR% \ Any prefix P that is appropriate for an object with a scalar type or subtype T, or an alias thereof, %BR% \ or that denotes any scalar type or subtype T.%ENDCOLOR% | | | Result type: | Type BOOLEAN. | | | Result: | It is TRUE if T is defined with an ascending range; FALSE otherwise. | | %GREEN%[Reviewer note: New attributes.]%ENDCOLOR% ||| | %RED%P'LENGTH%ENDCOLOR% \ | %RED%Kind:%ENDCOLOR% | %RED%Pure function%ENDCOLOR% | | | %RED%Prefix:%ENDCOLOR% | %RED%Any prefix P that is appropriate for an object with a discrete or physical type or subtype T, %BR% \ or an alias thereof, or that denotes any discrete or physical type or subtype T.%ENDCOLOR% | | | %RED%Result type:%ENDCOLOR% | %RED%<i>universal_integer</i>%ENDCOLOR% | | | %RED%Result:%ENDCOLOR% | %RED%T'LENGTH = maximum(0, T'POS(T'HIGH) - T'POS(T'LOW) + 1)%ENDCOLOR% | | ||| | %RED%P'RANGE%ENDCOLOR% \ | %RED%Kind:%ENDCOLOR% | %RED%Range%ENDCOLOR% | | | %RED%Prefix:%ENDCOLOR% | %RED%Any prefix P that is appropriate for an object with a scalar type or subtype T, %BR% \ or an alias thereof, or that denotes any scalar type or subtype T.%ENDCOLOR% | | | %RED%Result type:%ENDCOLOR% | %RED%The type of T.%ENDCOLOR% | | | %RED%Result:%ENDCOLOR% | %RED%The range T'LEFT to T'RIGHT if the range of T is ascending, or the range %BR% \ T'LEFT downto T'RIGHT if the range of T is descending.%ENDCOLOR% | | ||| | %RED%P'REVERSE_RANGE%ENDCOLOR% \ | %RED%Kind:%ENDCOLOR% | %RED%Range%ENDCOLOR% | | | %RED%Prefix:%ENDCOLOR% | %RED%Any prefix P that is appropriate for an object with a scalar type or subtype T, %BR% \ or an alias thereof, or that denotes any scalar type or subtype T.%ENDCOLOR% | | | %RED%Result type:%ENDCOLOR% | %RED%The type of T.%ENDCOLOR% | | | %RED%Result:%ENDCOLOR% | %RED%The range T'RIGHT downto T'LEFT if the range of T is ascending, or the range %BR% \ T'RIGHT to T'LEFT if the range of T is descending.%ENDCOLOR% | | ||| | T'IMAGE(X) | %GREEN%[Not modified]%ENDCOLOR% || | T'VALUE(X) | %GREEN%[Not modified]%ENDCOLOR% || | T'POS(X) | %GREEN%[Not modified]%ENDCOLOR% || | T'VAL(X) | %GREEN%[Not modified]%ENDCOLOR% || | T'SUCC(X) | %GREEN%[Not modified]%ENDCOLOR% || | T'PRED(X) | %GREEN%[Not modified]%ENDCOLOR% || | T'LEFTOF(X) | %GREEN%[Not modified]%ENDCOLOR% || | T'RIGHTOF(X) | %GREEN%[Not modified]%ENDCOLOR% || | O'SUBTYPE | %GREEN%[Not modified]%ENDCOLOR% || | %GREEN%[Reviewer note: new attributes for objects as a shorthand to existing attributes on types.]%ENDCOLOR% ||| | %RED%O'IMAGE%ENDCOLOR% \ | %RED%Kind:%ENDCOLOR% | %RED%Pure function%ENDCOLOR% | | | %RED%Prefix:%ENDCOLOR% | %RED%Any prefix O that is appropriate for an object with a scalar type or subtype, or an alias thereof.%ENDCOLOR% | | | %RED%Shorthand for:%ENDCOLOR% | %RED%O'SUBTYPE'IMAGE(O)%ENDCOLOR% | | ||| | %RED%O'POS%ENDCOLOR% \ | %RED%Kind:%ENDCOLOR% | %RED%Pure function%ENDCOLOR% | | | %RED%Prefix:%ENDCOLOR% | %RED%Any prefix O that is appropriate for an object with a discrete or physical type or subtype, or an alias thereof.%ENDCOLOR% | | | %RED%Shorthand for:%ENDCOLOR% | %RED%O'SUBTYPE'POS(O)%ENDCOLOR% | | ||| | %RED%O'SUCC%ENDCOLOR% \ | %RED%Kind:%ENDCOLOR% | %RED%Pure function%ENDCOLOR% | | | %RED%Prefix:%ENDCOLOR% | %RED%Any prefix O that is appropriate for an object with a discrete or physical type or subtype, or an alias thereof.%ENDCOLOR% | | | %RED%Shorthand for:%ENDCOLOR% | %RED%O'SUBTYPE'SUCC(O)%ENDCOLOR% | | ||| | %RED%O'PRED%ENDCOLOR% \ | %RED%Kind:%ENDCOLOR% | %RED%Pure function%ENDCOLOR% | | | %RED%Prefix:%ENDCOLOR% | %RED%Any prefix O that is appropriate for an object with a discrete or physical type or subtype, or an alias thereof.%ENDCOLOR% | | | %RED%Shorthand for:%ENDCOLOR% | %RED%O'SUBTYPE'PRED(O)%ENDCOLOR% | | ||| | %RED%O'LEFTOF%ENDCOLOR% \ | %RED%Kind:%ENDCOLOR% | %RED%Pure function%ENDCOLOR% | | | %RED%Prefix:%ENDCOLOR% | %RED%Any prefix O that is appropriate for an object with a discrete or physical type or subtype, or an alias thereof.%ENDCOLOR% | | | %RED%Shorthand for:%ENDCOLOR% | %RED%O'SUBTYPE'LEFTOF(O)%ENDCOLOR% | | ||| | %RED%O'RIGHTOF%ENDCOLOR% \ | %RED%Kind:%ENDCOLOR% | %RED%Pure function%ENDCOLOR% | | | %RED%Prefix:%ENDCOLOR% | %RED%Any prefix O that is appropriate for an object with a discrete or physical type or subtype, or an alias thereof.%ENDCOLOR% | | | %RED%Shorthand for:%ENDCOLOR% | %RED%O'SUBTYPE'RIGHTOF(O)%ENDCOLOR% | NOTE 1 - The relationship between the values of the LEFT, RIGHT, LOW, and HIGH attributes is expressed as follows: | | | <b>Ascending range</b> | <b>Descending range</b> | | %RED%P<del>T</del>%ENDCOLOR%'LEFT | = | %RED%P<del>T</del>%ENDCOLOR%'LOW | %RED%P<del>T</del>%ENDCOLOR%'HIGH | | %RED%P<del>T</del>%ENDCOLOR%'RIGHT | = | %RED%P<del>T</del>%ENDCOLOR%'HIGH | %RED%P<del>T</del>%ENDCOLOR%'LOW | </sticky> </noautolink>
Edit
|
Attach
|
P
rint version
|
H
istory
:
r34
|
r13
<
r12
<
r11
<
r10
|
B
acklinks
|
V
iew topic
|
Raw edit
|
More topic actions...
Topic revision: r1 - 2017-04-02 - 12:19:45 -
TWikiGuest
P1076
Log In
or
Register
P1076 Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
Webs
Main
P1076
Ballots
LCS2016_080
P10761
P1647
P16661
P1685
P1734
P1735
P1778
P1800
P1801
Sandbox
TWiki
VIP
VerilogAMS
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback