[Top] [Prev] [Next] [Bottom]
CHAPTER 11 FIR_TypeDefinition
Derived Classes
Type definitions generally define a domain of allowable values and a set of operators on these values. Type declarations, subtype declarations, object instances and expressions refer to type definitions. This chapter specifies the properties, predefined public methods and predefined public data used to represent types via the predefined FIR_TypeDefinition class and predefined classes derived from FIR_TypeDefinition (as shown in Table 81 on page 136).
Value domains may be explicitly enumerated (as with enumerated types) and/or described as a range of allowable values (as with integer types). VHDL also provides physical types, whereby textually multipliers may simplify writing physical literals. One or more subtypes may be constructed from a base type through the application of type constraints.
Operator symbols are drawn from a predefined set. The behavior of an operator symbol in the context of parameters of a specific base type and specific return type is determined by the visible function declarations overloading the operator symbol (only VHDL allows operator overloading) and any predefined, implicit function declarations.
Type signatures extend the type concept to denote types associated with each parameter of a subprogram declaration and the subprogram's return type. Signatures are generally used to disambiguate among multiple subprogram declarations having the same declarator but different parameter and return type signatures.
All derivative classes of FIR_TypeDefinition are dynamically and individually allocated.
11.1 FIR_TypeDefinition
11.1.1 Derived Class Description
FIR_TypeDefinitions represent predefined methods, subprograms and public data elements common to scalar types, array types, record types, access types, file types and signatures.
11.1.2 Properties
TABLE 82. FIR_TypeDefinition Properties
|
Applicable language(s)
|
VHDL-87, VHDL-93, VHDL-98*,VHDL-A,
|
|
IR_Kind enumeration value
|
None, not directly instantiated
|
|
Parent class
|
FIR
|
|
Predefined child classes
|
FIR_ScalarTypeDefinition, FIR_ArrayTypeDefinition, FIR_RecordTypeDefinition, FIR_AccessTypeDefinition, FIR_FileTypeDefinition, FIR_Signature
|
|
Application-specific data elements
|
None, not allowed for this class
|
|
Public data elements
|
None
|
11.1.3 Predefined Data Elements
struct FIR_TypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
};
11.2 FIR_ScalarTypeDefinition
11.2.1 Derived Class Description
FIR_ScalarTypeDefinitions represent predefined methods, subprograms and public data elements common to enumerated type definitions, integer type definitions, floating point type definitions, physical type definitions and range type definitions.
11.2.2 Properties
TABLE 83. FIR_ScalarTypeDefinition Properties
|
Applicable language(s)
|
VHDL-87, VHDL-93, VHDL-98*,VHDL-A,
|
|
IR_Kind enumeration value
|
None, not directly instantiated
|
|
Parent class
|
FIR_TypeDefinition
|
|
Predefined child classes
|
FIR_EnumerationTypeDefinition, FIR_IntegerTypeDefinition, FIR_FloatingTypeDefinition, FIR_PhysicalTypeDefinition, FIR_RangeTypeDefinition
|
|
Application-specific data elements
|
None, not allowed for this class
|
11.2.3 Predefined Data Elements
struct FIR_ScalarTypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
};
11.3 FIR_EnumerationTypeDefinition
11.3.1 Derived Class Description
The predefined FIR_EnumerationTypeDefinition represents its value domain by a set of enumeration literals.
11.3.2 Properties
11.3.3 Predefined Data Elements
struct FIR_EnumerationTypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
FIR_EnumerationLiteralList enumeration_literals;
};
11.4 FIR_EnumerationSubtypeDefinition
11.4.1 Derived Class Description
The predefined FIR_EnumerationSubtypeDefinition class represent a subset of the literals represented by an FIR_EnumerationTypeDefinition base type.
11.4.2 Properties
11.4.3 Predefined Data Elements
struct FIR_EnumerationSubtypeTypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
FIR_EnumerationLiteralList enumeration_literals;
};
11.5 FIR_IntegerTypeDefinition
11.5.1 Derived Class Description
The predefined FIR_IntegerTypeDefinition class represents a range of integer point values.
11.5.2 Properties
11.5.3 Predefined Data Elements
struct FIR_IntegerTypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
FIR_Ref left;
FIR_Ref right;
FIR_Ref direction;
};
11.6 FIR_IntegerSubtypeDefinition
11.6.1 Derived Class Description
The predefined FIR_IntegerSubtypeDefinition class represents a subset of an existing integer base type definition.
11.6.2 Properties
11.6.3 Predefined Data Elements
struct FIR_IntegerSubtypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
FIR_Ref left;
FIR_Ref right;
FIR_Ref direction;
};
11.7 FIR_FloatingTypeDefinition
11.7.1 Derived Class Description
The predefined FIR_FloatingTypeDefinition class represents a range of floating point values.
11.7.2 Properties
11.7.3 Predefined Data Elements
struct FIR_FloatingTypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
FIR_Ref left;
FIR_Ref right;
FIR_Ref direction;
};
11.8 FIR_FloatingSubtypeDefinition
11.8.1 Derived Class Description
The predefined FIR_FloatingSubtypeDefinition class represents a subset of an existing floating base type definition.
11.8.2 Properties
11.8.3 Predefined Data Elements
struct FIR_FloatingSubtypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
FIR_Ref left;
FIR_Ref right;
FIR_Ref direction;
};
11.9 FIR_PhysicalTypeDefinition
11.9.1 Derived Class Description
The predefined FIR_PhysicalTypeDefinition class represents a VHDL physical type, including limits, a primary unit and zero or more secondary units.
11.9.2 Properties
11.9.3 Predefined Data Elements
struct FIR_PhysicalTypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
FIR_UnitList unit_declarations;
};
11.10 FIR_PhysicalSubtypeDefinition
11.10.1 Derived Class Description
The predefined FIR_PhysicalSubtypeDefinition class represents a subtype of an existing physical type. The subtype range must be a subset of the base type's range.
11.10.2 Properties
11.10.3 Predefined Data Elements
struct FIR_PhysicalTypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
FIR_UnitList unit_declarations;
};
11.11 FIR_RangeTypeDefinition
11.11.1 Derived Class Description
The predefined FIR_RangeTypeDefinition class represents discrete ranges which are not proper HDL types or subtypes.
11.11.2 Properties
11.11.3 Predefined Data Elements
struct FIR_RangeTypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
FIR_Ref left;
FIR_Ref right;
FIR_Ref direction;
};
11.12 FIR_ArrayTypeDefinition
11.12.1 Derived Class Description
The predefined FIR_ArrayTypeDefinition class represents base types containing zero or more instances of the same elemental subtype.
11.12.2 Properties
11.12.3 Predefined Data Elements
struct FIR_ArrayTypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
FIR_Ref domain_type; /* FIR_ScalarTypeDefinition */
FIR_Ref element_type; /* FIR_TypeDefinition */
};
11.13 FIR_ArraySubtypeDefinition
11.13.1 Derived Class Description
The predefined FIR_ArraySubtypeDefinition class represents the subtype of a pre-existing array type definition. This subtype has an array domain which is a subset of the base type's domain.
11.13.2 Properties
11.13.3 Predefined Data Elements
struct FIR_ArrayTypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
FIR_Ref domain_type;
FIR_Ref element_type;
};
11.14 FIR_RecordTypeDefinition
11.14.1 Derived Class Description
The predefined FIR_RecordTypeDefinition class represents a record type having zero or more element declarations.
11.14.2 Properties
11.14.3 Predefined Data Elements
struct FIR_RecordTypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
FIR_ElementDeclarationList element_declarations;
};
11.15 FIR_AccessTypeDefinition
11.15.1 Derived Class Description
The predefined FIR_AccessTypeDefinition class represents a type definition denoting a dynamically allocated object of designated type.
11.15.2 Properties
11.15.3 Predefined Data Elements
struct FIR_AccessTypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
FIR_Ref constraint;
FIR_Ref designated_type;
};
11.16 FIR_AccessSubtypeDefinition
11.16.1 Derived Class Description
The predefined FIR_AccessSubtypeDefinition class represents a subtype of an access type definition.
11.16.2 Properties
11.16.3 Predefined Data Elements
struct FIR_AccessSubtypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref base_type;
FIR_Ref constraint;
FIR_Ref designated_type;
};
11.17 FIR_FileTypeDefinition
11.17.1 Derived Class Description
The predefined FIR_FileTypeDefinition represents the type associated with zero or more file declarations.
11.17.2 Properties
11.17.3 Predefined Data Elements
struct FIR_FileTypeDefinition {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier;
FIR_Ref base_type;
FIR_Ref element;
/* FIR_Ref modes; ==== removed until I understand RNN*/
};
11.18 FIR_Signature
11.18.1 Derived Class Description
The predefined FIR_Signature class represents the parameter type signature and optional return type which may be associated with one or more subprograms. Note that the signature does not directly imply interface declarators or a subprogram declarator.
11.18.2 Properties
11.18.3 Predefined Data Elements
struct FIR_Signature {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref identifier; /* only here as inherited */
FIR_Ref return_type;
FIR_DesignatorList argument_type_list
};
[Top] [Prev] [Next] [Bottom]
aire@vhdl.org
Copyright © 1995, 1996 FTL Systems Inc. All rights
reserved except as noted in the document copyright statement.