TWiki
>
P1076 Web
>
VHDL2017
>
LCS2016_041
(2017-06-21,
PatrickLehmann
)
(raw view)
E
dit
A
ttach
---+ Language Change Specification for Reflection API <noautolink> <sticky> ---++ | <sticky><b>LCS Number:</b></sticky> | LCS-2016-041 | | <sticky><b>Version:</b> </sticky> | 4 | | <sticky><b>Date:</b> </sticky> | 20-Jun-2017 | | <sticky><b>Status:</b> </sticky> | Approved | | <sticky><b>Author:</b> </sticky> | [[Main.LievenLemiengre][Lieven Lemiengre]] %BR% [[Main.PatrickLehmann][Patrick Lehmann]] | | <sticky><b>%RED%<del>Source Doc:</del>%ENDCOLOR%</b></sticky> | <del> [[RecordIntrospection][Record Introspection]] [[TypeReflection][Type Reflection]] </del> | | <sticky><b>More:</b></sticky> | [[LCS2016_041.Proposal][Proposal]] %BR% [[LCS2016_041_Examples][Examples]] %BR% [[LCS2016_041_History][LCS History]] | | <sticky><b>Summary:</b> </sticky> | Adds reflection over most 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 Reflection allows the user to lift any VHDL *value* into a generic data type called =VALUE_MIRROR=. This value mirror is implemented as a protected type, it's implementation is simulator specific and completely hidden from the user. Only a public interface is provided in a package called =REFLECTION=. A value mirror holds a copy to the value that it encapsulates and a reference the meta data (or =SUBTYPE_MIRROR=) that describes the value. A =SUBTYPE_MIRROR= is a fully elaborated description of a subtype. There are 9 kinds of value and type mirrors, one for each VHDL type (sub)class (enumeration, integer, record, array, ... see the =TYPE_CLASS= enumeration). You can cast a mirror to it's more precise type class mirror with the =to_*= methods. The LCS content is structured as follows: 1 A general section introduces the concept of mirrors and lists the relation of all 20 mirrors. 1 The package declaration is given 1 The common/unspecific mirror pair is described. %BR% The LCS introduces a new form on how to describe protected type behavior. It's similar to attribute descriptions. 1 9 more sections describe each specific mirror pair 1 Two examples are presented. Reflection with mirrors is based on a paper by Gilad Bracha. See http://bracha.org/mirrors.pdf ---++ Details of Language Change ---+++ 16.2.2 Predefined attributes of types and objects | %GREEN%[Reviewer note: Add after O'SUBTYPE.]%ENDCOLOR% ||| | %RED%T'REFLECT%ENDCOLOR% \ | %RED%Kind:%ENDCOLOR% | %RED%function%ENDCOLOR% | | | %RED%Prefix:%ENDCOLOR% | %RED%Any type or subtype T.%ENDCOLOR% | | | %RED%Result type:%ENDCOLOR% | %RED%STD.REFLECTION.SUBTYPE_MIRROR.%ENDCOLOR% | | | %RED%Result:%ENDCOLOR% | %RED%An access value to a value of type SUBTYPE_MIRROR_PT mirroring T.%ENDCOLOR% | | ||| | %RED%O'REFLECT%ENDCOLOR% \ | %RED%Kind:%ENDCOLOR% | %RED%function%ENDCOLOR% | | | %RED%Prefix:%ENDCOLOR% | %RED%Any object O of type or subtype T.%ENDCOLOR% | | | %RED%Result type:%ENDCOLOR% | %RED%STD.REFLECTION.VALUE_MIRROR.%ENDCOLOR% | | | %RED%Result:%ENDCOLOR% | %RED%An access value to a value of type VALUE_MIRROR_PT mirroring O.%ENDCOLOR% | ---+++ 16.12 Reflection package %GREEN%[NEW]%ENDCOLOR% ---+++ 16.12.1 General %GREEN%[NEW]%ENDCOLOR% %RED%Package REFLECTION contains protected type declarations and access types to these protected types for a %BR% reflection API.%ENDCOLOR% %RED%The reflection API provides access to type and value information of VHDL types and objects. The %BR% provided information is provided through protected type instances, which are called mirrors. It's said %BR% that such a protected type _mirrors_ the internal data and meta data of a tool and provides them for %BR% the user. Mirrors allow a user to inspect objects and types in generic way.%ENDCOLOR% %RED%Each VHDL object has two corresponding mirrors: A _value mirror_ and a _subtype mirror_. Each VHDL type %BR% or subtype has a corresponding _subtype mirror_. Mirror instances are created when the attribute 'REFLECT %BR% is evaluated.%ENDCOLOR% %RED%A value mirror contains a consistent copy of the mirrored object's value. This means, if the object's value %BR% changes, the stored value in the mirror instance does not change. The protected type of a value mirror provides:%ENDCOLOR% * %RED%access to the copied object value through a method%ENDCOLOR% * %RED%the same operations as provided by object attributes in the form of methods%ENDCOLOR% * %RED%a method to access the corresponding subtype of the mirrored object.%ENDCOLOR% %RED%A subtype mirror represents the meta data accompanying a VHDL object or the meta data of a mirrored %BR% VHDL type or subtype. The protected type of a subtype mirror provides:%ENDCOLOR% * %RED%the same operations as provided by type or subtype attributes in the form of methods.%ENDCOLOR% %RED%This API provides 10 value mirrors, one for each value's type class or subclass, as well as one common %BR% value mirror representing untyped values. Similarly, the API provides 10 subtype mirrors, one for each type's %BR% class or subclass and one common subtype mirror representing an unspecific type. The handling of %BR% mirror instances is eased by providing access types for each mirror protected type.%ENDCOLOR% %RED%The following table show all available mirror protected types and their relation:%ENDCOLOR% | %RED% *Type (Sub)Class* %ENDCOLOR% || %RED% *Value Mirror* %ENDCOLOR% | %RED% *Corresponding Subtype Mirror* %ENDCOLOR% | | %RED%Unclassified%ENDCOLOR% || %RED%VALUE_MIRROR_PT%ENDCOLOR% | %RED%SUBTYPE_MIRROR_PT%ENDCOLOR% | | %RED%Scalar%ENDCOLOR% |||| | | %RED%Enumeration%ENDCOLOR% | %RED%ENUMERATION_VALUE_MIRROR_PT%ENDCOLOR% | %RED%ENUMERATION_SUBTYPE_MIRROR_PT%ENDCOLOR% | | | %RED%Integer%ENDCOLOR% | %RED%INTEGER_VALUE_MIRROR_PT%ENDCOLOR% | %RED%INTEGER_SUBTYPE_MIRROR_PT%ENDCOLOR% | | | %RED%Floating%ENDCOLOR% | %RED%FLOATING_VALUE_MIRROR_PT%ENDCOLOR% | %RED%FLOATING_SUBTYPE_MIRROR_PT%ENDCOLOR% | | | %RED%Physical%ENDCOLOR% | %RED%PHYSICAL_VALUE_MIRROR_PT%ENDCOLOR% | %RED%PHYSICAL_SUBTYPE_MIRROR_PT%ENDCOLOR% | | %RED%Record%ENDCOLOR% || %RED%RECORD_VALUE_MIRROR_PT%ENDCOLOR% | %RED%RECORD_SUBTYPE_MIRROR_PT%ENDCOLOR% | | %RED%Array%ENDCOLOR% || %RED%ARRAY_VALUE_MIRROR_PT%ENDCOLOR% | %RED%ARRAY_SUBTYPE_MIRROR_PT%ENDCOLOR% | | %RED%Access%ENDCOLOR% || %RED%ACCESS_VALUE_MIRROR_PT%ENDCOLOR% | %RED%ACCESS_SUBTYPE_MIRROR_PT%ENDCOLOR% | | %RED%File%ENDCOLOR% || %RED%FILE_VALUE_MIRROR_PT%ENDCOLOR% | %RED%FILE_SUBTYPE_MIRROR_PT%ENDCOLOR% | | %RED%Protected%ENDCOLOR% || %RED%PROTECTED_VALUE_MIRROR_PT%ENDCOLOR% | %RED%PROTECTED_SUBTYPE_MIRROR_PT%ENDCOLOR% | ---+++ 16.12.2 Package declaration %GREEN%[NEW]%ENDCOLOR% <pre>%RED% package REFLECTION is type INDEX is range INTEGER'low to INTEGER'high; subtype NATURAL_INDEX is INDEX range 0 to INDEX'high; subtype POSITIVE_INDEX is INDEX range 1 to INDEX'high; subtype DIMENSION is INDEX range 1 to INDEX'high; type INDEX_VECTOR is array(DIMENSION range <>) of INDEX; -- Incomplete type declarations type VALUE_MIRROR; type SUBTYPE_MIRROR; -- Enumeration subtype/value mirror type ENUMERATION_SUBTYPE_MIRROR; type ENUMERATION_VALUE_MIRROR_PT is protected impure function get_subtype_mirror return ENUMERATION_SUBTYPE_MIRROR; impure function to_value_mirror return VALUE_MIRROR; impure function pos return INTEGER; impure function image return STRING; end protected; type ENUMERATION_VALUE_MIRROR is access ENUMERATION_VALUE_MIRROR_PT; type ENUMERATION_SUBTYPE_MIRROR_PT is protected impure function to_subtype_mirror return SUBTYPE_MIRROR; impure function enumeration_literal(literal_idx : NATURAL_INDEX) return ENUMERATION_VALUE_MIRROR; impure function enumeration_literal(literal_name : STRING) return ENUMERATION_VALUE_MIRROR; impure function simple_name return STRING; impure function left return ENUMERATION_VALUE_MIRROR; impure function right return ENUMERATION_VALUE_MIRROR; impure function low return ENUMERATION_VALUE_MIRROR; impure function high return ENUMERATION_VALUE_MIRROR; impure function length return POSITIVE_INDEX; impure function ascending return BOOLEAN; end protected; type ENUMERATION_SUBTYPE_MIRROR is access ENUMERATION_SUBTYPE_MIRROR_PT; -- Integer subtype/value mirror type INTEGER_SUBTYPE_MIRROR; type INTEGER_VALUE_MIRROR_PT is protected impure function get_subtype_mirror return INTEGER_SUBTYPE_MIRROR; impure function to_value_mirror return VALUE_MIRROR; impure function value return INTEGER; impure function image return STRING; end protected; type INTEGER_VALUE_MIRROR is access INTEGER_VALUE_MIRROR_PT; type INTEGER_SUBTYPE_MIRROR_PT is protected impure function to_subtype_mirror return SUBTYPE_MIRROR; impure function simple_name return STRING; impure function left return INTEGER_VALUE_MIRROR; impure function right return INTEGER_VALUE_MIRROR; impure function low return INTEGER_VALUE_MIRROR; impure function high return INTEGER_VALUE_MIRROR; impure function length return INDEX; impure function ascending return BOOLEAN; end protected; type INTEGER_SUBTYPE_MIRROR is access INTEGER_SUBTYPE_MIRROR_PT; -- Floating-point subtype/value mirror type FLOATING_SUBTYPE_MIRROR; type FLOATING_VALUE_MIRROR_PT is protected impure function get_subtype_mirror return FLOATING_SUBTYPE_MIRROR; impure function to_value_mirror return VALUE_MIRROR; impure function value return REAL; impure function image return STRING; end protected; type FLOATING_VALUE_MIRROR is access FLOATING_VALUE_MIRROR_PT; type FLOATING_SUBTYPE_MIRROR_PT is protected impure function to_subtype_mirror return SUBTYPE_MIRROR; impure function simple_name return STRING; impure function left return FLOATING_VALUE_MIRROR; impure function right return FLOATING_VALUE_MIRROR; impure function low return FLOATING_VALUE_MIRROR; impure function high return FLOATING_VALUE_MIRROR; impure function ascending return BOOLEAN; end protected; type FLOATING_SUBTYPE_MIRROR is access FLOATING_SUBTYPE_MIRROR_PT; -- Physical subtype/value mirror type PHYSICAL_SUBTYPE_MIRROR; type PHYSICAL_VALUE_MIRROR_PT is protected impure function get_subtype_mirror return PHYSICAL_SUBTYPE_MIRROR; impure function to_value_mirror return VALUE_MIRROR; impure function unit_index return INDEX; impure function value return INTEGER; impure function image return STRING; end protected; type PHYSICAL_VALUE_MIRROR is access PHYSICAL_VALUE_MIRROR_PT; type PHYSICAL_SUBTYPE_MIRROR_PT is protected impure function to_subtype_mirror return SUBTYPE_MIRROR; impure function units_length return INDEX; impure function unit_name (unit_idx: INDEX) return STRING; impure function unit_index(unit_name : STRING) return INDEX; impure function scale(unit_idx: INDEX) return NATURAL; impure function scale(unit_name: INDEX) return NATURAL; impure function simple_name return STRING; impure function left return PHYSICAL_VALUE_MIRROR; impure function right return PHYSICAL_VALUE_MIRROR; impure function low return PHYSICAL_VALUE_MIRROR; impure function high return PHYSICAL_VALUE_MIRROR; impure function length return INDEX; impure function ascending return BOOLEAN; end protected; type PHYSICAL_SUBTYPE_MIRROR is access PHYSICAL_SUBTYPE_MIRROR_PT; -- Record subtype/value mirror type RECORD_SUBTYPE_MIRROR; type RECORD_VALUE_MIRROR_PT is protected impure function get_subtype_mirror return RECORD_SUBTYPE_MIRROR; impure function to_value_mirror return VALUE_MIRROR; impure function get(element_idx : INDEX) return VALUE_MIRROR; impure function get(element_name : STRING) return VALUE_MIRROR; end protected; type RECORD_VALUE_MIRROR is access RECORD_VALUE_MIRROR_PT; type RECORD_SUBTYPE_MIRROR_PT is protected impure function to_subtype_mirror return SUBTYPE_MIRROR; impure function length return INDEX; impure function element_name(element_idx : INDEX) return STRING; impure function element_index(element_name : STRING) return INDEX; impure function element_subtype(element_idx : INDEX) return SUBTYPE_MIRROR; impure function element_subtype(element_name : STRING) return SUBTYPE_MIRROR; impure function simple_name return string; end protected; type RECORD_SUBTYPE_MIRROR is access RECORD_SUBTYPE_MIRROR_PT; -- Array subtype/value mirror type ARRAY_SUBTYPE_MIRROR; type ARRAY_VALUE_MIRROR_PT is protected impure function get_subtype_mirror return ARRAY_SUBTYPE_MIRROR; impure function to_value_mirror return VALUE_MIRROR; impure function get(idx : INDEX) return VALUE_MIRROR; impure function get(idx1, idx2 : INDEX) return VALUE_MIRROR; impure function get(idx1, idx2, idx3 : INDEX) return VALUE_MIRROR; impure function get(idx : INDEX_VECTOR) return VALUE_MIRROR; end protected; type ARRAY_VALUE_MIRROR is access ARRAY_VALUE_MIRROR_PT; type ARRAY_SUBTYPE_MIRROR_PT is protected impure function to_subtype_mirror return SUBTYPE_MIRROR; impure function dimensions return DIMENSION; impure function index_subtype(idx : DIMENSION := 1) return SUBTYPE_MIRROR; impure function element_subtype return SUBTYPE_MIRROR; impure function simple_name return string; impure function left(idx : DIMENSION := 1) return INDEX; impure function right(idx : DIMENSION := 1) return INDEX; impure function low(idx : DIMENSION := 1) return INDEX; impure function high(idx : DIMENSION := 1) return INDEX; impure function length(idx : DIMENSION := 1) return INDEX; impure function ascending(idx : DIMENSION := 1) return BOOLEAN; end protected; type ARRAY_SUBTYPE_MIRROR is access ARRAY_SUBTYPE_MIRROR_PT; -- Access subtype/value mirror type ACCESS_SUBTYPE_MIRROR; type ACCESS_VALUE_MIRROR_PT is protected impure function get_subtype_mirror return ACCESS_SUBTYPE_MIRROR; impure function to_value_mirror return VALUE_MIRROR; -- impure function get return VALUE_MIRROR; impure function is_null return boolean; end protected; type ACCESS_VALUE_MIRROR is access ACCESS_VALUE_MIRROR_PT; type ACCESS_SUBTYPE_MIRROR_PT is protected impure function to_subtype_mirror return SUBTYPE_MIRROR; impure function simple_name return STRING; impure function designated_subtype return SUBTYPE_MIRROR; end protected; type ACCESS_SUBTYPE_MIRROR is access ACCESS_SUBTYPE_MIRROR_PT; -- File subtype/value mirror type FILE_SUBTYPE_MIRROR; type FILE_VALUE_MIRROR_PT is protected impure function get_subtype_mirror return FILE_SUBTYPE_MIRROR; impure function to_value_mirror return VALUE_MIRROR; impure function file_logical_name return STRING; impure function file_open_kind return FILE_OPEN_KIND; end protected; type FILE_VALUE_MIRROR is access FILE_VALUE_MIRROR_PT; type FILE_SUBTYPE_MIRROR_PT is protected impure function to_subtype_mirror return SUBTYPE_MIRROR; impure function simple_name return STRING; impure function designated_subtype return SUBTYPE_MIRROR; end protected; type FILE_SUBTYPE_MIRROR is access FILE_SUBTYPE_MIRROR_PT; -- Protected subtype/value mirror type PROTECTED_SUBTYPE_MIRROR; type PROTECTED_VALUE_MIRROR_PT is protected impure function get_subtype_mirror return PROTECTED_SUBTYPE_MIRROR; impure function to_value_mirror return VALUE_MIRROR; end protected; type PROTECTED_VALUE_MIRROR is access PROTECTED_VALUE_MIRROR_PT; type PROTECTED_SUBTYPE_MIRROR_PT is protected impure function to_subtype_mirror return SUBTYPE_MIRROR; impure function simple_name return STRING; end protected; type PROTECTED_SUBTYPE_MIRROR is access PROTECTED_SUBTYPE_MIRROR_PT; -- Type classes and sub-classes type TYPE_CLASS is ( CLASS_ENUMERATION, CLASS_INTEGER, CLASS_FLOATING, CLASS_PHYSICAL, CLASS_RECORD, CLASS_ARRAY, CLASS_ACCESS, CLASS_FILE, CLASS_PROTECTED ); alias VALUE_CLASS is TYPE_CLASS; -- Subtype/value mirror type SUBTYPE_MIRROR_PT is protected impure function get_type_class return TYPE_CLASS; -- get the corresponding representation impure function to_enumeration return ENUMERATION_SUBTYPE_MIRROR; impure function to_integer return INTEGER_SUBTYPE_MIRROR; impure function to_floating return FLOATING_SUBTYPE_MIRROR; impure function to_physical return PHYSICAL_SUBTYPE_MIRROR; impure function to_record return RECORD_SUBTYPE_MIRROR; impure function to_array return ARRAY_SUBTYPE_MIRROR; impure function to_access return ACCESS_SUBTYPE_MIRROR; impure function to_file return FILE_SUBTYPE_MIRROR; impure function to_protected return PROTECTED_SUBTYPE_MIRROR; impure function simple_name return STRING; end protected; type SUBTYPE_MIRROR is access SUBTYPE_MIRROR_PT; type VALUE_MIRROR_PT is protected impure function get_value_class return VALUE_CLASS; impure function get_subtype_mirror return SUBTYPE_MIRROR; -- get the corresponding representation impure function to_enumeration return ENUMERATION_VALUE_MIRROR; impure function to_integer return INTEGER_VALUE_MIRROR; impure function to_floating return FLOATING_VALUE_MIRROR; impure function to_physical return PHYSICAL_VALUE_MIRROR; impure function to_record return RECORD_VALUE_MIRROR; impure function to_array return ARRAY_VALUE_MIRROR; impure function to_access return ACCESS_VALUE_MIRROR; impure function to_file return FILE_VALUE_MIRROR; impure function to_protected return PROTECTED_VALUE_MIRROR; end protected; type VALUE_MIRROR is access VALUE_MIRROR_PT; end package REFLECTION; -- Implementation specific -- ------------------------------------- -- package body REFLECTION is -- end package body REFLECTION; %ENDCOLOR%</pre> ---+++ 16.12.3 Package description %GREEN%[NEW]%ENDCOLOR% ---+++ 16.12.3.1 General %GREEN%[NEW]%ENDCOLOR% %RED%These methods of the protected types are described as follows. For each method, the following information is provided:%ENDCOLOR% * %RED%Parameters, if any exists%ENDCOLOR% * %RED%Return type%ENDCOLOR% * %RED%Result of evaluating the method%ENDCOLOR% * %RED%Errors that can occur%ENDCOLOR% * %RED%Any further restrictions or comments that apply%ENDCOLOR% ---+++ 16.12.3.2 Common subtype and value mirrors %GREEN%[NEW]%ENDCOLOR% %RED%The integer type INDEX represents an index value used by the reflection API. The subtypes NATURAL_INDEX represent a natural and %BR% POSITIVE_INDEX represent a positive index value. The subtype DIMENSION represents an array dimension. The array INDEX_VECTOR %BR% represents a list of indices as used to index multi dimensional arrays. %ENDCOLOR% %RED%The enumeration TYPE_CLASS contains one value per type class or subclass. The alias VALUE_CLASS denotes the same enumeration.%ENDCOLOR% %RED%The protected type SUBTYPE_MIRROR_PT mirrors an arbitrary subtype. It provides the following methods:%ENDCOLOR% | %RED% *get_type_class* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%TYPE_CLASS%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a type class of the mirrored subtype.%ENDCOLOR% | | %RED% *to_enumeration* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%ENUMERATION_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an ENUMERATION_SUBTYPE_MIRROR_PT instance of the specific subtype mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific subtype mirror is not an enumeration subtype mirror.%ENDCOLOR% | | %RED% *to_integer* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INTEGER_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an INTEGER_SUBTYPE_MIRROR_PT instance of the specific subtype mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific subtype mirror is not an integer subtype mirror.%ENDCOLOR% | | %RED% *to_floating* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%FLOATING_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a FLOATING_SUBTYPE_MIRROR_PT instance of the specific subtype mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific subtype mirror is not a floating subtype mirror.%ENDCOLOR% | | %RED% *to_physical* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%PHYSICAL_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a PHYSICAL_SUBTYPE_MIRROR_PT instance of the specific subtype mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific subtype mirror is not a physical subtype mirror.%ENDCOLOR% | | %RED% *to_record* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%RECORD_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a RECORD_SUBTYPE_MIRROR_PT instance of the specific subtype mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific subtype mirror is not a record subtype mirror.%ENDCOLOR% | | %RED% *to_array* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%ARRAY_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an ARRAY_SUBTYPE_MIRROR_PT instance of the specific subtype mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific subtype mirror is not an array subtype mirror.%ENDCOLOR% | | %RED% *to_access* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%ACCESS_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an ACCESS_SUBTYPE_MIRROR_PT instance of the specific subtype mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific subtype mirror is not an access subtype mirror.%ENDCOLOR% | | %RED% *to_file* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%FILE_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a FILE_SUBTYPE_MIRROR_PT instance of the specific subtype mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific subtype mirror is not a file subtype mirror.%ENDCOLOR% | | %RED% *to_protected* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%PROTECTED_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a PROTECTED_SUBTYPE_MIRROR_PT instance of the specific subtype mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific subtype mirror is not a protected subtype mirror.%ENDCOLOR% | | %RED% *simple_name* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the simple name of the corresponding subtype.%ENDCOLOR% | %RED%The protected type VALUE_MIRROR_PT mirrors an arbitrary value. It provides the following methods:%ENDCOLOR% | %RED% *get_value_class* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_CLASS%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a value class of the mirrored value.%ENDCOLOR% | | %RED% *get_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the corresponding subtype mirror.%ENDCOLOR% | | %RED% *to_enumeration* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%ENUMERATION_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an ENUMERATION_VALUE_MIRROR_PT instance of the specific value mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific value mirror is not an enumeration value mirror.%ENDCOLOR% | | %RED% *to_integer* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INTEGER_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an INTEGER_VALUE_MIRROR_PT instance of the specific value mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific value mirror is not an integer value mirror.%ENDCOLOR% | | %RED% *to_floating* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%FLOATING_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a FLOATING_VALUE_MIRROR_PT instance of the specific value mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific value mirror is not a floating value mirror.%ENDCOLOR% | | %RED% *to_physical* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%PHYSICAL_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a PHYSICAL_VALUE_MIRROR_PT instance of the specific value mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific value mirror is not a physical value mirror.%ENDCOLOR% | | %RED% *to_record* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%RECORD_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a RECORD_VALUE_MIRROR_PT instance of the specific value mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific value mirror is not a record value mirror.%ENDCOLOR% | | %RED% *to_array* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%ARRAY_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an ARRAY_VALUE_MIRROR_PT instance of the specific value mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific value mirror is not an array value mirror.%ENDCOLOR% | | %RED% *to_access* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%ACCESS_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an ACCESS_VALUE_MIRROR_PT instance of the specific value mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific value mirror is not an access value mirror.%ENDCOLOR% | | %RED% *to_file* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%FILE_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a FILE_VALUE_MIRROR_PT instance of the specific value mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific value mirror is not a file value mirror.%ENDCOLOR% | | %RED% *to_protected* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%PROTECTED_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a PROTECTED_VALUE_MIRROR_PT instance of the specific value mirror.%ENDCOLOR% | | %RED%Errors%ENDCOLOR% | %BLUE%It is an error if the specific value mirror is not a protected value mirror.%ENDCOLOR% | %RED%The access type SUBTYPE_MIRROR designates a SUBTYPE_MIRROR_PT. The access type VALUE_MIRROR designates a VALUE_MIRROR_PT.%ENDCOLOR% ---+++ 16.12.3.3 Enumeration subtype and value mirrors %GREEN%[NEW]%ENDCOLOR% %RED%The protected type ENUMERATION_SUBTYPE_MIRROR_PT mirrors an enumeration subtype. It provides the following methods:%ENDCOLOR% | %RED% *to_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a SUBTYPE_MIRROR_PT instance representing this mirror as a %BR% \ common subtype mirror.%ENDCOLOR% | | %RED% *enumeration_literal* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%literal_idx : NATURAL_INDEX%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%ENUMERATION_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an ENUMERATION_VALUE_MIRROR_PT instance representing the literal_idx-th %BR% \ enumeration literal.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter literal_idx is not in the range denoted by %BR% \ ENUMERATION_SUBTYPE_MIRROR_PT.left to ENUMERATION_SUBTYPE_MIRROR_PT.right.%ENDCOLOR% | | %RED% *enumeration_literal* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%literal_name : STRING%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%ENUMERATION_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %BLUE%Returns an ENUMERATION_VALUE_MIRROR_PT instance, whose string representation %BR% \ matches the parameter literal_name.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter literal_name does not denote an enumeration literal %BR% \ of the enumeration type mirrored by ENUMERATION_SUBTYPE_MIRROR_PT.%ENDCOLOR% | | %RED% *simple_name* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the simple name of the corresponding subtype.%ENDCOLOR% | | %RED% *left* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%ENUMERATION_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an ENUMERATION_VALUE_MIRROR_PT instance representing the left bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *right* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%ENUMERATION_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an ENUMERATION_VALUE_MIRROR_PT instance representing the right bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *low* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%ENUMERATION_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an ENUMERATION_VALUE_MIRROR_PT instance representing the lower bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *high* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%ENUMERATION_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an ENUMERATION_VALUE_MIRROR_PT instance representing the upper bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *length* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%POSITIVE_INDEX%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the number of enumeration literals for the corresponding subtype.%ENDCOLOR% | | %RED% *ascending* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%BOOLEAN%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a TRUE if the corresponding subtype's constraint range is in ascending %BR% \ order, otherwise FALSE.%ENDCOLOR% | %RED%The protected type ENUMERATION_VALUE_MIRROR_PT mirrors an enumeration type value. It provides the following methods:%ENDCOLOR% | %RED% *get_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%ENUMERATION_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the corresponding subtype mirror.%ENDCOLOR% | | %RED% *to_value_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the common value mirror for this mirror.%ENDCOLOR% | | %RED% *pos* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INTEGER%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the position number of the mirrored enumeration type value.%ENDCOLOR% | | %RED% *image* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the string representation of the mirrored enumeration type value.%ENDCOLOR% | %RED%The access type ENUMERATION_SUBTYPE_MIRROR designates an ENUMERATION_SUBTYPE_MIRROR_PT. The access type %BR% ENUMERATION_VALUE_MIRROR designates an ENUMERATION_VALUE_MIRROR_PT.%ENDCOLOR% ---+++ 16.12.3.4 Integer subtype and value mirrors %GREEN%[NEW]%ENDCOLOR% %RED%The protected type INTEGER_SUBTYPE_MIRROR_PT mirrors an integer subtype. It provides the following methods:%ENDCOLOR% | %RED% *to_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a SUBTYPE_MIRROR_PT instance representing this mirror as a %BR% \ common subtype mirror.%ENDCOLOR% | | %RED% *simple_name* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the simple name of the corresponding subtype.%ENDCOLOR% | | %RED% *left* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INTEGER_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an INTEGER_VALUE_MIRROR_PT instance representing the left bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *right* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INTEGER_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an INTEGER_VALUE_MIRROR_PT instance representing the right bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *low* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INTEGER_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an INTEGER_VALUE_MIRROR_PT instance representing the lower bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *high* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INTEGER_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns an INTEGER_VALUE_MIRROR_PT instance representing the upper bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *length* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%POSITIVE_INDEX%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the number of position numbers in the range of the corresponding subtype.%ENDCOLOR% | | %RED% *ascending* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%BOOLEAN%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a TRUE if the corresponding subtype's constraint range is in ascending %BR% \ order, otherwise FALSE.%ENDCOLOR% | %RED%The protected type INTEGER_VALUE_MIRROR_PT mirrors an integer type value. It provides the following methods:%ENDCOLOR% | %RED% *get_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INTEGER_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the corresponding subtype mirror.%ENDCOLOR% | | %RED% *to_value_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the common value mirror for this mirror.%ENDCOLOR% | | %RED% *value* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INTEGER%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the position number of the mirrored integer value.%ENDCOLOR% | | %RED% *image* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the string representation of the mirrored integer value.%ENDCOLOR% | %RED%The access type INTEGER_SUBTYPE_MIRROR designates an INTEGER_SUBTYPE_MIRROR_PT. The access type %BR% INTEGER_VALUE_MIRROR designates an INTEGER_VALUE_MIRROR_PT.%ENDCOLOR% ---+++ 16.12.3.5 Floating subtype and value mirrors %GREEN%[NEW]%ENDCOLOR% %RED%The protected type FLOATING_SUBTYPE_MIRROR_PT mirrors a floating subtype. It provides the following methods:%ENDCOLOR% | %RED% *to_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a SUBTYPE_MIRROR_PT instance representing this mirror as a %BR% \ common subtype mirror.%ENDCOLOR% | | %RED% *simple_name* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the simple name of the corresponding subtype.%ENDCOLOR% | | %RED% *left* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%FLOATING_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a FLOATING_VALUE_MIRROR_PT instance representing the left bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *right* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%FLOATING_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a FLOATING_VALUE_MIRROR_PT instance representing the right bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *low* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%FLOATING_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a FLOATING_VALUE_MIRROR_PT instance representing the lower bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *high* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%FLOATING_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a FLOATING_VALUE_MIRROR_PT instance representing the upper bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *ascending* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%BOOLEAN%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a TRUE if the corresponding subtype's constraint range is in ascending %BR% \ order, otherwise FALSE.%ENDCOLOR% | %RED%The protected type FLOATING_VALUE_MIRROR_PT mirrors a floating type value. It provides the following methods:%ENDCOLOR% | %RED% *get_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%FLOATING_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the corresponding subtype mirror.%ENDCOLOR% | | %RED% *to_value_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the common value mirror for this mirror.%ENDCOLOR% | | %RED% *value* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%REAL%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the real value of the mirrored floating type value.%ENDCOLOR% | | %RED% *image* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the string representation of the mirrored floating type value.%ENDCOLOR% | %RED%The access type FLOATING_SUBTYPE_MIRROR designates a FLOATING_SUBTYPE_MIRROR_PT. The access type %BR% FLOATING_VALUE_MIRROR designates a FLOATING_VALUE_MIRROR_PT.%ENDCOLOR% ---+++ 16.12.3.6 Physical subtype and value mirrors %GREEN%[NEW]%ENDCOLOR% %RED%The protected type PHYSICAL_SUBTYPE_MIRROR_PT mirrors a physical subtype. It provides the following methods:%ENDCOLOR% | %RED% *to_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a SUBTYPE_MIRROR_PT instance representing this mirror as a %BR% \ common subtype mirror.%ENDCOLOR% | | %RED% *simple_name* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the simple name of the corresponding subtype.%ENDCOLOR% | | %RED% *left* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%PHYSICAL_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a PHYSICAL_VALUE_MIRROR_PT instance representing the left bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *right* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%PHYSICAL_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a PHYSICAL_VALUE_MIRROR_PT instance representing the right bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *low* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%PHYSICAL_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a PHYSICAL_VALUE_MIRROR_PT instance representing the lower bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *high* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%PHYSICAL_VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a PHYSICAL_VALUE_MIRROR_PT instance representing the upper bound %BR% \ of the subtype.%ENDCOLOR% | | %RED% *length* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%POSITIVE_INDEX%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the number of position numbers in the range of the corresponding subtype.%ENDCOLOR% | | %RED% *ascending* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%BOOLEAN%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a TRUE if the corresponding subtype's constraint range is in ascending %BR% \ order, otherwise FALSE.%ENDCOLOR% | %RED%The protected type PHYSICAL_VALUE_MIRROR_PT mirrors a physical type value.%ENDCOLOR% %BLUE%The index of a physical unit is determined by position of the corresponding unit declaration in the physical type definition. The index of the primary unit is zero; the index for each additional secondary unit is one more than that of its predecessor in the list.%ENDCOLOR% %BLUE%The PHYSICAL_VALUE_MIRROR_PT provides the following methods:%ENDCOLOR% | %RED% *get_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%PHYSICAL_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the corresponding subtype mirror.%ENDCOLOR% | | %RED% *to_value_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the common value mirror for this mirror.%ENDCOLOR% | | %RED% *unit_index* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INDEX%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %BLUE%Returns the index of the secondary unit of the mirrored physical type value.%ENDCOLOR% | | %RED% *value* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INTEGER%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the position number of the mirrored physical type value.%ENDCOLOR% | | %RED% *image* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the string representation of the mirrored physical type value.%ENDCOLOR% | %RED%The access type PHYSICAL_SUBTYPE_MIRROR designates a PHYSICAL_SUBTYPE_MIRROR_PT. The access type %BR% PHYSICAL_VALUE_MIRROR designates a PHYSICAL_VALUE_MIRROR_PT.%ENDCOLOR% ---+++ 16.12.3.7 Record subtype and value mirrors %GREEN%[NEW]%ENDCOLOR% %RED%The protected type RECORD_SUBTYPE_MIRROR_PT mirrors a record subtype.%ENDCOLOR% %BLUE%The index of a record element is determined by position of the corresponding element declaration in the record type definition. The index of the record element of the first listed element declaration is zero; the index for each additional record element is one more than that of its predecessor in the list.%ENDCOLOR% %BLUE%The RECORD_SUBTYPE_MIRROR_PT provides the following methods:%ENDCOLOR% | %RED% *to_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a SUBTYPE_MIRROR_PT instance representing this mirror as a %BR% \ common subtype mirror.%ENDCOLOR% | | %RED% *length* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INDEX%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the number of record elements in the corresponding subtype.%ENDCOLOR% | | %RED% *element_name* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%element_idx : INDEX%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the element name of the element_idx-th record element.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter element_idx is not in the range denoted by %BR% \ 0 to RECORD_SUBTYPE_MIRROR_PT.length minus 1.%ENDCOLOR% | | %RED% *element_index* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%element_name : STRING%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INDEX%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %BLUE%Returns the index of the record element, whose name matches element_name.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter element_name does not denote a record element %BR% \ of the record type mirrored by RECORD_SUBTYPE_MIRROR_PT.%ENDCOLOR% | | %RED% *element_subtype* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%element_idx : INDEX%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a SUBTYPE_MIRROR_PT instance representing the element_idx-th subtype.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter element_idx is not in the range denoted by %BR% \ 0 to RECORD_SUBTYPE_MIRROR_PT.length minus 1.%ENDCOLOR% | | %RED% *element_subtype* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%element_name : STRING%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a SUBTYPE_MIRROR_PT instance representing the element subtype.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter element_name does not denote a record element %BR% \ of the record type mirrored by RECORD_SUBTYPE_MIRROR_PT.%ENDCOLOR% | | %RED% *simple_name* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the simple name of the corresponding subtype.%ENDCOLOR% | %RED%The protected type RECORD_VALUE_MIRROR_PT mirrors a record type value. It provides the following methods:%ENDCOLOR% | %RED% *get_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%RECORD_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the corresponding subtype mirror.%ENDCOLOR% | | %RED% *to_value_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the common value mirror for this mirror.%ENDCOLOR% | | %RED% *get* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%element_idx : INDEX%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a value mirror for the element_idx-th record element.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter element_idx is not in the range denoted by %BR% \ 0 to RECORD_SUBTYPE_MIRROR_PT.length minus 1.%ENDCOLOR% | | %RED% *get* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%element_name : STRING%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %BLUE%Returns a value mirror for the record element, whose name matches the parameter element_name.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter element_name does not denote a record element %BR% \ of the record type mirrored by RECORD_SUBTYPE_MIRROR_PT.%ENDCOLOR% | %RED%The access type RECORD_SUBTYPE_MIRROR designates a RECORD_SUBTYPE_MIRROR_PT. The access type %BR% RECORD_VALUE_MIRROR designates a RECORD_VALUE_MIRROR_PT.%ENDCOLOR% ---+++ 16.12.3.8 Array subtype and value mirrors %GREEN%[NEW]%ENDCOLOR% %RED%The protected type ARRAY_SUBTYPE_MIRROR_PT mirrors an array subtype. It provides the following methods:%ENDCOLOR% | %RED% *to_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a SUBTYPE_MIRROR_PT instance representing this mirror as a %BR% \ common subtype mirror.%ENDCOLOR% | | %RED% *dimensions* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%DIMENSION%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the number of dimensions of the corresponding subtype.%ENDCOLOR% | | %RED% *index_subtype* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%idx : INDEX := 1%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a SUBTYPE_MIRROR_PT instance representing the idx-th index subtype.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter idx is not in the range denoted by %BR% \ ARRAY_SUBTYPE_MIRROR_PT.left to ARRAY_SUBTYPE_MIRROR_PT.right.%ENDCOLOR% | | %RED% *element_subtype* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a SUBTYPE_MIRROR_PT instance representing the element subtype.%ENDCOLOR% | | %RED% *simple_name* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the simple name of the corresponding subtype.%ENDCOLOR% | | %RED% *left* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%idx : INDEX := 1%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INDEX%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the left bound of the corresponding subtype's idx-th index.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter idx is not in the range denoted by %BR% \ ARRAY_SUBTYPE_MIRROR_PT.left to ARRAY_SUBTYPE_MIRROR_PT.right.%ENDCOLOR% | | %RED% *right* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%idx : INDEX := 1%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INDEX%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the right bound of the corresponding subtype's idx-th index.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter idx is not in the range denoted by %BR% \ ARRAY_SUBTYPE_MIRROR_PT.left to ARRAY_SUBTYPE_MIRROR_PT.right.%ENDCOLOR% | | %RED% *low* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%idx : INDEX := 1%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INDEX%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the lower bound of the corresponding subtype's idx-th index.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter idx is not in the range denoted by %BR% \ ARRAY_SUBTYPE_MIRROR_PT.left to ARRAY_SUBTYPE_MIRROR_PT.right.%ENDCOLOR% | | %RED% *high* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%idx : INDEX := 1%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%INDEX%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the upper bound of the corresponding subtype's idx-th index.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter idx is not in the range denoted by %BR% \ ARRAY_SUBTYPE_MIRROR_PT.left to ARRAY_SUBTYPE_MIRROR_PT.right.%ENDCOLOR% | | %RED% *length* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%idx : INDEX := 1%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%POSITIVE_INDEX%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the length of the corresponding subtype's idx-th index.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter idx is not in the range denoted by %BR% \ ARRAY_SUBTYPE_MIRROR_PT.left to ARRAY_SUBTYPE_MIRROR_PT.right.%ENDCOLOR% | | %RED% *ascending* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%idx : INDEX := 1%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%BOOLEAN%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a TRUE if the corresponding subtype's idx-th index constraint is in ascending %BR% \ order, otherwise FALSE.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter idx is not in the range denoted by %BR% \ ARRAY_SUBTYPE_MIRROR_PT.left to ARRAY_SUBTYPE_MIRROR_PT.right.%ENDCOLOR% | %RED%The protected type ARRAY_VALUE_MIRROR_PT mirrors an array type value. It provides the following methods:%ENDCOLOR% | %RED% *get_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%ARRAY_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the corresponding subtype mirror.%ENDCOLOR% | | %RED% *to_value_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the common value mirror for this mirror.%ENDCOLOR% | | %RED% *get* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%idx : INDEX%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a value mirror for the idx-th array element.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the parameter idx is not in the range denoted by %BR% \ ARRAY_SUBTYPE_MIRROR_PT.left to ARRAY_SUBTYPE_MIRROR_PT.right.%ENDCOLOR% | | %RED% *get* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%idx1, idx2 : INDEX%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a value mirror for the (idx1, idx2)-th array element.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if any of the parameters idx1 or idx2, specifying the indices %BR% \ of the first and second dimension, are not in the range denoted by ARRAY_SUBTYPE_MIRROR_PT.left(n) %BR% \ to ARRAY_SUBTYPE_MIRROR_PT.right(n), whereby n is the dimension.%ENDCOLOR% | | %RED% *get* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %BLUE%idx1, idx2, idx3 : INDEX%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a value mirror for the (idx1, idx2, idx3)-th array element.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if any of the parameters idx1, idx2 or idx3, specifying the %BR% \ indices of the first, second and third dimension, are not in the range denoted by %BR% \ ARRAY_SUBTYPE_MIRROR_PT.left(n) to ARRAY_SUBTYPE_MIRROR_PT.right(n), whereby n is %BR% \ the dimension.%ENDCOLOR% | | %RED% *get* %ENDCOLOR% | | %RED%Parameters%ENDCOLOR% | %RED%idx : INDEX_VECTOR%ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a value mirror for the array element selected by the indices given by parameter idx.%ENDCOLOR% | | %BLUE%Errors%ENDCOLOR% | %BLUE%It is an error if the indices given as an INDEX_VECTOR in parameter idx are not %BR% \ in the range denoted by ARRAY_SUBTYPE_MIRROR_PT.left(n) to ARRAY_SUBTYPE_MIRROR_PT.right(n), %BR% \ whereby n is the dimension and corresponds to the index's position in idx.%ENDCOLOR% | %RED%The access type ARRAY_SUBTYPE_MIRROR designates an ARRAY_SUBTYPE_MIRROR_PT. The access type %BR% ARRAY_VALUE_MIRROR designates an ARRAY_VALUE_MIRROR_PT.%ENDCOLOR% ---+++ 16.12.3.9 Access subtype and value mirrors %GREEN%[NEW]%ENDCOLOR% %RED%The protected type ACCESS_SUBTYPE_MIRROR_PT mirrors an access subtype. It provides the following methods:%ENDCOLOR% | %RED% *to_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a SUBTYPE_MIRROR_PT instance representing this mirror as a %BR% \ common subtype mirror.%ENDCOLOR% | | %RED% *simple_name* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the simple name of the corresponding subtype.%ENDCOLOR% | | %RED% *designated_subtype* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a SUBTYPE_MIRROR_PT instance representing the designated subtype.%ENDCOLOR% | %RED%The protected type ACCESS_VALUE_MIRROR_PT mirrors an access type value. It provides the following methods:%ENDCOLOR% | %RED% *get_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%ACCESS_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the corresponding subtype mirror.%ENDCOLOR% | | %RED% *to_value_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the common value mirror for this mirror.%ENDCOLOR% | | %RED% *get* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a value mirror for the designated value.%ENDCOLOR% | | %RED% *is_null* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%BOOLEAN%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns TRUE if the mirrored access type value is null, otherwise FALSE.%ENDCOLOR% | %RED%The access type ACCESS_SUBTYPE_MIRROR designates an ACCESS_SUBTYPE_MIRROR_PT. The access type %BR% ACCESS_VALUE_MIRROR designates an ACCESS_VALUE_MIRROR_PT.%ENDCOLOR% ---+++ 16.12.3.10 File subtype and value mirrors %GREEN%[NEW]%ENDCOLOR% %RED%The protected type FILE_SUBTYPE_MIRROR_PT mirrors a file subtype. It provides the following methods:%ENDCOLOR% | %RED% *to_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a SUBTYPE_MIRROR_PT instance representing this mirror as a %BR% \ common subtype mirror.%ENDCOLOR% | | %RED% *simple_name* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the simple name of the corresponding subtype.%ENDCOLOR% | | %RED% *designated_subtype* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a SUBTYPE_MIRROR_PT instance representing the designated subtype.%ENDCOLOR% | %RED%The protected type FILE_VALUE_MIRROR_PT mirrors a file type instance. It provides the following methods:%ENDCOLOR% | %RED% *get_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%FILE_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the corresponding subtype mirror.%ENDCOLOR% | | %RED% *to_value_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the common value mirror for this mirror.%ENDCOLOR% | | %RED% *file_logical_name* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the file logical name of the mirrored file type instance.%ENDCOLOR% | | %RED% *file_open_kind* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%FILE_OPEN_KIND%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the file open kind of the mirrored file type instance.%ENDCOLOR% | %RED%The access type FILE_SUBTYPE_MIRROR designates a FILE_SUBTYPE_MIRROR_PT. The access type %BR% FILE_VALUE_MIRROR designates a FILE_VALUE_MIRROR_PT.%ENDCOLOR% ---+++ 16.12.3.11 Protected subtype and value mirrors %GREEN%[NEW]%ENDCOLOR% %RED%The protected type PROTECTED_SUBTYPE_MIRROR_PT mirrors a protected type subtype. It provides the following methods:%ENDCOLOR% | %RED% *to_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns a SUBTYPE_MIRROR_PT instance representing this mirror as a %BR% \ common subtype mirror.%ENDCOLOR% | | %RED% *simple_name* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%STRING%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the simple name of the corresponding subtype.%ENDCOLOR% | %RED%The protected type PROTECTED_VALUE_MIRROR_PT mirrors a protected type instance. It provides the following methods:%ENDCOLOR% | %RED% *get_subtype_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%PROTECTED_SUBTYPE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the corresponding subtype mirror.%ENDCOLOR% | | %RED% *to_value_mirror* %ENDCOLOR% | | %RED%Return type%ENDCOLOR% | %RED%VALUE_MIRROR%ENDCOLOR% | | %RED%Behavior%ENDCOLOR% | %RED%Returns the common value mirror for this mirror.%ENDCOLOR% | %RED%The access type PROTECTED_SUBTYPE_MIRROR designates a PROTECTED_SUBTYPE_MIRROR_PT. The access type %BR% PROTECTED_VALUE_MIRROR designates a PROTECTED_VALUE_MIRROR_PT.%ENDCOLOR% ---+++ 16.12.4 Examples %GREEN%[NEW]%ENDCOLOR% ---+++ 16.12.4.1 General %GREEN%[NEW]%ENDCOLOR% %RED%The following complex data type shall be converted to a string:%ENDCOLOR% <pre>%RED% process type Rec is record I : INTEGER_VECTOR(0 to 3); R : REAL; T : TIME; end record; constant test : Rec := ( I => (1, 3, 7, 9), R => 3.14, T => 25 ns ); variable mirror : VALUE_MIRROR := test'reflect; begin report to_string(mirror); wait; end process; -- result: -- (I => (1, 3, 7, 9), R => 3.14, T => 25 ns) %ENDCOLOR%</pre> ---+++ 16.12.4.1 Length of discrete types %GREEN%[NEW]%ENDCOLOR% <pre>%RED% -- determines the length of a discrete type function length(stm : SUBTYPE_MIRROR) return INDEX is constant class : TYPE_CLASS := stm.get_type_class; begin case class is when CLASS_ENUMERATION => return stm.to_enumeration.length; when CLASS_INTEGER => return stm.to_integer.length; when others => report TYPE_CLASS'image(class) & " doesn't have a length." severity FAILURE; end case; return -1; end function; %ENDCOLOR%</pre> ---+++ 16.12.4.2 Generic to_string %GREEN%[NEW]%ENDCOLOR% <pre>%RED% -- can create a string for any value function to_string(value : VALUE_MIRROR) return STRING is -- string-ify arrays function to_string(value : ARRAY_VALUE_MIRROR) return STRING is variable array_type : ARRAY_SUBTYPE_MIRROR; variable length : INDEX; begin array_type := value.get_subtype; length := length(array_type.index_subtype(1)); if array_type.dimensions /= 1 then -- not supported in this example report "only 1D arrays are supported" severity FAILURE; return INDEX'image(array_type.dimensions) & "D array"; end if; return "(" & to_string(value, 0, length, "") & ")"; end function; -- string-ify array elements function to_string(value : ARRAY_VALUE_MIRROR; field_idx, length : INDEX; prefix : STRING) return STRING is variable index : index_vector; begin index := (0 => field_idx); block constant element_str : STRING := to_string(value.get(index)); begin if field_idx < length - 1 then return to_string(value, field_idx + 1, length, prefix & element_str & ", "); elsif field_idx = length - 1 then return prefix & element_str; end if; end block; end function; -- string-ify records function to_string(value : RECORD_VALUE_MIRROR) return STRING is begin return "(" & to_string(value, 0, "") & ")"; end function; -- string-ify record elements function to_string(value : RECORD_VALUE_MIRROR; element_idx : INDEX; prefix : STRING) return STRING is variable record_type : RECORD_SUBTYPE_MIRROR; begin record_type := value.get_subtype; block constant element_str : STRING := record_type.element_name(element_idx) & " => " & to_string(value.get(element_idx)); begin if element_idx < record_type.length - 1 then return to_string(value, element_idx + 1, prefix & element_str & ", "); elsif element_idx = record_type.length - 1 then return prefix & element_str; end if; end block; end function; constant class : VALUE_CLASS := value.get_value_class; begin case class is when CLASS_ENUMERATION => return value.to_enumeration.image; when CLASS_INTEGER => return INTEGER'image(value.to_integer.value); when CLASS_FLOATING => return REAL'image(value.to_floating.value); when CLASS_PHYSICAL => return value.to_physical.image; when CLASS_RECORD => return to_string(value.to_record); when CLASS_ARRAY => return to_string(value.to_array); when CLASS_ACCESS => return "access type " & value.to_access.get_subtype.simple_name; when CLASS_FILE => return "file type"; when CLASS_PROTECTED => return "protected type"; end case; end function; %ENDCOLOR%</pre> </sticky> <span data-mce-mark="1"></noautolink></span>
E
dit
|
A
ttach
|
P
rint version
|
H
istory
: r32
<
r31
<
r30
<
r29
<
r28
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Topic revision: r32 - 2017-06-21 - 09:38:41 -
PatrickLehmann
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